Graphics Reference
In-Depth Information
3.3.8 Volumetric Shadows
Although shadows are often thought of as 2D projections onto objects, they are
really volumes consisting of regions in space where a light source appears par-
tially or totally occluded. A shadow on a surface is the intersection of the shadow
volume with the surface. Volumetric shadows become visible in the presence
of participating media, although the complement of volumetric shadows—beams
of light—are typically more noticeable. Volumetric shadows within a participat-
ing medium appear completely dark in the absence of indirect in-scattering, just
a surface shadows appear entirely black without indirect illumination. This is a
limitation of rendering systems that ignore in-scattering, as many do because of
its high computational cost.
Regarding shadows as volumetric objects puts them in the domain of volume
rendering. A shadow map in its most basic form is a volume function that indi-
cates whether a point is in shadow. The notion was originally developed by Lance
Williams in a 1978 paper that showed how a shadow map can be represented in a
simplified depth buffer [Williams 78]. It works by placing a hypothetical shadow
camera at the light source, and rendering the scene into a frame buffer with depth
information. However, pixel colors are ignored—only the depth of the object
nearest the light source is stored. The result, a rectangular array of depth values,
is the shadow map. Later, a point can be tested for shadow by transforming it to
the shadow camera coordinate system and comparing the depth against the corre-
sponding pixel in the shadow map: if the point is further from the shadow camera
than the shadow map pixel then the point is in shadow; otherwise it is lit.
The shadow map technique is very fast and has been widely used, either in its
original form or in one of the many generalizations. A problem though, is that the
presence of detail such as fur or hair can require a very high resolution shadow
map. The notion of a deep shadow map was presented by Lokovic and Veach
in 2000, originally developed to render fur of the character “Sully” in the movie
Monsters, Inc. [Docter 01]. Like an ordinary shadowmap, a deep shadowmap is a
rectangular array of “pixels,” each representing the depth of shadowing elements
in a particular direction from the shadow camera. The pixels in a deep shadow
map contain functions of depth that compute the apparent visibility of the light at a
particular depth. These visibility functions generalize the simple visible/invisible
function described in Chapter 1 by including effects such as fractional visibility
of the light source, transmittance, and even scattering effects.
The visibility function for each pixel is created by sampling the transmittance
function along the rays from the shadow camera through the shadow map pixel;
points along the ray correspond to depth values. Each point has a transmittance
function, which gives the fraction of light that reaches that depth. The total trans-
Search WWH ::




Custom Search