
Realistic Ray Tracing
Preview
Book Description
Concentrating on the "nuts and bolts" of writing ray tracing programs, this new and revised edition emphasizes practical and implementation issues and takes the reader through all the details needed to write a modern rendering system. Most importantly, the book adds many C++ code segments, and adds new details to provide the reader with a better intuitive understanding of ray tracing algorithms.
Table of Contents
Getting Started
Code Optimization
RGB Colors
Images
Vectors
Orthonormal Bases and Frames
Dynamic Length Arrays
Random Number Generator
C++ Code
RGB Class
Image Class
Vector3 Class
Orthonormal Basis Class
Dynamic Array Class
Random Number Generator
Notes
Ray—Object Intersections
Parametric lines
General Ray—Object Intersections
Implicit Surfaces
Parametric surfaces
Ray—Sphere Intersection
Ray—Triangle Intersection
More Than One Object
C++ Code
Ray Class
Shape Classes
Notes
A Simple Ray Tracer
A Single Sample Ray Tracer
Multisampling
Sampling Methods
Filtering Methods
C++ Code
Single Sample Orthogonal Viewing Ray Tracer
Sample Class
Notes
Viewing
Axis-aligned viewing
Setting View Parameters
Thin-lens cameras
Motion Blur
Multidimensional sampling
C++ Code
Camera Class
Dynamic Sphere Class
Notes
Solid Texture Mapping
Stripe Textures
Solid Noise
Turbulence
C++ Code
Solid Noise Class
Texture Class
Noise Texture Class
Simple Texture Class
Marble Texture Class
Notes
Image Texture Mapping
C++ code
2D Texture Class
UVSphere Class
Notes
Triangle Meshes
C++ Code
Vertex Classes
Mesh Class
Mesh Triangle
Notes
Instancing
Transformation Matrices
Using Transformation Matrices
Intersecting Rays with Transformed Objects
Lattices
C++ Code
Matrix Library
Shape Instance Class
Notes
Bounding Volume Hierarchies
Hierarchical Bounding Boxes
Efficient Ray-Box Intersection
C++ Code
New Ray Class
Axis-Aligned Bounding Box Class
Partitioning routine
Bounding Volume Hierarchy
Notes
Monte Carlo Integration
Integrals
Continuous Probability
One-Dimensional Continuous Probability Density Functions
One-Dimensional Expected Value
Multi-Dimensional Random Variables
Estimated Means
Monte Carlo Integration
Choosing Random Points
Function Inversion
Notes
Radiometry
Photons
Spectral energy
Power
Irradiance
Radiance
Deriving Other Radiometric Quantities from Radiance
BRDF
Directional Hemispherical Reflectance
Ideal Diffuse BRDF
Transport Equation
Notes
Path Tracing
Luminaires
Monte Carlo Solution to Light Transport
Lambertian Environments
Specular Reflection
Imperfect Specular Reflection
Smooth Dielectrics
Specular-Diffuse Surfaces
Image Display
C++ Code
Material Class
Diffuse Material Class
Phong Metal Material Class
Diffuse-Specular Material Class
Dielectric Material Class
Notes
Explicit Direct Lighting
Direct Lighting in a Path Tracer
Sampling a Spherical Luminaries
Direct Lighting from Many Luminaries
Choosing the Weights
C++ Code
Parallelogram Class
Random Point Functions
Notes
Photon Mapping
Sending Photons
Using the Photon Map
Indirect Use of the Photon Map
Notes
Participating Media
Transport in Participating Media
Direct Lighting
Indirect Lighting
Data for Media
Notes
Going Further