EEVEE Shadow Terminator Bias - Feedback

Hi everyone!

We are looking into adding a much needed Shadow Terminator Bias to EEVEE for 4.5.

This is necessary because of the increased shadow precision and the removal of the light shadow bias option that happened when EEVEE-Next was released. This is also one of the most reported issue since the release of 4.2.

Without Bias With Bias
no-offset with-offset

You can try it using this build.

What we are looking for feedback is:

  • Is the single slider enough to cover most use cases?
  • Is there cases where there are too many light leaking on faces that do not have terminator issues?
  • Is another slider to restrict the amount of faces affected necessary (like cycles)?
  • Is there cases where a shading offset would still be needed (like cycles)?

For more information about the current implementation and design, please refer to the PR #136935 - EEVEE: Shadow Terminator Normal Bias - blender - Blender Projects or the design task #135935 - EEVEE: Solve the shadow terminator - blender - Blender Projects.

13 Likes

I would try keep that control similar to Cycles, or to a single slider for ease of use - though it’s always nice to have a bit more control sometimes, but maybe as a sub-set of sliders or controls in the GUI.

Glad to have this back from Legacy.

1 Like

On first observation - it does improve the terminator line, but with some geometry it’s shifting such that the end result of location might not be desired.

Current release: obviously, poor quality on the cone.

Bias Patch: better (though still not 100% clean) terminator, but is moving the entire falloff area.

2 Likes

What is your expected result for that cone geometry?

This cone is literally the worse case scenario (well, almost). So you need to make the bias extremely large (0.5m in my tests for a default cone). And yes, it will create other artifacts.

Even Cycles’s automatic bias fails for this case.

Smooth line, with no gap at the top.

Then it looks like what you want is not what this feature is doing.

One thing you can do to make the shadowing sharp enough on a cone like this while keeping smooth shading on is to subdivide as much as needed (Cycles example).


I highlighted where the shadow terminator should be.

If you want the shadowing of the left cone but the shading of the right cone. Then you simply want unbiased raytraced shadows like below (Cycles example).

This, was never possible in EEVEE and will not be possible until we implement hardware raytracing. The only feature that was close to this was the screen space contact shadows which were far from being reliable either.

So, unless I am totally mistaken, this sounds like a feature request.

2 Likes

Fair enough to the above; and certainly, this patch looks better than Eevee 4.1.

So yes, certainly improved.

(As to Cycles - well, I never use it - so, i don’t compare Eevee to Cycles, and whatever Cycles does. That’s not meant as an attack or … anything like that at all, just for some insight on how my thinking works approaching Eevee renders.)

1 Like

More testing on bias - and, I believe more in the area that the feature is meant to address :wink:

Hair strands are curves, not a mesh.

Without bias:

With bias:

Obviously the improvement here is striking. While it is shifting the terminator over, and technically changing the overall shading result - in this case, that’s perfectly acceptable to me as I can still adjust the main blue/black position within the shader ramp itself (if even desired) and get a nice result.

ETA: The very slight noise you see in the second image is due to forum image compression, or something - the true image is very clean.

2 Likes

Looks good to me!
Rasterised shadows need a ‘bias’ control, and screen space contact shadows are still ‘filling the gaps’ in modern games.
So I guess this as good as it gets, before we get real-time ray-traced shadows.

1 Like