i
i
i
i
i
i
i
i
372 9. Global Illumination
erated that looks convincing. However, as with Haines’ method [487],
the umbra regions are overstated, and rendering artifacts occur wher-
ever two separate shadow edges cross. Arvo et al. [39] and de Boer [234]
each take a different approach, finding silhouette edges via edge detection
and then using image processing techniques to create plausible penum-
brae. By using the depth map to find the distance between occluder
and receiver, they grow variable-width silhouette edges via repeated fil-
tering operations. Arvo performs this operation in screen space, de Boer
in shadow map space. By using disk sampling to decide whether an edge
should cast a penumbra, de Boer is able to avoid artifacts due to crossing
edges.
Methods like PCF work by sampling the nearby receiver locations. Ide-
ally we want to determine how much of the area light source is visible from
a single receiver location. In 2006 a number of researchers explored back-
projection using the GPU. The idea is to treat the receiver as a viewer and
the area light source as a screen, and project the occluders back onto it.
A basic element of these algorithms is the micropatch. Each shadow map
texel has a given distance and size; this data can literally be treated as
a tiny polygon for purposes of backprojection. Both Schwarz and Stam-
minger [1142] and Guennebaud et al. [465] summarize previous work and
offer their own improvements. Bavoil et al. [76] take a different approach,
using depth peeling to create a multilayer shadow map.
The challenge is creating a backprojection algorithm that both works
efficiently to determine the amount of light covered by micropatches and
maintains reasonable quality. One concept that has proven useful is a
hierarchical min/max shadow map. While shadow map depths normally
cannot be averaged, the minimum and maximum values at each mipmap
level can be useful. That is, two mipmaps are formed, one saving the largest
z-depth found, and one the smallest. Given a texel location, depth, and
area to be sampled, the mipmaps can be used to rapidly determine fully
lit and fully shadowed conditions. For example, if the texel’s z-depth is
greater than the maximum z-depth stored for an area of the mipmap, then
the texel must be in shadow—no further samples are needed. This type
of shadow map makes the task of determining light visibility much more
efficient. In addition, it can be used in place of PCF sampling to create
smooth, noiseless penumbra shadows [262].
9.1.5 Shadow Optimizations
It has already been noted that shadows add to the level of realism of a
rendered image, and that shadows can be used as visual cues to determine
spatial relationships. However, shadows may also incur a great cost, both