# 15 Light Transport II: Volume Rendering

Just as `BSDF`s characterize reflection from the surfaces in a scene,
`Medium` class implementations represent scattering that occurs
*between* surfaces; examples include atmospheric scattering effects
such as haze, absorption in a stained glass window, or scattering by fat
globules in a bottle of milk. Technically, all of these phenomena are due
to surface interactions with a vast number of microscopic particles, though
it is preferable to find a less cumbersome way of modeling them than
considering them individually. With the models described in this chapter,
the particles are assumed to be so numerous that they can be represented
using statistical distributions instead of an explicit enumeration.

This chapter begins with an introduction of the equation of transfer, which
describes the equilibrium distribution of radiance in scenes with
participating media, and then presents a number of sampling methods that
are useful for Monte Carlo integration with participating media. Given
this foundation, the `VolPathIntegrator` can be introduced—it extends
the `PathIntegrator` to solve the light transport equation in the
presence of participating media.

After Section 15.4 describes how
to sample from BSSRDF distributions,
Section 15.5 then describes the implementation of a
`BSSRDF` that models the aggregate light scattering in media bounded
by refractive surfaces. Although the approach is expressed in terms of radiance
leaving from and arriving at surfaces, it is included in this chapter since
its implementation is based on an approximate solution to the equation of
transfer in participating media.