Preamble: This series of blog posts is motivated by the fact that I apparently lost the pdf of my Master dissertation on real time skin shading. I still have most of the concepts in mind so I will braindump here some parts of my short journey. Don’t expect ultra high quality stuff, it was the work of a little guy approaching for the first time serious computer graphics.
It was over 2 years ago, when I decided for my Master dissertation to venture myself in Skin Shading. At the time, having a sphere (slowly) rendered with a Cook-Torrance BRDF was my main achievement and little I knew about how challenging graphics programming can be.
All excited I started my literature review and one paper that always came up in references was A Practical Model for Subsurface Light Transport [Jensen et al. 2001] and its Dipole approximation. Little me was very excited, I printed the paper (yes, I like to print stuff I need to study) and …. I desperately stared at it for an hour. Whilst it being a great paper, it is not an easy read, at all.
Recently on Computer Graphics Stack Exchange Nathan Reed posted a question about it and I had a chance to write down a short answer keeping in mind little me, that was eye-balling the paper back then. To kick-start this short series of posts I am going to partially refactor part of my answer here. It is going to be a very high level description, for details go back and read the paper, it is worth it 🙂
What it is
It is well known that to model skin a simple BRDF is not enough, but we need to approximate a BSSRDF because of the subsurface scattering.
Often the subsurface scattering (SSS) is approximated with a diffusion phenomenon; this is a fairly good thing to do since in highly scattering material such as the skin the distribution of light loses angular dependency and tends to isotropy.
The dipole approximation used by [Jensen et al. 2001] is nothing else but a formulation of the diffusion problem used to model the multiple-scattering part of the BSSRDF.¹ This multiple-scattering term is defined in the paper as a function of incoming and outgoing points and directions:
Where the are Fresnel terms and is what is known as a diffusion profile. This profile is what actually describes the phenomenon as a function of the distance between the point where the light enters the media and the point where the light leaves it.
Here in R is where the dipole comes in play.
The dipole approximate the reflectance as coming from two light sources, one with positive contribution and one with negative contribution.
The positive one is located at a distance beneath the surface, while the negative one is at a distance that depends on , Fresnel reflectivity of the considered slab and on absorption and scattering coefficients of the media. Note that is not an arbitrary distance, but is one “mean free path”. A mean free path is given by one over the sum of absorption and reduced scattering coefficients and it represent the distance travelled by a photon before it collides inside the medium.
The contribution of these lights to the diffusion profile is dependent on their distance from the surface, , scattering and absorption coefficients of the material.
Now that we have a definition of , the last step is to integrate the BSSRDF over a certain area. In [Jensen et al. 2001] they render using a Monte Carlo ray tracer randomly sampling around a point with a density function that is , where is the distance from the point we are evaluating and depends on absorption and reduced scattering coefficients.
I don’t want to add too many formulas to the core of the post, but at the bottom I’ve put an expanded formula for with a short description of every parameter.
Why the dipole formulation?
That is all cool and well, but the little me of 2 years ago was very confused, what the heck? A dipole? Why?
Well, it turns out that the dipole approximation is common in solutions for diffusion problems. Let’s just take a small step back.
The diffusion equation is a Partial Differential Equation and as such there is an infinite number of solutions! For this reason, when we solve diffusion of light problems we need to take into account a boundary condition to find the solution we want (among the infinite possible ones).
Usually, the boundary condition that is used in transport theory is the so called “extrapolated boundary condition” and the dipole approximation is used to handle it.
In our case, the condition is that the net flux will be zero at the “extrapolated” distance of from the actual surface, where:
being the Fresnel diffuse reflectance (of the considered slab) and the sum of absorption and reduced scattering coefficients of the material.
The dipole approximation satisfies this boundary condition by representing the scattering of the incoming light with the two light sources described in the previous section.
Its assumptions and subsequent works
[Jensen et al. 2001] was a seminal paper for the field, but it relies on few assumptions that are addressed in subsequent papers. I will not undergo the massive task of listing papers that improved/relied upon the dipole approximation, but here a couple of assumptions discussed after it:
- The dipole is a good model as long as the object represented is considered (semi-infinitely) thick. This is not true for the skin which is a multi-layered material with thin slabs that need to be taken into account. This issue is tackled by the famous multipole model [Donner and Jensen 2005]. Their model assumes a multitude of dipoles instead of just one (hence the name multipole) and simulates reflectance and transmittance between thin slabs. The paper also proposes interesting acceleration techniques for the rendering.
- The dipole method assumes that the incident light is directionally uniform; to account for scenarios where it is not, [Frisvad et al. 2015] recently introduced a directional dipole model.
- [D’Eon and Irving 2011] proposed various improvements on the dipole and multipole models, introducing a modified formulation of the diffusion equation, a more accurate exitance calculation, a more accurate term and different boundary conditions.
That is all for now, I was multiple times tempted to write a bit more, but I really wanted to keep this post as simple as possible. This is not sufficient to have a deep grasp of this model, but hopefully it should give an overview and a good set of info to approach the actual paper 🙂
– Francesco (@FCifaCiar)
The actual R(r) formula
¹Note that ignoring the single-scattering term has been proved an ok thing to do for skin. For some translucent materials (e.g. smoke) it is fundamental.