Skip to content

v3.0.0 (2020-03-23)

Compare
Choose a tag to compare
@hollasch hollasch released this 23 Mar 18:36
2460c2e

With the migration to a web format accomplished in v2.0.0, we immediately began work on a new major
release: v3.0.0. This release tackles the following key themes:

  • Establishing a common build system for the three projects. We chose CMake for its broad support
    for multiple platforms, as well as multiple build tools and IDEs. This change includes a
    reorganization of the project source files, and unifying a lot of code across projects.

  • A major upgrade of the project source code, addressing a number of large changes that we had
    deferred for later.

  • A number of larger changes to the book content, refining some approaches and ideas, and
    addressing some areas in the text that needed improvement.

Following this release, we expect to switch to a much more incremental approach, mostly with
patch-level (fix) changes and some minor-level (addition) changes.

Common to All Project Source

  • Change: Default floating-point type changed from float to double (#150)
  • Change: Materials are now referenced with std::shared_ptr pointers
  • Change: Complete elimination of bare pointers and new/delete
  • Change: hittable_list uses std::vector plus std::shared_ptr pointers
  • Change: Header cleanup across the source code (#218, #220)
  • Change: Cleaned up standard C++ header use (#19)
  • Change: Improved random number generator utilities
  • Change: Replace MAXFLOAT with (portable) infinity (#195, #216)
  • Change: A lot of code cleanup, refactoring, renaming (#192)
  • Change: Disable compile warnings for external stb_image.h on Windows
  • Change: Replace pi with portable version (#207)
  • Change: ray_color() function now has max depth passed in, rather than hard-coding it (#143)
  • Change: Added random_in_unit_sphere(), random_unit_vector(), random_in_hemisphere() to
    vec3.h. Fixed places where we were using one but should have been using another. (#145)
  • Change: General rework of the vec3 header (#153, #156, #215)
  • Change: Clarify sphere intersection code, plus slight perf improvement (#113)
  • Change: ray::point_at_parameter() renamed to ray::at()
  • Change: Moved ffmin(), ffmax() from aabb.h to rtweekend.h
  • Change: Move low-level utility functions to more appropriate headers
  • Change: squared_length() renamed to length_squared()
  • Change: Update sphere::hit() function.
  • Change: Refraction variables renamed to match reflection variable names
  • Change: Simplify lambertian scatter direction calculation
  • New: CMake configuration & build
  • New: Added progress output for main programs (#139)
  • New: src/common directory for code shared across books
  • New: Common project-wide header: src/common/rtweekend.h
  • New: File constants.h with portable math constants (#151)
  • New: vec3::write_color - provides a robust output method for color data (#93)
  • New: degrees_to_radians() utility function (#217)
  • New: random_int(), random_double(), and vec3::random() utility functions
  • New: Added safety value when surface texture has null data
  • New: Main programs now define and handle parameterized background color
  • Fix: Diffuse PDF computation uses random point on sphere, rather than inside
  • Fix: Improve color [0,1] -> [0,255] mapping

Common to All Books

  • Change: Code in source and in book reformatted to a consistent 96-column line length (#219)
  • Change: Lots more highlighting of changed code in books to aid reading
  • Change: Math typesetting fixes throughout the books (#13)
  • Change: Books now use Markdeep's chapter indirection syntax
  • Change: Updated several output images to match code updates
  • Change: Books general styling improvements (#197)
  • Change: Refactored acknowledgements. These are now moved to and duplicated in each book
  • New: Added code listing captions, including source file name, for all books (#238)
  • New: Added captions to all figures (#238)
  • New: Local copy of markdeep.min.js for offline reading
  • Fix: Fixed various minor problems in the text

In One Weekend

  • Change: Reworked Lambertian reflection text (#155)
  • Change: Revised the figure for computing a random reflection vector (#142)
  • New: Clarified text around the ideal Lambertian distribution (#155)
  • New: Additional explanatory text to the dielectric chapter
  • New: Image for hemispherical rendering
  • New: Image for dealing with front and back faces (#326)
  • Fix: Update ray_color() code blocks to match current source (#391)

The Next Week

  • Change: Added proper handling of front vs back face intersection (#270)
  • New: "The Next Week" main program added swtich statement for different scenes
  • New: "The Next Week" main program now defines all image/camera parameters for each scene
  • Fix: Fixed bug in noise_texture::value() (#396)
  • Fix: Correct first Perlin noise() function in "The Next Week".
  • Fix: Fix OCR error in texture::value() function (#399)
  • Fix: Remove premature declaration of moving_sphere::bounding_box() (#405)

The Rest of Your Life

  • Change: Improved naming of auxilliary programs in The Rest of Your Life source
  • Fix: Delete unused variable p in main() (#317)
  • Deleted: Several unused source files from src/TheRestOfYourLife