Save up to 30% on Elsevier print and eBooks with free shipping. No promo code needed.
Save up to 30% on print and eBooks.
Physically Based Rendering
From Theory to Implementation
1st Edition - July 28, 2004
Authors: Pat Hanrahan, Matt Pharr, Greg Humphreys
Language: English
eBook ISBN:9780080538969
9 7 8 - 0 - 0 8 - 0 5 3 8 9 6 - 9
Rendering is a crucial component of computer graphics— the conversion of a description of a 3D scene into an image for display. Algorithms for animation, geometric modeling, and…Read more
Purchase options
LIMITED OFFER
Save 50% on book bundles
Immediately download your ebook while waiting for your print delivery. No promo code is needed.
Rendering is a crucial component of computer graphics— the conversion of a description of a 3D scene into an image for display. Algorithms for animation, geometric modeling, and texturing all must feed their results through some sort of rendering process for the results to be visible in an image. Focusing on realistic images, physically based rendering incorporates ideas from a range of disciplines, including physics, biology, psychology, cognitive science, and mathematics. This book presents the algorithms of modern photorealistic rendering and follows step by step the creation of a complete rendering system. As each new rendering concept is introduced it is also shown implemented in code—there is no better way to understand the subtle and complex process of rendering. The code itself is highly readable, written in the literate programming style that mixes text describing the system with the code that implements it. The result is a stunning achievement in graphics education for students, professionals, and researchers.
*CD-ROM with the source code for a complete rendering system for Windows, OS X, & Linux—with many examples of images created by the system throughout the 4 color text *The code and text are tightly woven together through the technique of literate programming with a unique indexing feature that lists all locations of functions, variables, and methods on the page they are first described *The most complete guide to understanding, designing, and building a rendering system
Foreword by Pat Hanrahan
Preface
*indicates advanced topics
CHAPTER 01. INTRODUCTION
1.1 Literate Programming
1.1.1 Indexing and Cross-Referencing
1.2 Photorealistic Rendering and the Ray-Tracing Algorithm
1.2.1 Cameras
1.2.2 Ray-Object Intersections
1.2.3 Light Distribution
1.2.4 Visibility
1.2.5 Surface Scattering
1.2.6 Recursive Ray Tracing
1.2.7 Ray Propagation
1.3 pbrt: System Overview
1.3.1 Phases of Execution
1.3.2 Scene Representation
1.3.3 Main Rendering Loop
1.3.4 SceneMethods
1.3.5 An Integrator for Whitted-Style Ray Tracing
1.4 How to Proceed through This Book
1.4.1 The Exercises
1.5 Using and Understanding the Code
1.5.1 Pointer or Reference?
1.5.2 Code Optimization
1.5.3 The BookWeb site
1.5.4 Bugs
Further Reading
Exercise
CHAPTER 02. GEOMETRY AND TRANSFORMATIONS
2.1 Coordinate Systems
2.1.1 Coordinate System Handedness
2.2 Vectors
2.2.1 Arithmetic
2.2.2 Scaling
2.2.3 Dot and Cross Product
2.2.4 Normalization
2.2.5 Coordinate System from a Vector
2.3 Points
2.4 Normals
2.5 Rays
2.5.1 Ray Differentials
2.6 Three-Dimensional Bounding Boxes
2.7 Transformations
2.7.1 Homogeneous Coordinates
2.7.2 Basic Operations
2.7.3 Translations
2.7.4 Scaling
2.7.5 x, y, and z Axis Rotations
2.7.6 Rotation around an Arbitrary Axis
2.7.7 The Look-At Transformation
2.8 Applying Transformations
2.8.1 Points
2.8.2 Vectors
2.8.3 Normals
2.8.4 Rays
2.8.5 Bounding Boxes
2.8.6 Composition of Transformations
2.8.7 Transformations and Coordinate System Handedness
2.9 Differential Geometry
Further Reading
Exercises
CHAPTER 03. SHAPES
3.1 Basic Shape Interface
3.1.1 Bounding
3.1.2 Refinement
3.1.3 Intersection
3.1.4 Avoiding Incorrect Self-Intersections
3.1.5 Shading Geometry
3.1.6 Surface Area
3.1.7 Sidedness
3.2 Spheres
3.2.1 Construction
3.2.2 Bounding
3.2.3 Intersection
3.2.4 Partial Spheres
3.2.5 Partial Derivatives of Normal Vectors
3.2.6 DifferentialGeometry Initialization
3.2.7 Surface Area
3.3 Cylinders
3.3.1 Construction
3.3.2 Bounding
3.3.3 Intersection
3.3.4 Partial Cylinders
3.3.5 Surface Area
3.4 Disks
3.4.1 Construction
3.4.2 Bounding
3.4.3 Intersection
3.4.4 Surface Area
3.5 Other Quadrics
3.5.1 Cones
3.5.2 Paraboloids
3.5.3 Hyperboloids
3.6 Triangles and Meshes
3.6.1 Triangle
3.6.2 Triangle Intersection
3.6.3 Surface Area
3.6.4 Shading Geometry
*3.7 Subdivision Surfaces
3.7.1 Mesh Representation
3.7.2 Bounds
3.7.3 Subdivison
Further Reading
Exercises
CHAPTER 04. PRIMITIVES AND INTERSECTION ACCELERATION
4.1 Primitive Interface and Geometric Primitives
4.1.1 Geometric Primitives
4.1.2 Object Instancing
4.2 Aggregates
4.2.1 Ray-Box Intersections
4.3 Grid Accelerator
4.3.1 Creation
4.3.2 Traversal
4.4 Kd-Tree Accelerator
4.4.1 Tree Representation
4.4.2 Tree Construction
4.4.3 Traversal
Further Reading
Exercises
CHAPTER 05. COLOR AND RADIOMETRY
5.1 Spectral Representation
5.1.1 Spectrum Class
5.1.2 XYZ Color
5.2 Basic Radiometry
5.2.1 Basic Quantities
5.2.2 Incident and Exitant Radiance Functions
5.3 Working with Radiometric Integrals
5.3.1 Integrals over Projected Solid Angle
5.3.2 Integrals over Spherical Coordinates
5.3.3 Integrals over Area
5.4 Surface Reflection and the BRDF
Further Reading
Exercises
CHAPTER 06. CAMERA MODELS
6.1 Camera Model
6.1.1 Camera Coordinate Spaces
6.2 Projective Camera Models
6.2.1 Orthographic Camera
6.2.2 Perspective Camera
6.2.3 Depth of Field
6.3 Environment Camera
Further Reading
Exercises
CHAPTER 07. SAMPLING AND RECONSTRUCTION
7.1 Sampling Theory
7.1.1 The Frequency Domain and the Fourier Transform
7.1.2 Ideal Sampling and Reconstruction
7.1.3 Aliasing
7.1.4 Antialiasing Techniques
7.1.5 Application to Image Synthesis
7.1.6 Sources of Aliasing in Rendering
7.1.7 Understanding Pixels
7.2 Image Sampling Interface
7.2.1 Sample Representation and Allocation
7.3 Stratified Sampling
*7.4 Low-Discrepancy Sampling
7.4.1 Definition of Discrepancy
7.4.2 Constructing Low-Discrepancy Sequences
7.4.3 (0,2)-Sequences
7.4.4 The Low-Discrepancy Sampler
*7.5 Best-Candidate Sampling Patterns
7.5.1 Generating the Best-Candidate Pattern
7.5.2 Using the Best-Candidate Pattern
7.6 Image Reconstruction
7.6.1 Filter Functions
Further Reading
Exercises
CHAPTER 08. FILM AND THE IMAGING PIPELINE
8.1 Film Interface
8.2 Image Film
8.2.1 Image Output
8.3 Image Pipeline
*8.4 Perceptual Issues and Tone Mapping
8.4.1 Luminance and Photometry
8.4.2 Bloom
8.4.3 ToneMapping Interface
8.4.4 Maximum toWhite
8.4.5 Contrast-Based Scale Factor
8.4.6 Varying Adaptation Luminance
8.4.7 Spatially Varying Nonlinear Scale
8.5 Final Imaging Pipeline Stages
Further Reading
Exercises
CHAPTER 09. REFLECTION MODELS
9.1 Basic Interface
9.1.1 Reflectance
9.1.2 BRDF>BTDF Adapter
9.2 Specular Reflection and Transmission
9.2.1 Fresnel Reflectance
9.2.2 Specular Reflection
9.2.3 Specular Transmission
9.3 Lambertian Reflection
9.4 Microfacet Models
9.4.1 Oren-Nayar Diffuse Reflection
9.4.2 Torrance-Sparrow Model
9.4.3 Blinn Microfacet Distribution
9.4.4 Anisotropic Microfacet Model
9.5 Lafortune Model
9.6 Fresnel Incidence Effects
Further Reading
Exercises
CHAPTER 10. MATERIALS
10.1 BSDFs
10.1.1 BSDF Memory Management
10.2 Material Interface and Implementations
10.2.1 Matte
10.2.2 Plastic
10.2.3 Additional Materials
10.3 Bump Mapping
Further Reading
Exercises
CHAPTER 11. TEXTURE
11.1 Sampling and Antialiasing
11.1.1 Finding the Texture Sampling Rate
11.1.2 Filtering Texture Functions
*11.1.3 Ray Differentials for Specular Reflection and Transmission
11.2 Texture Coordinate Generation
11.2.1 2D (u, v) Mapping
11.2.2 Spherical Mapping
11.2.3 Cylindrical Mapping
11.2.4 Planar Mapping
11.2.5 3DMapping
11.3 Texture Interface and Basic Textures
11.3.1 Constant Texture
11.3.2 Scale Texture
11.3.3 Mix Textures
11.3.4 Bilinear Interpolation
11.4 Image Texture
11.4.1 Texture Caching
11.4.2 MIPMaps
11.4.3 Isotropic Triangle Filter
11.4.4 EllipticallyWeighted Average
11.5 Solid and Procedural Texturing
11.5.1 UV Texture
11.5.2 Checkerboard
11.5.3 Solid Checkerboard
11.6 Noise
11.6.1 Perlin Noise
11.6.2 Random Polka Dots
11.6.3 Noise Idioms and Spectral Synthesis
11.6.4 Bumpy andWrinkled Textures
11.6.5 WindyWaves
11.6.6 Marble
Further Reading
Exercises
*CHAPTER 12. VOLUME SCATTERING
12.1 Volume Scattering Processes
12.1.1 Absorption
12.1.2 Emission
12.1.3 Out-Scattering and Extinction
12.1.4 In-scattering
12.2 Phase Functions
12.3 Volume Interface and Homogeneous Media
12.3.1 Homogeneous Volumes
12.4 Varying-Density Volumes
12.4.1 3D Grids
12.4.2 Exponential Density
12.5 Volume Aggregates
Further Reading
Exercises
CHAPTER 13. LIGHT SOURCES
13.1 Light Interface
13.1.1 Visibility Testing
13.2 Point Lights
13.2.1 Spotlights
13.2.2 Texture Projection Lights
13.2.3 Goniophotometric Diagram Lights
13.3 Distant Lights
13.4 Area Lights
13.5 Infinite Area Lights
Further Reading
Exercises
CHAPTER 14. MONTE CARLO INTEGRATION I: BASIC CONCEPTS
14.1 Background and Probability Review
14.1.1 Continuous Random Variables
14.1.2 Expected Values and Variance
14.2 The Monte Carlo Estimator
14.3 Sampling Random Variables
14.3.1 The InversionMethod
14.3.2 Example: Power Distribution
14.3.3 Example: Exponential Distribution
14.3.4 Example: Piecewise-Constant 1D Functions
14.3.5 The RejectionMethod
14.3.6 Example: Rejection Sampling a Unit Circle
14.4 Transforming between Distributions
14.4.1 Transformation in Multiple Dimensions
14.4.2 Example: Polar Coordinates
14.4.3 Example: Spherical Coordinates
14.5 2D Sampling with Multidimensional Transformations
CHAPTER 15. MONTE CARLO INTEGRATION II: IMPROVING EFFICIENCY
15.1 Russian Roulette and Splitting
15.1.1 Splitting
15.2 Careful Sample Placement
15.2.1 Stratified Sampling
15.2.2 Quasi Monte Carlo
15.2.3 Warping Samples and Distortion
15.3 Bias
15.4 Importance Sampling
15.4.1 Multiple Importance Sampling
15.5 Sampling Reflection Functions
15.5.1 Sampling the Blinn Microfacet Distribution
15.5.2 Sampling the Anisotropic Microfacet Model
15.5.3 Sampling FresnelBlend
15.5.4 Specular Reflection and Transmission
15.5.5 Application: Estimating Reflectance
15.5.6 Sampling BSDFs
15.6 Sampling Light Sources
15.6.1 Basic Interface
15.6.2 Lights with Singularities
15.6.3 Area Lights
15.6.4 ShapeSet Sampling
15.6.5 Infinite Area Lights
*15.7 Volume Scattering
15.7.1 Sampling Phase Functions
15.7.2 Computing Optical Thickness
Further Reading
Exercises
CHAPTER 16. LIGHT TRANSPORT I: SURFACE REFLECTION
16.1 Direct Lighting
16.1.1 Estimating the Direct Lighting Integral
16.2 The Light Transport Equation
16.2.1 Basic Derivation
16.2.2 Analytic Solutions to the LTE
16.2.3 The Surface Form of the LTE
16.2.4 Integral over Paths
16.2.5 Delta Distributions in the Integrand
16.2.6 Partitioning the Integrand
16.2.7 TheMeasurement Equation and Importance
16.3 Path Tracing
16.3.1 Overview
16.3.2 Path Sampling
16.3.3 Incremental Path Construction
16.3.4 Implementation
*16.3.5 Bidirectional Path Tracing
16.4 Irradiance Caching
16.5 Particle Tracing and Photon Mapping
*16.5.1 Theoretical Basis for Particle Tracing
16.5.2 Photon Integrator
16.5.3 Building the Photon Maps
16.5.4 Using the Photon Map
16.5.5 Photon Interpolation and Density Estimation
Further Reading
Exercises
*CHAPTER 17. LIGHT TRANSPORT II: VOLUME RENDERING
17.1 The Equation of Transfer
17.2 Volume Integrator Interface
17.3 Emission-Only Integrator
17.4 Single Scattering Integrator
Further Reading
Exercises
CHAPTER 18. SUMMARY AND CONCLUSION
18.1 Design Retrospective
18.1.1 Abstraction versus Efficiency
18.1.2 Design Alternatives: Triangles Only
18.1.3 Design Alternatives: Streaming Computation
18.2 Major Projects
18.2.1 Parallel Rendering
18.2.2 Increased Scene Complexity
18.2.3 Subsurface Scattering
18.2.4 Precomputation for Interactive Rendering
18.3 Conclusion
APPENDIXES
A UTILITIES
B SCENE DESCRIPTION INTERFACE
C INPUT FILE FORMAT
D INDEX OF FRAGMENTS
E INDEX OF CLASSES AND THEIR MEMBERS
F INDEX OF IDENTIFIERS
REFERENCES
INDEX
ABOUT THE CD-ROM
COLOPHON
No. of pages: 1056
Language: English
Edition: 1
Published: July 28, 2004
Imprint: Morgan Kaufmann
eBook ISBN: 9780080538969
PH
Pat Hanrahan
Affiliations and expertise
Stanford University, California, U.S.A.
MP
Matt Pharr
Matt Pharr is a Software Engineer at Google. He previously co-founded Neoptica, which was acquired by Intel, and co-founded Exluna, which was acquired by NVIDIA. He has a B.S. degree from Yale and a Ph.D. from the Stanford Graphics Lab, where he worked under the supervision of Pat Hanrahan.
Affiliations and expertise
Software Engineer, Google
GH
Greg Humphreys
Greg Humphreys is Director of Engineering at FanDuel, having previously worked on the Chrome graphics team at Google and the OptiX GPU raytracing engine at NVIDIA. Before that, he was a professor of Computer Science at the University of Virginia, where he conducted research in both high performance and physically based computer graphics, as well as computer architecture and visualization. Greg has a B.S.E. degree from Princeton, and a Ph.D. in Computer Science from Stanford under the supervision of Pat Hanrahan. When he's not tracing rays, Greg can usually be found playing tournament bridge.