What does the radius vector do on an SSS shader?

What exactly does the radius vector value on a subsurface scattering (SSS) shader do? In his SSS tutorial (making realistic bread), Andrew Price says that the XYZ values translate to the RGB values of the scattered light. But a lot has changed with SSS since that tutorial was made and that doesn't seem to be true anymore.

It does seem to have something to do with the scattering color, but it is not a simple XYZ to RGB thing. Here are a couple renders I did:

(the sphere is 75% SSS and 25% white diffuse)

So [1 1 1] seems to be just white scattering, while a [0 1 1] vector gives a turquoiseish color. Setting it to [1 0 1] gives a pinkish color and [1 1 0] produces a yellow scattering.

Intuitively, I would think that radius would mean the distance that the rays are scattered from where they hit the surface. But that would not change the color of the scattered rays and could be accomplished easily enough with a scalar value as opposed to a vector.

I am looking for a technical, mathematical explanation of exactly what the radius value does. I think I have a pretty good grasp on how SSS works, but it wouldn't hurt to explain that as well.

1 Answer

From the Blender Internal Wiki:

RGB Radius: This is not in fact the radius of the subsurface scattering, but the average path length between scattering events. As the light travels through the object it bounces around then emerges from the surface at some other point. This value corresponds to the average length the light travels between each bounce. The longer the path length is, the further the light is allowed to scatter. This is the main source of a material's perceived "scatter color." A material like skin will have a higher red radius than green and blue. Subsurface scattering is the diffusion of light beneath the surface. You control how far the light spreads to achieve a specific result.

Basically you change the radius value for each of the three primary colors, which results in the efects you described in your question. In both render engines the Radius value does fundamentally the same thing.

The Cycles wiki states:

Radius input: Scattering radius for each RGB color channel, the maximum distance that light can scatter.

This is fundamentally the same as the Blender Internal engine.

View the entire entry on the Blender Internal SS Shader.

View the entire entry on the Cycles SS shader.

• I think the wiki entry you linked is for the BI SSS, not cycles. Though the settings are probably very similar, BI is fundamentally different from cycles so I would prefer a cycles-specific answer. – PGmath Jan 10 '15 at 16:28
• I updated the answer. – VRM Jan 10 '15 at 16:35
• Thanks, the thing that had me confused was that it is a vector as opposed to a color. Do you happen to know what units it uses? – PGmath Jan 10 '15 at 16:55
• If you are using hex 1=FF and 0=00 I would guess, although I am not sure. – VRM Jan 10 '15 at 16:57
• I mean if I set the red radius to 1 how far will the red rays scatter; 1 BU, 1 foot, 1 inch, or is it a fraction of the bounding box size, etc.? – PGmath Jan 10 '15 at 17:02