Website powered by

Separable Subsurface Scattering in Unity 6 URP

This is post features my implementation of Jorge Jimenez's Separable Subsurface Scattering in Unity 6's URP. It demonstrates screen-space subsurface scattering in real-time across various materials like skin, marble, jade and wax.

This project originally began as a seminar thesis on real-time subsurface scattering techniques, which later then evolved into a full custom implementation using the Scriptable Render Pipeline and HLSL shaders.

In a nutshell, the custom pipeline separates the ambient, diffuse and specular lighting components of our custom PBR material into different render textures, and convolves the diffuse render texture with a separable two-Gaussian kernel before compositing the lighting back together. The implementation also includes thickness-based light transmission to simulate translucent backscattering effects in real time.

If you are interested in learning how this was implemented, you can read the full technical devlog here: https://bentobaux.github.io/posts/separable-subsurface-scattering-in-unity-6

Demo Reel