small medium large xlarge

The latest version of the book is P1.0, released 9 months ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (11-Mar-19)
#84674
PDF page: 4
I find the use of Given When Then in the Scenarios confusing. See The Gherkin reference for guidelines. A Scenario with no When (as on page 4/pdf an...more...
  • Reported in: B5.0 (02-Jan-19)
#84229
PDF page: 7
If the purpose of tuple negation is to find the opposite, e.g. of a vector, shouldn't then the "w" component be left alone? So that a vector remains a...more...
  • Reported in: P1.0 (20-Apr-19)
#84932
Paper page: 21
Regarding this test case Scenario: Constructing the PPM pixel data Given c ← canvas(5, 3) And c1 ← color(1.5, 0, 0) And c2 ← color(0, ...more...
  • Reported in: P1.0 (29-Jun-19)
#85490
Paper page: 36
Add 'And cofactor(A,2,1) = 21' to the test In my implementation of cofactor i managed to have a bug because in my chosen language the modulo operat...more...
  • Reported in: B6.0 (18-Feb-19)
#84594
PDF page: 58
Paper page: 39
The Scenario "Calculating the inverse of a matrix" is the first time where use of an EPSILON smaller than 0.0001 will result in the test failing. On ...more...
  • Reported in: B5.0 (27-Jan-19)
#84379
PDF page: 61
The text says "if the ray originates at (0,0,-5) and passes directly through the origin" than the next figure shows the ray in the xOy plane with the ...more...
  • Reported in: B5.0 (02-Jan-19)
#84223
PDF page: 61

The label on the graph axis looks wrong for coordinate (0, 0, -1) on the x axis. Should be the z axis. Same on page 62.--Randall

Jamis Buck says: Hey Randall, thanks for the input. That actually *is* the z axis; it's just that I was trying to handwrite an italic font, and looking at it now I can see that it does, indeed, look rather like an x. It might be too late to fix now, but I'll see if I can update it when I get the book back for a final proofread.
  • Reported in: B5.0 (17-Dec-18)
#84150
PDF page: 71

"it's" in "shrinking it’s direction vector" should be "its" I think. If so, there are other instances in the book as well.--Alessandro

  • Reported in: P1.0 (03-Mar-19)
#84640
PDF page: 89
Under Ch.6, Putting It Together: Add a light source. Here’s one possible configuration, with a white light behind, above and to the left of the eye:...more...
  • Reported in: P1.0 (29-Jul-19)
#85629
Paper page: 95
In the test "Scenario: Shading an intersection," we are finding the shaded colour of "the first object in w" which is a pinkish/magenta coloured spher...more...
  • Reported in: P1.0 (29-Jul-19)
#85633
Paper page: 95
Please disregard my previous error report regarding the test "Scenario: Shading an intersection," it seems the error was in my code, not in the book. ...more...
  • Reported in: B5.0 (29-Dec-18)
#84212
PDF page: 107
It's entirely likely I'm missing something. But after spending a few hours of head scratching, and everything else seemingly working correctly, it se...more...
Jamis Buck says: Lee, I'm pretty certain that the test is correct, but I'd be happy to work with you to figure out what's wrong here. If you post this on the forum I set up at http://forum.raytracerchallenge.com, I'll see what I can find out. Thanks, and sorry for the frustration!
  • Reported in: P1.0 (02-Apr-19)
#84813
PDF page: 119
In this spec in "Refactoring Shapes": Scenario: The default material Given s ← test_shape() When m ← s.material Then m = material() Any reas...more...
  • Reported in: P1.0 (24-Apr-19)
#84970
PDF page: 136
The tests for the "Making a 3D Checker" patterns don't cover any x-y-z interaction and allow an implementation like this one: | white -> (abs(x) + ...more...
  • Reported in: P1.0 (26-Aug-19)
#85738
Paper page: 137
Implementation of checkers pattern as given causes acne for default plane. To explain why: let's look at all the points on the plane where floor(p...more...
  • Reported in: P1.0 (04-May-19)
#85014
Paper page: 147
On page 147, the test for infinite recursion of ReflectedColor() doesn't recurse infinitely if I use the computation's OverPoint in ReflectedColor()....more...
  • Reported in: P1.0 (03-Oct-19)
#85837
PDF page: 158
First of all: Excellent book! I absolutely love it! Thank you for all of the hard work and careful preparation in laying out such a daunting topic. So...more...
  • Reported in: P1.0 (02-Jun-19)
#85336
PDF page: 171
Paper page: 153
The two lines in this pseudocode look like this: > comps.n1 ← last(containers).material.refractive_index Would it make sense to reference the sh...more...
  • Reported in: P1.0 (08-Aug-19)
#85663
PDF page: 176
Paper page: 158
I had a floating-point math issue while doing Chapter 11 in Golang: The test "The refracted color with a refracted ray" kept failing with different...more...
  • Reported in: P1.0 (13-Oct-19)
#85865
Paper page: 184
the line if t0 > t1 then swap(t0, t1) appears on this page as if it was previously part of the code, but it didn't exist in the previous version of th...more...
  • Reported in: P1.0 (13-Oct-19)
#85866
Paper page: 187
Maybe I'm missing something but I don't understand why the test "dist < 1" is needed in local_normal_at. Since the normal is only calculated for point...more...
  • Reported in: P1.0 (07-Aug-19)
#85660
PDF page: 189
I believe the scalar calculation when a == 0 is incorrect. The book indicates the value is: t = -c/(2 b). However from the quadratic formula: a t^2 + ...more...
  • Reported in: B5.0 (10-Feb-19)
#84494
PDF page: 192
The second line of the pseudo code shows: if t0 > t1 then swap(t0, t1) Which isn't in the previous pseudo code snippets, but it isn't shown as add...more...
  • Reported in: P1.0 (09-Mar-19)
#84659
PDF page: 198
Paper page: 180
The direction vector for the third ray striking a cylinder test is not normalized and will not return the t0 and t1 values listed using the given pseu...more...
  • Reported in: P1.0 (09-Mar-19)
#84660
PDF page: 198
Paper page: 180
The issue I reported is absolutely not an issue. Not 10 seconds after I submitted it I noticed that the test code assumed the normalization. My mistak...more...
  • Reported in: B5.0 (26-Jan-19)
#84361
PDF page: 231
In the definition of local_normal_at for smooth triangles, the computed vector must be normalized before it is returned. Otherwise, "Test #17: Normal ...more...
  • Reported in: B6.0 (18-Feb-19)
#84592
PDF page: 277

The Bibliography page is blank (except for the heading)!--Christopher Dailey