v4.0.0-alpha.1 (2023-08-11)
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
virtualkeyword for methods withoverride(#805) - Fix -
recthit returning NaNs and infinities (#681) - Fix - Add
\mathitto italic math variables to fix slight kerning issues in equations (#839) - Fix - Fixed issues in Bib(La)TeX entries.
- Change - Use
classinstead ofstructthroughout 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
inlineclean. We now useinlinein 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
cameraclass - Change -
aabbclass 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 standaloneclamputility function - Change -
aabbclass uses intervals for each axis (#796) - Change -
hittablemember variableptrrenamed toobject - Change - general rename of
mat_ptrtomat(material) - Change -
hittable::bounding_box()signature has changed to always return a value (#859) - Change - replaced random vector in
isotropicwithrandom_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
cameraclass now handles images with width or height of one (#682, #1040) - New - Introduce new
intervalclass used throughout codebase (#777) - New -
rtw_imageclass for easier image data loading, better texture file search (#807) - New - 2D
quadprimitive of arbitrary orientation (#756) - New -
box()utility function returnshittable_listof newquadprimitives (#780) - Delete -
box,xy_rect,yz_rect,xz_rectclasses. These are replaced with newquad
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
doubleandfloat(#752) - New - Software context around the shadow acne listing
The Next Week
- Fix - Fixed
bvh_nodeconstructor 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
cameraand
sphere, but also impacting the API forhittable::bounding_box()(#799) - Change - The
sphereclass now includes animation capability originally inmoving_sphere
(#1125) - New - Add listing to use new
bvh_nodeclass in therandom_spheresscene (#715). - Delete - The
moving_sphereclass is deprecated, and functionality moved tosphere(#1125)