Further Readings - RayTracing/raytracing.github.io GitHub Wiki
Ray Tracing in One Weekend
Chapter 2: Output an image
Chapter 3: The vec3 class
Create separate classes for points, displacements, colors, etc. Example
Using the compiler to do dimensional analysis: velocity, length, time are different types
Chapter 4: Rays, a simple camera, and background
Chapter 5: Adding a sphere
Chapter 6: Surface Normals and multiple objects
Implementation in the book is called "Box filtering" ("Good enough" for most situations)
Use a Gaussian-like filter instead
Can either:
Uniformly sample the screen and weight the samples
Non-uniformly sample
Chapter 9: Diffuse Materials
"Ideal" diffuse is also called "Lambertian " and are used 99% of the time in graphics
Real diffuse objects are not exactly Lambertian
e.g. become specular at grazing angle
Have the color of the metal go to white at grazing angle
Schlick Approximation works for this
Can use the exact Fresnel equations. But normal incident is usually adequate.
Chapter 12: Positionable camera
Replace the camera parameter setting in the book with a camera matrix .
Ray Tracing the Next Week
Chapter 3: A Bounding Volume Hierarchy (BVH)
Use the Surface Area Heuristic (SAH)
When choosing among potential partitions, the partition that minimizes the surface area of the sum of the volumes of the sub-trees is almost always good (and naively best)
SAH-Build that cuts on the longest axis
More efficient direct lighting can be implemented by
Sending shadow rays
Importance sample by sending more rays toward lights
The more general implementation is transformation matrices
Collapse all composite transforms into one matrix
Surface normal scaling is a well-known gotcha
Ray Tracing The Rest of Your Life
Chapter 2: A Simple Monte Carlo Program
Chapter 8: Ortho-normal bases
⚠️ **GitHub.com Fallback** ⚠️
🗂️ Page Index for this GitHub Wiki