Physically Based Rendering,
Edition 1
From Theory to Implementation
Editors:
By Matt Pharr and Greg Humphreys
Publication Date:
04 Aug 2004
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.
Key Features
*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
- 1.1 Literate Programming
- 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
- 2.1 Coordinate Systems
- 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
- 3.1 Basic Shape Interface
- 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
- 4.1 Primitive Interface and Geometric Primitives
- 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
- 5.1 Spectral Representation
- 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
- 6.1 Camera Model
- 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
- 7.1 Sampling Theory
- 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
- 9.1 Basic Interface
- 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
- 10.1 BSDFs
- 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
- 11.1 Sampling and Antialiasing
- *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
- 12.1 Volume Scattering Processes
- 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
- 13.1 Light Interface
- 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
- 14.5.1 Example: Uniformly Sampling a Hemisphere
- 14.5.2 Example: Sampling a Unit Disk
- 14.5.3 Example: Cosine-Weighted Hemisphere Sampling
- 14.5.4 Example: Sampling a Triangle
- Further Reading
- Exercises
- 14.1 Background and Probability Review
- 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
- 15.1 Russian Roulette and Splitting
- 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
- 16.1 Direct Lighting
- *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
- 18.1 Design Retrospective
- 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
ISBN:
9780125531801
Page Count: 1056
Retail Price
:
£62.99
Eberly: 3D Game Engine Design, (2000, 1-55860-593-2)
Academic and industry professionals in computer graphics and computer gaming.
Related Titles