v3.0.0
版本发布时间: 2020-03-24 02:36:53
RayTracing/raytracing.github.io最新发布版本:v4.0.1(2024-09-01 04:00:34)
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
todouble
(#150) - Change: Materials are now referenced with
std::shared_ptr
pointers - Change: Complete elimination of bare pointers and
new
/delete
- Change:
hittable_list
usesstd::vector
plusstd::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 toray::at()
- Change: Moved
ffmin()
,ffmax()
fromaabb.h
tortweekend.h
- Change: Move low-level utility functions to more appropriate headers
- Change:
squared_length()
renamed tolength_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()
, andvec3::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
1、 Ray.Tracing.in.One.Weekend.v3.0.0.pdf 2.6MB
2、 Ray.Tracing.The.Next.Week.v3.0.0.pdf 3.12MB