@@ -5,27 +5,67 @@ Change Log -- Ray Tracing in One Weekend
55
66
77----------------------------------------------------------------------------------------------------
8- # v3.2.0 (in progress)
8+ # v3.2.0 (2020-07-18)
9+
10+ We're still chasing that elusive stable project state where we're mostly done with large changes,
11+ yet we keep finding more and more to tweak and improve. Besides the usual batch of corrections and
12+ small improvements, for this change we plodded through the complete code progression for both books
13+ one and two (_ In One Weekend_ and _ The Next Week_ ). This caught a _ lot_ of issues (to our dismay),
14+ and allowed us to generate a complete set of new render images for both books, to catch up with all
15+ of the changes we've been making. The end result is that readers should find a significantly better
16+ agreement between the book and their code as they progress, and their renders should also generally
17+ match.
18+
19+ Besides the new rendered images, we also much improved the image parameters, which were frequently
20+ missing from the previous version, leaving readers to guess at their values, or go to the code to
21+ try to figure out how we created some of the images. In general, our working renders are now 400
22+ pixels wide, usually 16:9 aspect ratio. We now use an explicit aspect ratio and deduce the image
23+ height and other camera values, so you can tweak your render size just by changing the image width
24+ (instead of updating a bunch of dependent parameters).
25+
26+ One interesting late change we made was adding explicit C++ ` override ` labels to subclass methods.
27+ We did this mostly to aid code readers, but were surprised to find that it actually caught a pretty
28+ significant bug hiding in our code (see entry in common changes below).
29+
30+ You'll also see a new citation section at the end of the books, to encourage uniform citations out
31+ in the world, making it easier for people to refer to and track these books.
32+
33+ As is typical, though we roughly follow [ semantic versioning] ( https://semver.org/ ) , we're
34+ considering this release a minor change instead of a major one. It's a common reflex, because people
35+ generally have a (misguided) aversion to bumping the major version a lot. We consider it minor
36+ because most of the changes are quite local, some classes get new constructors and any variances
37+ should be quite simple and easy to fix up. Still, one might consider this more properly a major
38+ version bump.
39+
40+ For our next larger-than-patch release, we're beginning a large revisit of book 3,
41+ _ Ray Tracing: The Rest of Your Life_ . There's a lot of work to do, and this will likely be a
42+ significant change and improvement. We're hoping that changes to books one and two will be small,
43+ but that's never worked out for us before. Ah, dreams.
944
1045### Common
11- - Removed: now that the code handles ray-surface intersection from either side, we no longer need
12- the ` flip_face ` class, so we've deleted it from the text and from the code (#482 , #270 )
13-
14- ### _ The Next Week_
15- - Removed: Deleted the section covering the old ` flip_face ` class, renumbered images as this
16- eliminated the rendering with missing Cornell box faces (#482 )
17- - Change: Renamed and explicitly numbered book images and figures (#495 )
18- - Fix: Reduced code duplication in dielectric::scatter() function
19- - New: Added alternative constructors that take color arguments in addition to the constructors
20- that take ` shared_ptr<texture> ` arguments, simplifying calling code. This applies to the
21- following classes: ` checker_texture ` , ` constant_medium ` , ` diffuse_light ` , and ` lambertian ` .
22- (#516 )
23- - Fix: "Intance" typo in Chapter 8.1 to "Instance" (#629 )
46+ - Bug: Found a bug in book 3 source ` isotropic::scatter() ` method. Commented out, using default
47+ (as it was previously). (#669 )
48+ - Delete: vestigial ` vec3::write_color() ` method (now in color.h)
49+ - Change: All images and figures renamed to follow more logical convention, using the following
50+ pattern: ` {fig,img}-<book>.<sequence>-<title>.<filetype> ` (#495 )
51+ - Change: ` main() ` function gets organized into image, world, camera, and render chunks
52+ - Change: Added header guards to the text of all three books whenever a new header file was
53+ introduced, consistent with source code (#645 )
54+ - New: Added constructors that take ` color ` arguments in addition to the constructors
55+ taking ` shared_ptr<texture> ` arguments, simplifying calling code. Applies to ` checker_texture ` ,
56+ ` constant_medium ` , ` diffuse_light ` , ` lambertian ` , and ` isotropic ` (#516 , #644 )
57+ - Change: Added ` override ` keywords throughout. This keyword marks a subclass method as one that
58+ is intended to override a superclass method. It makes the code a bit easier to understand, and
59+ ensures that your function is actually overriding the method you think it is. Which is good,
60+ because it already caught an existing bug in _ The Rest of Your Life_ source. This change
61+ includes commenting out the book 3 ` isotropic::scatter() ` method, which was accidentally ignored
62+ anyway. (#639 , #669 )
63+ - New: each book gets a section of recommended citation examples (#500 )
2464
2565### _ In One Weekend_
2666 - Change: Updated all rendered images except for 1.13, 1.14 (#179 , #547 , #548 , #549 , #550 , #551 ,
2767 #552 , #553 , #554 , #555 , #556 , #557 , #560 , #561 , #562 , #563 , #564 , #565 , #566 )
28- - Change: Standard render width changed to 400
68+ - Change: Standard working render width changed to 400 pixels
2969 - Change: Image 6 is now a before-and-after pair to illustrate antialiasing
3070 - Change: Listing 48: Refactored material and geometry declarations
3171 - Change: Listing 52: Refactored assignment of ` etai_over_etat `
@@ -38,19 +78,32 @@ Change Log -- Ray Tracing in One Weekend
3878 - Fix: Listing 30: Add missing ` camera.h ` include
3979 - Fix: Listing 42: Don't need to include ` ray.h ` when using ` rtweekend.h `
4080 - Fix: Listing 48: Add missing ` material.h ` include
41- - Fix: Listing 51: ` refract() ` function was missing ` fabs() ` on ` sqrt() ` argument (#559
81+ - Fix: Listing 51: ` refract() ` function was missing ` fabs() ` on ` sqrt() ` argument (#559 )
4282 - Fix: Listing 61: Include updated ` cam ` declaration, show context w/highlighting
4383 - Fix: Listing 62: Highlight rename of ` camera::get_ray() ` parameters to s, t (#616 )
4484 - Fix: Listing 63: Show reverted scene declarations
4585 - Fix: Listing 68: Show final scene render parameters with highlighting
86+ - Fix: Rewrote refracted ray perpendicular and parallel components for correctness (#526 )
4687 - New: Listing 50: Show the updated material definitions
4788
4889### _ The Next Week_
90+ - Delete: Deleted the section covering the old ` flip_face ` class, renumbered images as this
91+ eliminated the rendering with missing Cornell box faces (#270 , #482 , #661 )
92+ - Delete: scenes 7 & 9 from the original (` cornell_balls ` and ` cornell_final ` ), as these were not
93+ covered in the book. Made the source and book consistent with each other. There are now a total
94+ of eight scenes for the second book (#653 , #620 )
95+ - Change: Listing 10: Separate out world & camera definitions in main (#646 )
96+ - Change: Updated most rendered images for book 2: 2.01-2.03, 2.07-2.13, 2.15-2.22.
97+ - Change: Scenes get custom image parameters (#650 )
98+ - Fix: Reduced code duplication in ` dielectric::scatter() ` function
99+ - Fix: "Intance" typo in Chapter 8.1 to "Instance" (#629 )
49100 - Fix: Listing 7: Show reverted viewing parameters from book 1 final scene
101+ - Fix: Typo in listing caption for filename ` moving-sphere.h `
50102
51-
52- ----------------------------------------------------------------------------------------------------
53- # v3.1.3 (in progress)
103+ ### _ The Rest of Your Life_
104+ - Change: use ` vup ` for camera, as in other two books
105+ - Fix: world and camera setup in ` main() ` , and include full body in book listing (#646 )
106+ - New: ` flip_face ` moved to book 3, where it's needed for the light source (#661 )
54107
55108
56109----------------------------------------------------------------------------------------------------
0 commit comments