Skip to content

v4.0.0-alpha.1 (2023-08-11)

Compare
Choose a tag to compare
@hollasch hollasch released this 11 Aug 21:21

It's been quite a while since our last release of v3.2.3 at the end of 2020. For this cycle, we've tackled a load of significant backlog items, including rewrites of much of our underlying code. As always, the primary idea isn't to provide the best or most optimal implemntation, but instead to put out simple, sometimes crude first approximations of the main components of writing a ray tracer.

Highlights include large rewrites and expansions of the book text, a large refactoring of our camera class, folding moving_sphere functionality into sphere, adding a new interval class for use in multiple contexts, creating a new general quad primitive to replace the old *_rect primitives, and the addressing of hundreds of issues and requested features. The line-item changes below should give you an idea of v4 includes.

In order to drive this release to resolution, we're releasing our alpha.1 version to coincide with the start of SIGGRAPH 2023. We've pretty much finished with book one, though there's a fair amount left for books two and three. Our plan is to keep crunching for a final v4.0.0 release by the end of 2023.

Since this is an alpha, we would greatly appreciate any feedback you might have. Let us know by creating issues up on the GitHub project.

Common

  • Fix - CSS fix for cases where code listing overflows; change to fit content (#826)
  • Fix - Enabled compiler warnings for MSVC, Clang, GNU. Cleaned up warnings as fit (#865)
  • Fix - Remove redundant virtual keyword for methods with override (#805)
  • Fix - rect hit returning NaNs and infinities (#681)
  • Fix - Add \mathit to italic math variables to fix slight kerning issues in equations (#839)
  • Fix - Fixed issues in Bib(La)TeX entries.
  • Change - Use class instead of struct throughout for simpler C++ (#781)
  • Change - Moved all class method definitions inside class definition (#802)
  • Change - Class public/private access labels get consistent two-space indents (#782)
  • Change - Updated classes to use private access for class-private variables (#869)
  • Change - Made our code inline clean. We now use inline in all header function definitions to
    guard against copies in multiple C++ translation units (#803)
  • Change - Retired the src/common/ directory. Each book now has complete source in one directory
  • Change - Significant rewrite and expansion of the camera class
  • Change - aabb class constructor treats two params as extreme points in any orientation (#733)
  • Change - hittable:hit() methods use new interval class for ray-t parameter
  • Change - interval::clamp() replaces standalone clamp utility function
  • Change - aabb class uses intervals for each axis (#796)
  • Change - hittable member variable ptr renamed to object
  • Change - general rename of mat_ptr to mat (material)
  • Change - hittable::bounding_box() signature has changed to always return a value (#859)
  • Change - replaced random vector in isotropic with random_unit_vector
  • Change - Use std::clog instead of std::cerr to log scanline progress (#935)
  • Change - Updated figures throughout for improved clarity when possible
  • Change - Generated images are now output gamma-corrected rather than in linear space
    (#980, #1033)
  • Change - The camera class now handles images with width or height of one (#682, #1040)
  • New - Introduce new interval class used throughout codebase (#777)
  • New - rtw_image class for easier image data loading, better texture file search (#807)
  • New - 2D quad primitive of arbitrary orientation (#756)
  • New - box() utility function returns hittable_list of new quad primitives (#780)
  • Delete - box, xy_rect, yz_rect, xz_rect classes. These are replaced with new quad
    primitive (#292, #780, #681)

In One Weekend

  • Change - Updated all rendered images in text
  • Change - Significant update to the diffuse reflection section (#696, #992)
  • Change - Updated and clarified text around ray generation and the camera model
  • New - More commentary about the choice between double and float (#752)
  • New - Software context around the shadow acne listing

The Next Week

  • Fix - Fixed bvh_node constructor definition signature (#872)
  • Fix - Fixed scaling for final Perlin noise texture (#896).
  • Change - Rearranged the texture-mapping presentation. The three types (solid, spatial, image)
    are now sequenced in that order, and the checker texture presented more explicitly as
    an illustration of a spatial texture.
  • Change - Broad rewrite of time management for moving objects, primarily camera and
    sphere, but also impacting the API for hittable::bounding_box() (#799)
  • Change - The sphere class now includes animation capability originally in moving_sphere
    (#1125)
  • New - Add listing to use new bvh_node class in the random_spheres scene (#715).
  • Delete - The moving_sphere class is deprecated, and functionality moved to sphere (#1125)

The Rest of Your Life

  • Fix - Added missing functionality for isotropic (#664)
  • Fix - Variable direction was used without being defined in listing 11 (#831)
  • Fix - Fixed uniform sampling (#934)