Subsurface Scattering Volumes

I didn’t get to see many sessions at GDC this year.  One I really wanted to see but didn’t make it to was the talk on “Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look” given by Colin Barré-Brisebois.  However, I read over the slides online as soon as they were posted.

The valuable nugget from the talk is the idea that you can approximate object density by inverting the mesh normals and have your DCC tool generate a map of ambient occlusion.  Which is a pretty good approximation of internal surfaces proximity to each other.  Which gives you a map of thickness you can use in SSS calculations.

My graphics side project of late has been experimenting with Morgan McGuire’s Ambient Occlusion Volume paper.  Which generates AO by creating prisms around each polygon to accumulate AO where they overlap against an opposing surface.

So of course while reading the Approximating Translucency paper I thought I could take Ambient Occlusion Volumes, flip the normals the prisms are generated on so that I could generate AO for the purpose of calculating thickness for subsurface scattering.  *voilà *Subsurface Scattering Volumes.

So the awesome bit here is because the thickness is calculated based on AO generated from the geometry directly.  You could use this method if you wanted an approximation of subsurface scattering to work on something that was destroyable or morphable.  Now, I doubt the applicability of this method in any immediate sense, but it’s still a neat effect.

Enough words, bring on the moving pictures!