Some games claim to use subsurface scattering but my current understanding of sss is only achieved with ray tracing. How would you sub surface scatter without ray tracing? Do some claim to use sss but really use some approximation trick that doesn't use rays. I can't even imagine doing the below real time.
-
1$\begingroup$ One approach can be to render the back faces of a mesh to a depth buffer to compute an 'optical depth' which won't work so well for highly concave meshes but looks decent enough. http.developer.nvidia.com/GPUGems/gpugems_ch16.html $\endgroup$– PaulHKApr 21, 2017 at 5:54
1 Answer
There are lots of ways to fake SSS with greater or lesser fidelity. A few recent-ish methods:
- Screen-space blurring of object lighting (described in detail here)
- Using “interior” ambient-occlusion maps generated from a normal-flipped version of the geometry to approximate local thickness, providing an easy way to fake light transmission (more information here, with an addendum here)
There’s also the assortment of techniques in the GPU Gems article PaulHK linked to. One thing I’d add is about the light-falloff-texture approach mentioned at the beginning of it, which Valve used for a couple of interesting effects in Source games in addition to fake SSS—see their $lightwarptexture
documentation for some information about that.
-
3$\begingroup$ Another good one is Pre-Integrated Skin Shading from SIGGRAPH a few years ago. $\endgroup$ Apr 21, 2017 at 20:27