234 IV Shadows
example, the red parts in Figure 1.1). The main idea is to use camera-view visi-
bility information to create a mask of potential shadow receivers in the light view,
which restricts the areas where shadow casters have to be rendered. This algo-
rithm makes shadow-map rendering eﬃcient by providing the important property
of output sensitivity (i.e., the complexity depends only on what is visible from
the camera and not the size of the scene).
The method is easy to integrate into an existing rendering engine that already
performs occlusion culling for rasterization. It is orthogonal to the particular
occlusion-culling algorithm being used. We used the CHC++ algorithm [Mat-
tausch et al. 08] in our implementation, but in principle any state-of-the-art
occlusion-culling algorithm can beneﬁt from our method. Likewise, our method
does not pose any restriction on the shadow-mapping algorithm being used. It
was tested successfully with diﬀerent algorithms like uniform shadows, LiSPSM,
or cascaded shadow maps.
Our method is particularly useful for shadow mapping in large-scale outdoor
scenes. In terms of overall render time (i.e., the whole pipeline until the ﬁnal
shaded image is rendered), the algorithm achieves a speedup of up to ten in real-
world city scenes compared to the na¨ıve use of occlusion culling. It also brings a
signiﬁcant speedup of up to two in real game scenes (e.g., a Left 4 Dead level as
shown in Figure 1.1).
1.2 Algorithm Overview
The algorithm consists of the following four main steps, as also shown in Fig-
ure 1.2. Steps 1 and 4 constitute the standard approach for deferred shading
(including shadow mapping); the main contributions of our algorithm are Steps 2
Step 1: Determine shadow receivers. First we use occlusion culling to render the
scene from the camera. This gives us the visible geometry, which corre-
sponds to the potential shadow receiver geometry. Such an initial depth
pass is a common practice in rendering engines. Our implementation uses
a deferred shading approach, where other attributes like the geometry nor-
mals are stored in separate render targets for subsequent shading together
with the depth buﬀer. We use a bounding volume hierarchy over the geom-
etry as input to our occlusion-culling algorithm, and the potential shadow
receivers correspond to the leaves of this hierarchy. Note that this step
provides a conservative estimate of the visible geometry.
Step 2: Create a mask of shadow receivers. Next we render the potential re-
ceivers from the light view to generate a so-called receiver mask. During
shadow-map rendering, shadow map updates are restricted to this mask.
We can further tighten the receiver mask and restrict shadow-map render-
ing to only those shadow map texels that correspond to visible receiver