Fast subsurface scattering
Fig.1 - Fast Subsurface scattering of Stanford Bunny
Based on the implementation of three.js. It provides a cheap, fast, and convincing approach to do ray-tracing in translucent surfaces. It refers the sharing in GDC 2011 , and the approach is used by Frostbite 2 and Unity engines . Traditionally, when a ray intersects with surfaces, it needs to calculate the bouncing result after intersections. Materials can be divided into three types roughly. Opaque, lights can't go through its geometry and the ray will be bounced back. Transparency, the ray passes and allow it through the surface totally, it probably would loose a little energy after leaving. Translucency, the ray after entering the surface will be bounced internally like below Fig. 2.
Fig.2 - BSSRDF 
In the case of translucency, we have several subsurface scattering approaches to solve our problem. When a light is traveling inside the shape, that needs to consider the diffuse value influence according the varying thickness of objects. As the Fig. 3 below, when a light leaving a surface, it generates diffusion and has attenuation based on the thickness of the shapes.
Fig.3 - Translucent lighting 
Thus, we need to have a way to determine the thickness inside surfaces. The most direct way is calculating ambient occlusion to get its local thickness into a thickness map. The thickness map as below Fig.4 can be easy to generate from DCC tools.
Fig.4 - Local thickness map of Stanford Bunny
Then, we can start to implement our approximate subsurface scattering approach.
- Ambient light value
- Visible from all angles even at the back side of surfaces
- Power value of direct translucency
- View independent
- Subsurface distortion
- Shift the surface normal
- View dependent
- Pre-computed local thickness map
- Attenuates the back diffuse color with the local thickness map
- Can be utilized for both of direct and indirect lights
Because the local thickness map is precomputed, it doesn't work for animated/morph objects and concave objects. The alternative way is via real-time ambient occlusion map and inverting its normal or doing real-time thickness map.
 GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look, https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/
 Fast Subsurface Scattering in Unity Part 1, https://www.alanzucconi.com/2017/08/30/fast-subsurface-scattering-1/
 Fast Subsurface Scattering in Unity Part 2, https://www.alanzucconi.com/2017/08/30/fast-subsurface-scattering-2/