Skip to content

Commit 944629c

Browse files
committed
Merge branch 'dev-minor' into dev-major
2 parents 122980e + aee85c7 commit 944629c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1339
-487
lines changed

CHANGELOG.md

Lines changed: 72 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)