Download Latest Version v4.0.2 (2025-04-25) source code.tar.gz (22.7 MB)
Email in envelope

Get an email when there's a new version of Ray Tracing in One Weekend Book Series

Home / v4.0.0
Name Modified Size InfoDownloads / Week
Parent folder
RayTracingInOneWeekend-v4.0.0.pdf 2024-07-26 5.6 MB
RayTracingTheRestOfYourLife-v4.0.0.pdf 2024-07-26 5.8 MB
RayTracingTheNextWeek-v4.0.0.pdf 2024-07-26 8.6 MB
README.md 2024-07-26 2.0 kB
v4.0.0 (2024-07-26) source code.tar.gz 2024-07-26 22.7 MB
v4.0.0 (2024-07-26) source code.zip 2024-07-26 22.7 MB
Totals: 6 Items   65.4 MB 0

From our last official v3.2.3 release (three and a half years ago!), this major release includes all changes in the v4.0.0-alpha.1 and v4.0.0-alpha.2 releases, plus the changes listed immediately below. Generally, this represents a large overhaul of all three books and their code, and will require large changes to any code you've based on the prior v3.2.3 version. Going forward, we plan to avoid such massive, long-running development branches, at the expense of more frequent minor and major releases.

There's still a fair amount of work remaining on book three, which we'll work on after this release.

Common

  • New -- Add explicit std:: namespacing almost everywhere (#1487)
  • Change -- Use delegating constructors where helpful (#1489)
  • Change -- Standardized our use of begin/end standard C++ iterators (#1551)
  • Fix -- CSS reformatting and fixes (#1567)
  • Fix -- Add workaround for image and figure captions using latest Markdeep versions (#1583)
  • New -- Add DOCTYPE declaration to all Markdeep documents (#1566)

The Next Week

  • Delete -- Remove debug output code from constant_medium::hit() function (#1495)
  • Change -- Convert perlin class to use static arrays instead of dynamically allocated (#1483)
  • Fix -- Workaround Markdeep issue for code listings with tag-like tokens (#1463)

The Rest of Your Life

  • Change -- Simplified the onb class, and renamed or deleted functions (#1080)
  • Change -- Many small updates following walkthrough of book 3 (#988, [#1317])
  • Change -- Use plain array for estimate_halfway program (#1523)
  • Change -- Refactored the ONB class to remove unused methods and generally simplify (#1088)
  • Change -- Use ICD(d) instead of f(d) for inverse cumulative distribution for clarity (#1537)
  • Fix -- Add missing signature updates for material::scatter() functions
  • Fix -- Avoid hittable_list of lights in book until code is ready (#1318)
Source: README.md, updated 2024-07-26