I've been very interested in implementing subsurface scattering in my path tracer for quite some time. The main challenge with simulating subsurface scattering is doing so in a reasonable amount of time. Monte Carlo path tracing of opaque surfaces is slow enough already. With translucent materials, light can scatter hundreds or thousands of times beneath the surface before coming out again, and in some cases (e.g., milk) it's hardly absorbed at all along the way. Luckily you can get good results using approximations (transport theory is itself an approximation (of electromagnetic scattering theory), but I'm talking about more significant optimizations).
For the past few months, on and off, I've been thinking about and working toward subsurface scattering. In particular so far I've been working on a point-based, hierarchical, dipole diffusion approximation approach to multiple scattering (i.e., light that has scattered multiple times beneath the surface, as opposed to a single time). My implementation is mainly based on the paper A Rapid Hierarchical Technique for Translucent Materials. I'll post more about my progress soon.
Below are some of the resources I've been using to understand and implement subsurface scattering. I've edited this post to add resources that I hadn't yet used at the time of initial writing:
- A Rapid Hierarchical Technique for Translucent Materials: The main paper I've used for my implementation so far.
- A Practical Model for Subsurface Light Transport: The seminal 2001 BSSRDF paper. I'm planning on implementing single scattering using the approach in this paper.
- A Quantized-Diffusion Model for Rendering Translucent Materials: A new and improved diffusion approximation for subsurface scattering that I hope to implement at some point.
- Dart Throwing on Surfaces: Efficiently generating a uniform distribution of points on the surface of geometry. I may use this approach at some point, but for now I'm just using basic rejection sampling and it's plenty fast enough for my purposes. I got some ideas from this paper nonetheless.
- Light Diffusion in Multi-Layered Translucent Materials
- Implementing a skin BSSRDF (or several...)
- Photon Path Distribution in Inhomogeneous Scattering Media: I just found this thesis paper recently. It agglomerates a lot of information and helps clarify a lot of the theory. I found the Participating Media section (page 30) particularly useful.
- Reflection from Layered Surfaces due to Subsurface Scattering
- The Henyey-Greenstein phase function
- Physically Based Rendering: Great book.
- Rapid simulation of steady-state spatially-resolved reflectance and transmittance profiles of multi-layered turbid materials
- Computing the Scattering Properties of Participating Media Using Lorenz-Mie Theory