SubsurfaceScattering
From Odwiki
Contents |
SubSurface Scattering in Translucent Materials
Subsurface Scattering is the phenomenon visible is the real world where light will penetrate the surface of an object and scatter around within the medium and exit the medium and different point than where it entered. This is visible in many objects in the world - milk, skin, thin surfaces (like paper and leaves) where light striking one side will transmit through the medium to the other side.
Its possible to simulate such effects in rendering.
There are two popular concepts in simulating subsurface scattering which attempt to simulate particular properties of translucent materials:
- Multiple scattering : light emits from adjacent samples on the nearby surface due to scattering in all directions as the light passes inside the object.
- Single scattering : light transmits from the opposite (lit) face of thin objects and scatters (by the phase of the material) as it passes through.
Most reasonable simulations assume that the material is homogenous - comprised of the same material throughout.
Subsurface Scattering in Mantra
Using Point Clouds
It's possible to use VexPointClouds to help you filter in illumination from nearby samples. There are a few publically available point clouds subsurface scattering shaders.
- Houdini 9.0+ contains the following SSS shaders:
- SSS Multi - simulates multiple scattering, utilizing VEXPointClouds
- SSS Single - simulates single scattering, utilizing VEXPointClouds
- Side Effects distributes a separate set of example shaders on the Exchange called pcpack - a pack of PointCloud-based shaders which contains a Subsurface Scattering shader, amongst other things.
- User:MarioMarengo has also made his own Subsurface Scattering shader available - which will not doubt evolve differently to Side Effects' shader.
Single Scattering tricks
- On the simplest level, it's elementary to write a shader that emulates very thin surfaces. The idea here is to simply reverse the point normal and calculate the incident light on the back faces. This light can be scaled down a bit and added to the front face component. This can be done very simply in VOPs or VEX. If the material gets thicker then you have to move to more complicated methods to emulate the scattering as the light attempts to pass through the material.
Examples to follow..
Multiple Scattering tricks
- By using ShaderUnwrapping in Mantra, you can extract the diffuse lighting of a surface, blur it to simulate the contribution of light from nearby samples, and then reapply the filtered map to the object. This has the one condition that your UVs on your objects attempt to have constant world-space area - which may be tricky to achieve.
- User:SimonBarrick of http://houdinitools.com/ has fast, interactive SOP-based version of called SSSfake
- Houdini 9.0+ also contains the following SSS shader:
- SSS Simple - a simple approximation of scattering not using point clouds at all.
Examples to follow..
Subsurface Scattering in RenderMan
You can find information on Subsurface Scattering in Renderman in the Application Note #39 that is defistributed with PrMan 11+.
Futher Reading
- Henrik Wann Jensen



