Page MenuHome

Cycles: improve SSS Fresnel and retro-reflection in Principled BSDF
ClosedPublic

Authored by Brecht Van Lommel (brecht) on Oct 8 2021, 9:11 PM.

Details

Summary

For details see the "Extending the Disney BRDF to a BSDF with Integrated
Subsurface Scattering" paper.

We split the diffuse BSDF into a lambertian and retro-reflection component.
The retro-reflection component is always handled as a BSDF, while the
lambertian component can be replaced by a BSSRDF.

For the BSSRDF case, we compute Fresnel separately at the entry and exit
points, which may have different normals. As the scattering radius decreases
this converges to the BSDF case.

A downside is that this increases noise for subsurface scattering in the
Principled BSDF, due to some samples going to the retro-reflection component.
However the previous logic (also in 2.93) was simple wrong, using a
non-sensical view direction vector at the exit point.

Diff Detail

Repository
rB Blender

Event Timeline

Brecht Van Lommel (brecht) requested review of this revision.Oct 8 2021, 9:11 PM
Brecht Van Lommel (brecht) created this revision.

We talked with Brecht about this on Friday. While there are downsides, this does seem like the proper way to go.
Can not see issues in the code, benchmarks and memory usage seems fine. Some tests are failing, but I think it's expected due to changes in noise (and also the Burley, as I couldn't check this individual patch).

This revision is now accepted and ready to land.Oct 11 2021, 10:52 AM