Real-Time Rendering Corrigenda for 3rd edition, 2nd print

What follows are corrections for the book Real-Time Rendering (3rd edition, 2nd print), by Tomas Akenine-Möller, Eric Haines, and Naty Hoffman.

Addenda

  • None so far.

Significant errors

  • Page 71, Equation 4.24. All the "less than" (<) signs should be "less than or equal" (<=) signs. (Michael Marcin)
  • Page 76, the constant "s" below the first equation, should have a square on the n-term, i.e., s = 2/n(q)^2 (where the q should be bold and have a hat on it as well). Also, in equation 4.45, the last bit should read: "...=4q_w^2/n(q)^2". (Matthias Moulin)
  • Page 189, 3rd paragraph, 2nd sentence ends with ", ie., its transpose." This part of the sentence should be removed since the matrix in Equation 6.5 is not orthonormal. (Scott Firestone)
  • Page 252, in equations 7.44 and 7.45, the first condition (where..) should say "where theta_i < pi/2" and the second should say "where theta_i < pi /2". (Justin Lam)
  • Page 257, Equation 7.48 is now deprecated. A footnote should be added with "This formula is deprecated. See slide 27 of http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_b.pdf for a better formula."
  • Page 262, Equation 7.56 is incorrect, as Schlick's approximation is on an earlier form that Smith presented. See Appendix A of the EGSR 2007 paper by Walter et al., "Microfacet Models for Refraction through Rough Surfaces", http://www.graphics.cornell.edu/~bjw/microfacetbsdf.pdf, for the correct form for Smith.
  • Page 293, in the text just below Equation 8.15, the formula for I_L should be "I_L = \pi r_L^2 L_L". (Ke Xu)
  • Page 468, Equation 10.6, the first occurence of sigma should not be squared, i.e., the denominator should be "\sigma \sqrt..." (Patrick Bader)
  • Page 632, line 5 says "toward $-\infty" but should say "toward $+\infty", and line 6 says "toward $+\infty" but should say "toward $-\infty". (Ke Xu)
  • Page 801, in the pseudo code, line 1 should say "if(isEmptyLeaf(N)) return FALSE;", and line 2 should say "if(isSolidCell(N))" (i.e., remove the "else"). (Stephen Sheeler)
  • Page 805, in the pseudcode, the four calls to "FindFirstHitCD(...)" should be replaced with "return FindFirstHitCD(...)" (Scott Firestone)
  • Page 896, the third bullet says "u, v, w form a right-handed system." but it should say:
    "u, v, w form a right-handed system, if the basis is right handed, and
    u, v, w form a left-handed system, if the basis is left handed."
    (Scott Firestone)

Minor syntax errors

  • Page 48, says:
    ---
    float4 result = lerp(CoolColor, WarmColor, mixer);
    return result;
    ---
    Change to:
    ---
    float3 result = lerp(CoolColor, WarmColor, mixer);
    return float4(result, 1.0);
    ---
    (Michal Nowatkowski)
  • Page 61, Section 4.1.5, 2nd paragraph, "(which points outwards from page of this book)" to be replaced with "(which points outwards from the page of this book in a right-handed coordinate system)". (Scott Firestone)
  • Page 143, in the footnote (13), it should say: "Prior to Snow Leopard, Apple Macintosh computers use an encoding gamma of about 0.55 [1028]."
  • Page 313, Section 8.5.1, 2nd paragraph, 3rd sentence says "the view position changes due to perspective." It should be "the view direction changes due to perspective." (Scott Firestone)
  • Page 347, 6th sentence in the second paragraph says "...then checks these against the view direction." It should be "...then checks these against the light direction." (Ke Xu)
  • Page 453, first paragraph, last sentence says "their z-depths modified" should be "have their transparencies modified" (Scott Firestone)
  • Page 453, 2nd paragraph, last sentence, add "by increasing the transparency based on the distance that a ray from the camera travels inside the clipped sphere." (Scott Firestone)
  • Page 596, Figure 13.17 caption says "a 4x4 degree Bézier patch." Should be "a 4x4 Bézier patch of degree 3." (Scott Firestone)
  • Page 624, figure 13.48. The leftmost red vertex should be named "f^1_{n-1}" and not "f^0_{n-1}". (Ke Xu)
  • Page 709, in the formula at the bottom, the "= 616 batches/frame" should be a separate term, not in the divisor.. (Sam Hocevar)
  • Page 757, last paragraph, second line says "If both...", but should be "If either..." (Ke Xu)
  • Page 758, Figure 16.16 -- swap a and b. (Ke Xu)
  • Page 759, in the middle of the last paragraph, it says "with i, j, k, and l for the edges p_1q_1, p_1r_1, p_2q2, and p_2r_2." This should really be (see Figure 16.17): "with i, j, k, and l for the edges p_1r_1, p_1q_1, p_2q2, and p_2r_2." And a little further down, "j is derived from p_1r_2" should really be "j is derived from p_1q_1" (Ke Xu)
  • Page 855, Figure 18.14, the arrow from "Decompress" to "Rasterizer" should say "8x8 uncompressed" + "z-values + z_max", i.e., add "_max" (Scott Firestone)

Very minor errors