
Volume 2: Rendering
Third Printing
 There are no known errors in the third printing.
Second Printing
 Page 77. In Listing 6.5, the last row of the matrix should be
0.0F, 0.0F, 0.0F, 1.0F .
First Printing
 Page 182. In Equation (8.66), both minus signs should be plus signs.
 Page 184. Related to previous item. In Equation (8.73), both minus signs should be plus signs.
 Page 286. There is a bug in the last part of Listing 9.20. (The code on this website has been corrected.) The final loop should be the following:
for (int32 i = 0; i < vertexCount; i++)
{
bool cull = false; int32 j = i & 1;
const Vector3D *v2 = &vertex[i];
Vector3D planeNormal = Normalize(Cross(*v2, *v1));
for (int32 k = 0; k < 4; k++)
{
const Vector3D& frustumNormal = frustumPlane[k].GetNormal();
float d = Dot(frustumNormal, *v2);
vertexDistance[j ^ 1][k] = d;
// Cull edge lying in frustum plane, but only if its extrusion points inward.
if ((fmax(d, vertexDistance[j][k]) < kOccluderEpsilon) &&
(Dot(planeNormal, frustumNormal) > 0.0F)) cull = true;
}
if (!cull) occluderPlane[planeCount++] = Plane(planeNormal, 0.0F) * McamInverse;
v1 = v2;
}
