Page MenuHome

Embree shades hair differently from CUDA and OptiX
Confirmed, HighPublicBUG

Description

System Information:
Operating system: Linux-5.4.0-7634-generic-x86_64-with-debian-bullseye
Graphics card: GTX 1050Ti

Blender Version:
Broken: 2.90.0 rBfdfe85c616d2 (2020-06-22 15:41)
Worked: Prior to Embree being enabled by default. rB99436acde8fb

Short description of error:
I've found that in some cases hair will render differently between CPU and GPU rendering. The most common difference is shadows are slightly different.
At first glance this doesn't look like much of an issue, however, if you're rendering an animation on a render farm where some frames are work on by GPUs and others on CPUs (or even doing it locally because OptiX doesn't support CPU+GPU), the difference in shadows appear as a kind of flicker in the hair.

Here's a video show casing this issue:

This is caused by Embree as switching back to BVH2 on the CPU makes the issue disappear.

The issue seems most apparent when you have a lot of thin hairs close to each other. Also when you're using a fully opaque surface material.
At first I thought this was a noise pattern difference between CPU and GPU. However, increasing sample counts and using denoisers doesn't solve the issue.

Exact steps for others to reproduce the error:
Create some scenes with some hair. Here's two I made:


Event Timeline

Alaska (Alaska) updated the task description. (Show Details)
Alaska (Alaska) updated the task description. (Show Details)EditedTue, Jun 23, 10:38 AM

I don't know how feasible a fix for this is, but one "simple" solution jumps to mind:
Expose the "Use Embree" option to the user in a button not hidden behind a debug panel until the Embree for GPU thing is sorted.

Brecht Van Lommel (brecht) changed the task status from Needs Triage to Confirmed.Tue, Jun 23, 12:48 PM
Brecht Van Lommel (brecht) triaged this task as High priority.
Brecht Van Lommel (brecht) changed the subtype of this task from "Report" to "Bug".

Embree for GPU would not solve this most likely, I would suspect the ribbon intersection code more than the BVH traversal.

@Alaska (Alaska) if you don't use Sky texture and use only sky light, do you have the same render output ?

@Alaska (Alaska) if you don't use Sky texture and use only sky light, do you have the same render output ?

Yes, the issue persists if I don't use the sky texture.