Physically Based Rendering - 1st Edition - ISBN: 9780125531801, 9780080538969

Physically Based Rendering

1st Edition

From Theory to Implementation

Authors: Matt Pharr Greg Humphreys Matt Pharr Greg Humphreys
Hardcover ISBN: 9780125531801
eBook ISBN: 9780080538969
Imprint: Morgan Kaufmann
Published Date: 4th August 2004
Page Count: 1056
Tax/VAT will be calculated at check-out
73.95
58.99
95.95
Unavailable
Compatible Not compatible
VitalSource PC, Mac, iPhone & iPad Amazon Kindle eReader
ePub & PDF Apple & PC desktop. Mobile devices (Apple & Android) Amazon Kindle eReader
Mobi Amazon Kindle eReader Anything else

Institutional Access


Description

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

Readership

Professionals or students working in computer graphics, game development, simulation, and scientific visualization.

Table of Contents

  • 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
      • 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
  • 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

Details

No. of pages:
1056
Language:
English
Copyright:
© Morgan Kaufmann 2004
Published:
Imprint:
Morgan Kaufmann
eBook ISBN:
9780080538969
Hardcover ISBN:
9780125531801

About the Author

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

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.

Affiliations and Expertise

Director of Engineering, FanDuel

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

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.

Affiliations and Expertise

Director of Engineering, FanDuel

Reviews

"I think this book is great. It's state-of-the-art, and covers the area from soup to nuts and with more depth than any other book I know." —Eric Haines, Autodesk Inc.