Home Gallery Sample Chapter Downloads Courses Errata Links Contact Mailing List Web Slaves
Table of contents
  • Forward by Erick Reinhard
  • Preface
  • Acknowledgments
  • 1 Design and Programming
    • 1.1 General Approaches
    • 1.2 Inheritance
    • 1.3 Language
    • 1.4 Building Scenes
    • 1.5 The User Interface
    • 1.6 Skeleton Ray Tracer
    • 1.7 Developing the Ray Tracer
    • 1.8 Floats or Doubles
    • 1.9 Efficiency Issues
    • 1.10 Coding style
    • 1.11 Debugging
    • Further Reading
  • 2 Some Essential Mathematics
    • 2.1 Sets
    • 2.2 Intervals
    • 2.3 Angles
    • 2.4 Trigonometry
    • 2.5 Coordinate systems
    • 2.6 Vectors
    • 2.7 Points
    • 2.8 Normals
    • 2.9 Mathematical Surfaces
    • 2.10 Solid Angle
    • 2.11 Random Numbers
    • 2.12 Orthonormal Bases and Frames
    • 2.13 Geometric Series
    • 2.14 The Dirac Delta Function
    • Further Reading
    • Questions
    • Exercises
  • 3 Bare-Bones Ray Tracing
    • 3.1 How Ray Tracing Works
    • 3.2 The World
    • 3.3 Rays
    • 3.4 Ray-Object Intersections
    • 3.5 Representing Colors
    • 3.6 A Bare-Bones Ray Tracer
    • 3.7 Tracers
    • 3.8 Color Display
    • 3.9 Ray Tracing Multiple Objects Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 4 Antialiasing
    • 4.1 Aliasing Effects
    • 4.2 Remedies
    • 4.3 Antialiasing Fine Detail
    • 4.4 Filtering Further Reading Questions Exercises
  • 5 Sampling Techniques
    • 5.1 A Sampling Architecture
    • 5.2 Characteristics of Good Sampling
    • 5.3 Sampling Patterns
    • 5.4 Shuffling the Indices
    • 5.5 Some Results Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 6 Mapping Samples to a Disk
    • 6.1 Rejection Sampling
    • 6.2 The Concentric Map Further Reading Questions Exercises
    • 7 Mapping Samples to a Hemisphere
    • 7.1 Cosine Distributions
    • 7.2 Mapping Theory
    • 7.3 Implementation
    • 7.4 Results
    • Further Reading
    • Exercises
  • 8 Perspective Viewing
    • 8.1 Definitions
    • 8.2 Properties of Perspective Projections
    • 8.3 Axis-Aligned Perspective Viewing
    • 8.4 Implementation
    • 8.5 Processes and Results
    • 8.6 Perspective Distortion
    • Further Reading
    • Questions
    • Exercises
  • 9 A Practical Viewing System
    • 9.1 Description
    • 9.2 The User Interface
    • 9.3 Viewing Coordinates
    • 9.4 Primary-Ray Calculation
    • 9.5 Implementation 9.6 Examples
    • 9.7 Zooming 9.8 The roll angle
    • 9.9 The singularity
    • Further Reading
    • Questions
    • Exercises
  • 10 Depth of Field
    • 10.1 Thin Lens Theory
    • 10.2 Simulation
    • 10.3 Implementation
    • 10.4 Results
    • Further Reading
    • Questions
    • Exercises
  • 11 Non-Linear Projections
    • 11.1 Fisheye Projection
    • 11.2 Spherical Panoramic Projection
    • Further Reading
    • Questions
    • Exercises
  • 12 Stereoscopy
    • 12.1 Parallax
    • 12.2 Camera Arrangements
    • 12.3 The Stereo Camera
    • 12.4 Stereo-Pair Display and Viewing
    • 12.5 Implementation
    • 12.6 Results Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 13 Theoretical Foundations
    • 13.1 Radiometric Quantities
    • 13.2 Angular Dependence of Irradiance
    • 13.3 Notation and Sign Conventions
    • 13.4 Radiance and Irradiance
    • 13.5 Spectral Representation
    • 13.6 BRDFs
    • 13.7 Reflectance
    • 13.8 The Perfect Diffuse BRDF
    • 13.9 The BRDF Classes
    • 13.10 The Rendering Equation
    • 13.11 Monte Carlo Integration
    • Further Reading
    • Exercises
  • 14 Lights and Materials
    • 14.1 Illumination and Reflection
    • 14.2 Lights 14.3 Light Classes
    • 14.4 The World and ShadeRec classes
    • 14.5 Tracers 14.6 Diffuse Shading
    • 14.7 Materials 14.8 An Example
    • 14.9 Out-of-Gamut Colors
    • Further Reading
    • Questions
    • Exercises
  • 15 Specular reflection
    • 15.1 Modeling
    • 15.2 Implementation
    • 15.3 It Depends on the Viewer
    • 15.4 Colored Highlights
    • 15.5 Highlights and Overflow
    • 15.6 Other Reflection Models
    • Further Reading
    • Questions
    • Exercises
  • 16 Shadows
    • 16.1 Why Shadows Are Important
    • 16.2 Definitions
    • 16.3 Implementation
    • 16.4 The Epsilon Factor
    • 16.5 Examples
    • 16.6 Costs
    • 16.7 Shadowing Options
    • Further Reading
    • Questions
    • Exercises
  • 17 Ambient Occlusion
    • 17.1 Modeling
    • 17.2 Implementation
    • 17.3 A Simple Scene
    • 17.4 Two-Sided Objects
    • 17.5 Other Scenes
    • Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 18 Area Lights
    • 18.1 Area-Lighting Architecture
    • 18.2 Direct Rendering
    • 18.3 Estimating Direct Illumination
    • 18.4 The Area-Lighting Tracer
    • 18.5 The Emissive Material
    • 18.6 Other Materials
    • 18.7 The Geometric Object Classes
    • 18.8 The Area Light Class
    • 18.9 Example Images
    • 18.10 Environment Lights
    • Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 19 Ray-Object Intersections
    • 19.1 Bounding Boxes
    • 19.2 Axis-Aligned Boxes
    • 19.3 Triangles
    • 19.4 Other Objects
    • 19.5 Generic Objects
    • 19.6 Shading Issues
    • 19.7 Part objects
    • 19.8 Compound Objects
    • Further Reading
    • Questions
    • Exercises
  • 20 Affine Transformations
    • 20.1 2D Transformations
    • 20.2 3D Homogeneous Coordinates
    • 20.3 3D Transformations
    • 20.4 Composition of Transformations
    • 20.5 Inverse Transformations
    • 20.6 Rotation about an Arbitrary Line
    • Further Reading
    • Questions
    • Exercises
  • 21 Transforming Objects
    • 21.1 Intersecting Transformed Objects
    • 21.2 Transforming Normals
    • 21.3 Directly Transforming Objects
    • 21.4 Instancing
    • 21.5 Beveled Objects
    • Further Reading
    • Notes and Discussion
    • Questions
    • Exercises
  • 22 Regular Grids
    • 22.1 Description
    • 22.2 Construction
    • 22.3 Traversal
    • 22.4 Testing
    • 22.5 Grids and Transformed Objects
    • 22.6 Comparison with BVHs
    • Further Reading
    • Questions
    • Exercises
  • 23 Triangle Meshes
    • 23.1 Tessellating a Sphere
    • 23.2 A Mesh Data Structure
    • 23.3 PLY Files
    • 23.4 Examples
    • 23.5 Hierarchical Instance Grids
    • Further Reading
    • Questions
    • Exercises
  • 24 Mirror Reflection
    • 24.1 The Illumination Model
    • 24.2 Implementation
    • 24.3 Reflective Objects
    • 24.4 Inconsistencies
    • 24.5 Colored Reflectors
    • 24.6 Real and Virtual Images
    • 24.7 Examples
    • Further Reading
    • Questions
    • Exercises
  • 25 Glossy Reflection
    • 25.1 Modeling
    • 25.2 Implementation
    • 25.3 Results
    • Further Reading
    • Questions
    • Exercises
  • 26 Global Illumination
    • 26.1 Light Transport
    • 26.2 Path Tracing
    • 26.3 Results
    • 26.4 Sampling the Lights
    • Notes and Discussion
    • Further Reading
    • Questions
    • Exercises
  • 27 Simple Transparency
    • 27.1 Index of Refraction
    • 27.2 Surface Physics and Refraction
    • 27.3 Total Internal Reflection
    • 27.4 The Illumination Model
    • 27.5 Practical Aspects
    • 27.6 Implementation
    • 27.7 Transparent Spheres
    • 27.8 Transparent Compound Objects
    • 27.9 Leaving Out the Etas
    • Further Reading
    • Questions
    • Exercises
  • 28 Realistic Transparency
    • 28.1 The Fresnel Equations
    • 28.2 Color Filtering
    • 28.3 Implementation
    • 28.4 Images
    • 28.5 Transparent Boxes
    • 28.6 Transparent Spheres
    • 28.7 A Glass of Water
    • 28.8 Fish Bowls
    • 28.9 Caustics
    • Further Reading
    • Questions
    • Exercises
  • 29 Texture Mapping
    • 29.1 Introduction
    • 29.2 Implementing Textures
    • 29.3 Mapping Techniques
    • 29.4 Implementing the Mappings
    • 29.5 Antialiasing
    • 29.6 Triangle Meshes
    • Further Reading
    • Questions
    • Exercises
  • 30 Procedural Textures
    • 30.1 Introduction
    • 30.2 Checker Textures
    • 30.3 Textures and Transformations
    • Further Reading
    • Questions
    • Exercises
  • 31 Noise-Based Textures
    • 31.1 Lattice Noises
    • 31.2 Interpolation Techniques
    • 31.3 Sums of Noise Functions
    • 31.4 Basic Noise Textures
    • 31.5 Wrapped Noise Textures
    • 31.6 Marble
    • 31.7 Sandstone
    • Further Reading
    • Questions
    • Exercises
  • References
  • Index