#if SSS_USE_TIR
float3 Albedo = 1 - exp(SSS.Color * (-11.43 + SSS.Color * (15.38 - 13.91 * SSS.Color)));
#else
// Van de-Hulst inverse mapping
// https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf (Slide 44)
// http://www.eugenedeon.com/project/a-hitchhikers-guide-to-multiple-scattering/ (Section 7.5.3 of v0.1.3)
float3 Albedo = 1 - Pow2(4.09712 + 4.20863 * SSS.Color - sqrt(9.59217 + SSS.Color * (41.6808 + 17.7126 * SSS.Color)));
SSS.Radius *= 2.0; // roughly match parameterization above
#endif
// Subsurface guiding is implemented following the Dwivedi random walk technique described here:
// https://cgg.mff.cuni.cz/~jaroslav/papers/2014-zerovar/
// http://www.eugenedeon.com/project/zerovar2020/
// A thin-slab approximation is used to improve the guiding in thin regions as well as described in the video presentation (slides 37-39).
#define SSS_USE_DWIVEDI 1
#define SSS_USE_DWIVEDI_USE_THIN_SLABS 1 // Probe the geometry to have an estimate of thickness - and use this to guide toward front or backside, depending on which is closer
// Revisiting Physically Based Shading at Imageworks.
// https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf
float G = SSS.G;
Albedo = Albedo / (1 - G * (1 - Albedo));
The question: Is the unconditional G correction intentionally applied to the TIR path as well, or is this a bug? Applying the Imageworks anisotropy correction on top of the Disney/Hyperion fit seems incorrect since the two models have different derivations and assumptions.