EEVEE Subsurface Scattering implementation details

Hi, I’m trying to learn how SSS is implemented in Eevee but struggle to find anything beside top level info here https://docs.blender.org/manual/en/latest/render/shader_nodes/shader/principled.html?highlight=subsurface and here https://docs.blender.org/manual/en/latest/render/shader_nodes/shader/sss.html?highlight=subsurface

Is it any similar to what Unity is doing in their talk “Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion” Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion

1 Like

The main reference for our implementation is http://www.iryoku.com/separable-sss/downloads/Separable-Subsurface-Scattering.pdf. I did not find the time to improve it using the new results from Unity.

Some of the code is in gpu_material.c (need some cleanup to move it out) and the rest is in eevee_subsurface.c and effect_subsurface_frag.glsl

4 Likes

Thanks, that helps a ton.

Impressive work on Eevee.

@fclem Is this a complete implementation of SSSS by Jimenez et al. ?

Also, the parameters in that paper are different from the ones shown in Blender’s interface. Thus what mapping / approximation was used from the parameter d (in Blender) to the one is SSSS (sigma)?

Thanks