Subsurface Scattering Effect

The material structure explained here is almost perfect, except for the cases when the medium scatters rays. That’s what usually happens with diffuse surface: the light goes inside the object to a very small depth, then randomly reflects and goes out to a random direction. That’s how we get diffuse surface in real life. Some materials do not reflect rays inside themselves, like glasses or clean liquids, while others reflect rays immediately like metals or plastics. However, there are materials that let some rays go inside to some amount and then reflect them back. These are: wax, milk, marble and much more. The effect itself is called subsurface scattering and sometimes helps to significantly improve the visual appearance of the scene.

Let’s start with an empty scene and add a prism there:

Simple prism object in Owlet

The key requirements of subsurface scattering to work is that the object must have translucent medium (as otherwise there is no way for rays to scatter inside the medium). So let’s turn the “diffuse” block off and enable the specular one instead, making sure its IOR N parameter is set to 1.5. Then switch the material medium type to manual with the same IOR:

Glass prism object in Owlet

At the moment we have a simple glass prism. Now it is time to tint the medium. Change the Absorption parameter to light beige color (RGB 254, 252, 233) and set Attenuation to “2”:

Translucent beige glass prism in Owlet

Now we have a prism of beige glass and it is time to enable the subsurface scattering effect, just check the box at the bottom of Main parameters group in materials editor panel:

Enabling subsurface scattering in Owlet material

See the difference? When we enable SSS (short for subsurface scattering) rays can’t go directly through the medium anymore. They scatter inside and run out in various directions, so we see that noisy prism that is now slightly similar to wax. Let’s have a look at the parameters:

  • Color - that’s the most complex parameter of SSS, as it is not actually a color, yet it is. It defines the probability of a ray to hit something inside the medium. For instance if you set it to black, you’ll get your beige prism back. By setting it black, you tell Owlet that there is zero chance that ray hits something inside the medium, so rays go out as if SSS is disabled. By setting this parameter to white, you tell Owlet that there is 100% probability that rays hit something inside. The higher the chances, the more hits will happen inside the object. You can set it to green and let red and blue lights go through, so only the green part of the light will scatter - this gives you pink prism with some green dots here or there. It is quite a complex parameter and in most cases you should keep it more or less gray, just changing its brightness;
  • Scale - this helps to compensate the size of the shape and adjusts the chances of rays to scatter. When Owlet traces ray inside the medium, it multiplies the length of the path travelled by the ray to that Scale parameter and then decides if it needs to hit something or not. You may want to use lower scale values for large objects and bigger ones for small objects to compensate their size;
  • Asymmetry - that’s about the direction of scattered rays. It varies from -1 to 1 and when it is zero, the scattered rays have no preferences of what side to go: back to the entrance or through the shape to the other side. By changing it to -1 you ask all the reflected rays to go back and 1 means all of them go through. In most of the cases, you want to keep it as “0”.

So once again, the key options of SSS are Absorption and Attenuation that are defined as medium parameters. Then you enable SSS and adjust Scale and Color parameters to get the effect you need. Subsurface scattering is a very complex effect and it may take time to master it.

Also note that SSS effect is quite noisy and using it will significantly increase the rendering time, so use it when you are sure you need it and ready to wait longer.