BSSRDF in appleseed


appleseed[1] is an open source, physically-based rendering engine.

For subsurface scattering events, appleseed has 5 bssrdf models.
In this article, I would introduce these models and show some results.


location: $x_o$
Exitant direction: $\vec{\omega_o}$
Incident radiance: $L_i(x_i, \vec{\omega_i })$
Exitant radiance with BSSRDF:

 L_o(x_o, \vec{\omega_o}) = \int _A \int _{2\pi} S(x_i, \vec{\omega _i}; x_o, \vec{\omega_o}) L_i(x_i, \vec{\omega _i})(\vec n · \vec{\omega_i})d\omega_idA(x_i)

Separately $S$: $S = S_0 + S_1 + S_d $
$S_0$ is reduced-intensity transmissions. $S_1$ is single scattering.
$S_d$ explains multiple scattering. It is different from each method.

In a scene file, the definition of BSSRDF is as below.

        <bssrdf name="hoge" model="????????">
                <parameter name="fresnel_weight" value="1.0" />
                <parameter name="ior" value="1.3" />
                <parameter name="mfp" value="1.0" />
                <parameter name="mfp_multiplier" value="1.0" />
                <parameter name="reflectance" value="1.0" />
                <parameter name="reflectance_multiplier" value="0.8" />
                <parameter name="weight" value="1.0" />

You can choose "???????" from "gaussian_bssrdf", "standard_dipole_bssrdf", "better_dipole_bssrdf", "directional_dipole_bssrdf" or "normalized_diffusion_bssrdf".


This method assumes only exponential reduction.

S_d(x_i, \vec{\omega _i}; x_o, \vec{\omega_o}) = \frac{1}{\pi} F_t (x_i, \vec{\omega _i}) R_d(r) F_t (x_o, \vec{\omega _o})
 R_d(r) = \frac{e^{-r^2/2v}}{2\pi v}

$F_t$ is Fresnel transmittance function.
$r = |x_i - x_o|$

Standard dipole

Jensen et al. [2] used the dipole diffusion model, but it is only correct when the material is semi-infinitely thick.
Donner and Jensen. [3] extended the dipole model[2] to multiple dipole model which can account for for diffusion translucent slabs.

S_d(x_i, \vec{\omega _i}; x_o, \vec{\omega_o}) = \frac{1}{\pi} F_t (x_i, \vec{\omega _i}) R_d(r) F_t (x_o, \vec{\omega _o})
 R_d(r) = \sum_{i = -n}^{n} \frac{\alpha^, z_{r,i}(1 + \sigma _{tr}d_{r,i}e^{-\sigma_{tr}d_{r,i}}  )}{4\pi d_{r,i}^3} - \frac{\alpha^, z_{v,i}(1 + \sigma _{tr}d_{v,i}e^{-\sigma_{tr}d_{v,i}}  )}{4\pi d_{v,i}^3}

If $n = 0$, $R(r)$ explains the dipole model(Jensen et al.[2]).

Better dipole

D'Eon[4] modified the dipole model[2] with a few changes.
Better dipole model is more accurate in small $r$ than the dipole model[2].

S_d(x_i, \vec{\omega _i}; x_o, \vec{\omega_o}) = \frac{1}{\pi} F_t (x_i, \vec{\omega _i}) R_d(r) \frac{F_t (x_o, \vec{\omega _o})}{1-2C_1(\frac{1}{\eta})}

The original article( has easy-to-understand $R(r)$ definition and a comparison better dipole and the dipole model[2] in $Table 2$.

Directional dipole

In this part, I cited the figures from original paper[5].
Frisvad et al. [5] uses a dipole construction similar to standard dipole model[2], but Directional dipole uses two ray sources which are not point lights.
Directional dipole can take the direction of the incident light ray and the direction toward the point of emergence into account.

left: dipole model[2], right: directional dipole[5]

S_d(x_i, \vec{\omega _i}; x_o) = \frac{1}{\pi} F_t (x_i, \vec{\omega _i}) R_d(x_i, \vec{\omega _i}; x_o) F_t (x_o, \vec{\omega _o})
R_d(x_i, \vec{\omega _i}; x_o) = \frac{S^{'}(x_i, \vec{\omega _{12}}; x_o) - S^{'}(x_v, \vec{\omega _v}; x_o)}{4C_\phi(1/\eta)} 


Normalized diffusion

Burley[6] show that the shape of $R(r)$ can be approximated quite well with a curve in the shape of a sum of two exponential functions.
This model is implemented in Walt Disney Animation Studio’s Hyperion renderer.

S_d(x_i, \vec{\omega _i}; x_o) = \frac{1}{\pi} F_t (x_i, \vec{\omega _i}) R_d(r) F_t (x_o, \vec{\omega _o})
R_d(r) =  \frac{e^{-r/d} + e^{-r/3d}}{8\pi dr}

Example results

The scene is one plane([-1.5, 1.5], [-0.01, 0.01], [-1.5, 1.5]) and one diffuse light plane([-0.25, 0.25], 1.5, [-0.25, 0.25]), seeing plane from (0.0, 1.5, 0.0).


Standard dipole

Better dipole

Directional dipole

Normalized diffusion

Directional dipole and Normalized diffusion can show the directionality of spread light well.


[2]Jensen, H.W., Marschner, S.R., Levoy, M. and Hanrahan, P., 2001, August. A practical model for subsurface light transport. In Proceedings of the 28th annual conference on Computer graphics and interactive techniques (pp. 511-518). ACM.
[3]Donner, C. and Jensen, H.W., 2005. Light diffusion in multi-layered translucent materials. ACM Transactions on Graphics (ToG), 24(3), pp.1032-1039.
[4]d’Eon, E., 2012. A better dipole. Eugene d’Eon, 14.
[5]Frisvad, J.R., Hachisuka, T. and Kjeldsen, T.K., 2014. Directional dipole for subsurface scattering in translucent materials. ACM Transactions on Graphics (TOG), 34(5).
[6]Burley, B., 2015. Extending Disney’s physically based BRDF with integrated subsurface scattering. SIGGRAPH 2015 Physically Based Shading Course Notes.