Subsurface scattering is a new material option to render materials like skin, marble or milk. For these materials light rays are not always reflected at the surface, but can also scatter under the surface and leave at another position. This leads to a softer appearance, as light is blurred out over the surface.

- Hand with Subsurface Scattering by Cire
Blender uses a method to simulate this effect for diffuse illumination, in a two step process by rendering a lightmap of the frontside and the backside of the object in advance. The implementation is based on:
Henrik Wann Jensen and Juan Buhler:
"A Rapid Hierarchical Rendering Technique for Translucent Materials"
Proceedings of SIGGRAPH 2002
The new SSS panel in the material buttons contains the subsurface scattering settings, with a number of presets to choose from. The following settings are available:

- The new SSS panel
- Scale: the scale of the object, used as a global scaling factor for the Radius R, G and B. For the presets scale 1.0 means 1 blender unit equals 1 millimeter, scale 0.001 means 1 blender unit equals 1 meter.
- Radius R, G and B: the blurring radius, or the average distance light scatters under the surface. Different color channels scatter with a different radius in reality. For example in skin red scatters further, as can be seen when holding a hand in front of a lamp (check picture from Cire in the Introduction, for a pratical example).
- IOR: index of refraction. For most materials 1.3 is a good choice.
- Error: parameter to control how precisely the algorithm samples the surrounding points. Leaving it at 0.05 should give images without artifacts. It can be set higher to speed up rendering, potentially with errors. Setting it at 1.0 is a good way to quickly get an preview of the look.
- R, G, B: the diffuse reflectance of the surface. This both modulates the color and influences the scattering behavior.
- Col, Color influence: controls how much the R, G, B option modulates the color. Note that even with this option set to 0.0, the R, G, B option still influences the scattering behavior.
- Tex, Texture blurring: controls how much of the texture is blurred along with the shading.
- Front weight: weighting factor for front scattering.
- Back weight: weighting factor for back scattering.

- Tomatoes rendered with and without Subsurface Scattering by Enrico Cerica
A number of material pre-sets are already available. For example, you can find various settings for skins (Skin 1, Skin 2, Chicken), a few liquids (Skim milk, Whole milk), a few vegatables (Potato, Apple), one mineral (Marble) and even some creams (Ketchup, Cream).
You can also easily elaborate your own personal SSS settings, starting with one of the presets and then shifting to Custom.

- Material tests by Enrico Cerica
- SSS materials as seen in reflections or refractions may not look correct if the object with the SSS material is placed outside the camera view.
- Only samples from the front and the back of objects are taken (as seen from the camera), not inbetween. This means some back scattering may be missing if objects overlap, but also helps to keep memory usage down, and more importantly, avoids unwanted influence from internal geometry.
- Irregular shadow buffers do not cast shadows correctly on the back of SSS materials.
- Normals must point in the correct direction, they will not be automatically corrected to point towards the camera, because SSS must be able to identify which faces point backwards to compute backscattering.
- Panorama and wide lens angle rendering are reported to give poor results.

- Basic example of SSS applied to a ceramic teapot
Not much code had to be changed to integrate SSS into the render pipeline.
- For each material with SSS, a preprocessing pass is done similar to environment mapping.
- This pass is fully threaded, and works similar to rendering a regular layer.
- For each tile, two zbuffers are created, one with the frontmost faces and one with the backmost faces.
- The points on these faces are then shaded, but with only diffuse shading, including AO and radiosity.
- These points are all collected into a list, with their color, 3d coordinate and area.
- Using the list of points, an octree is built for quick lookup during rendering.
- When doing regular rendering, instead of using the diffuse shading, a color computed by taking a weighted average of points in the octree is used.