Almost every material in the real world is slightly translucent, this means that light enters the material and is scattered around and then exits the surface. In computer graphics, this is mostly done with ray tracing. This, however, is a very expensive computation to use in real-time so other methods have to be used. I have updated the Unity’s standard shader based on Dice’s implementation which presents a fast and scalable approximation of translucency for a convincing subsurface scattering look.
To simulate the basic light transport inside an object we begin by using distance-attenuated regular diffuse lighting, combined with the distance-attenuated dot product of the view vector and an inverted light vector. However, this does not take the thickness into account. To properly compute the light transport inside the shape we could use a local thickness map, since they allow us to compute the distance travelled by the light from the light source through the shape and to the pixel. This map uses dark values where the object is opaque and bright values for translucent.
The workflow of creating a local thickness map relies on a normal inverted computation of Ambient Occlusion (AO). Since AO determines how much light arrives at a surface point, we can use this information for the inside of the shape. Simply inverting the AO map gives different results than the workflow explained below.
Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look
Creating Thickness maps in 3ds max