Dipole-based subsurface scattering model (dipole)
This plugin implements the classic dipole subsurface scattering model from radiative transport and medical physics [8, 9] in the form proposed by Jensen et al. . It relies on the assumption that light entering a material will undergo many (i.e. hundreds) of internal scattering events, such that diffusion theory becomes applicable. In this case 15 a simple analytic solution of the subsurface scattering profile is available that enables simulating this effect without having to account for the vast numbers of internal scattering events individually.
For each dipole instance in the scene, the plugin adds a pre-process pass to the rendering that computes the irradiance on a large set of sample positions spread uniformly over the surface in question.
The locations of these points are chosen using a technique by Bowers et al.  that creates particularly well-distributed (blue noise) samples. Later during rendering, these illumination samples are convolved with the diffusion profile using a fast hierarchical technique proposed by Jensen and Buhler .
There are two different ways of configuring the medium properties. One possibility is to load a material preset using the material parameter—seeTable 5 for details. Alternatively,when specifying parameters by hand, they can either be provided using the scattering and absorption coefficients, or by declaring the extinction coefficient and single scattering albedo (whichever is more convenient).
Mixing these parameter initialization methods is not allowed.
All scattering parameters (named sigma*) should be provided in inverse scene units. For instance,
when a world-space distance of 1 unit corresponds to a meter, the scattering coefficents must be in units of inverse meters. For convenience, the scale parameter can be used to correct this. For instance, when the scene is in meters and the coefficients are in inverse millimeters, set scale=1000.
Note that a subsurface integrator can be associated with an id and shared by several shapes using the reference mechanism introduced in Section 6. This can be useful when an object is made up of many separate sub-shapes.
Typical material setup
To create a realistic material with subsurface scattering, it is necessary to associate the underlying shape with an appropriately configured surface and subsurface scattering model. Both should be aware of the material’s index of refraction.
Because the dipole plugin is responsible for all internal scattering, the surface scattering model should only account for specular reflection due to the index of refraction change. There are two models inMitsuba that can do this: plastic and roughplastic (for smooth and rough interfaces, respectively). An example is given on the next page.
15 and after making several fairly strong simplifications: the geometry is assumed to be a planar half-space, and the internal scattering from the material boundary is only considered approximately.
• This plugin only implements the multiple scattering component of the dipole model, i.e. single scattering is omitted. Furthermore, the numerous assumptions built into the underlying theory can cause severe inaccuracies.
For this reason, this plugin is the right choice for making pictures that “look nice”, but it should be avoided when the output must hold up to real-world measurements. In this case, please use participating media (Section 8.5).
• It is quite important that the sigma* parameters have the right units. For instance: if the sigmaT parameter is accidentally set to a value that is too small by a factor of 1000, the pluginwill attempt to create one million times as many irradiance samples, which will likely cause the rendering process to crash with an “out of memory” failure.
- material : string
- Name of a material preset, see Table 5. (Default: skin1)
- sigmaA, sigmaS : spectrum
- Absorption and scattering coefficients of the medium in inverse scene units. These parameters are mutually exclusive with sigmaT and albedo (Default: configured based on material)
- sigmaT, albedo : spectrum
- Extinction coefficient in inverse scene units and a (unitless) single-scattering albedo. These parameters are mutually exclusive with sigmaA and sigmaS (Default: configured based on material)
- scale : float
- Optional scale factor that will be applied to the sigma* parameters. It is provided for convenience when accomodating data based on different units, or to simply tweak the density of the medium. (Default: 1)
- intIOR : float or string
- Interior index of refraction specified numerically or using a known material name. (Default: based on material)
- extIOR : float or string
- Exterior index of refraction specified numerically or using a known material name. (Default: based on material)
- irrSamples : integer
- Number of samples to use when estimating the irradiance at a point on the surface (Default: 16)
- ○Apple ○Chicken1 ○Chicken2
- ×Cream ○Ketchup ○Potato
- ○Skimmilk ○Skin1 ○Skin2
- ×Spectralon ×Wholemilk
- Lowfat Milk Gatorade White Grapefruit Juice
- Reduced Milk Chardonnay Shampoo
- Regular Milk White Zinfandel Strawberry Shampoo
- Espresso Merlot Head & Shoulders Shampoo
- Mint Mocha Coffee Budweiser Beer Lemon Tea Powder
- Lowfat Soy Milk Coors Light Beer Orange Juice Powder
- Regular Soy Milk Clorox Pink Lemonade Powder
- Lowfat Chocolate Milk Apple Juice Cappuccino Powder
- Regular Chocolate Milk Cranberry Juice Salt Powder
- Coke Grape Juice Sugar Powder
- ○Pepsi Ruby Grapefruit Juice Suisse Mocha