Game Development Reference
In-Depth Information
In this section, we describe a trick that exploits the view frustum clipping
planes that already exist for every rendered scene. 1 Normally, every geometric
primitive is clipped to the six sides of the view frustum by the graphics hardware.
Adding a seventh clipping plane that represents the reflective surface almost al-
ways results in a redundancy with the near plane, since we are now clipping
against a plane that slices through the view frustum further away from the cam-
era. Instead, we look for a way to modify the projection matrix so that the con-
ventional near plane is repositioned to coincide with the reflective surface, which
is generally oblique to the ordinary view frustum. Since we are still clipping only
against six planes, such a modification gives us our desired result at absolutely no
performance cost.
C be the plane shown in Figure 5.21, having coordi-
nates specified in camera space, to which we would like to clip our geometry.
The camera should lie on the negative side of this clipping plane, so we can as-
sume that
Let
=
CCCC
,
,
,
x
y
z
w
. The plane C will replace the ordinary near plane of the view
frustum. As shown in Table 5.2, the camera-space near plane is given by the sum
of the last two rows of the projection matrix M , so we must somehow satisfy
C
<
0
w
=+
MM .
(5.61)
C
4
3
We cannot modify the fourth row of the projection matrix because perspective
projections use it to move the negation of the z coordinate into the w coordinate,
Far plane
C
Near plane
O
Figure 5.21. The near plane of the view frustum is replaced with the arbitrary plane C .
1 For a more detailed analysis, see Eric Lengyel, “Oblique Depth Projection and View
Frustum Clipping”, Journal of Game Development , Vol. 1, No. 2 (Mar 2005), pp. 5-16.

Custom Search