Table of Contents

Cover image

Inside Front Cover

Title page

Copyright

Dedication

About the Authors

Preface

Audience

Overview and goals

Changes between the first and second editions

Changes between the second and third editions

Acknowledgments

About the cover

Additional reading

01: Introduction

1.1 Literate programming

1.2 Photorealistic rendering and the ray-tracing algorithm

1.3 pbrt: System overview

1.4 Parallelization of pbrt

1.5 How to proceed through this book

1.6 Using and understanding the code

1.7 A brief history of physically based rendering

Further reading

Exercise

02: Geometry and Transformations

2.2 Vectors

2.3 Points

2.4 Normals

2.5 Rays

2.6 Bounding boxes

2.7 Transformations

2.8 Applying transformations

2.9 *Animating transformations

2.10 Interactions

Further reading

Exercises

03: Shapes

3.1 Basic shape interface

3.2 Spheres

3.3 Cylinders

3.4 Disks

3.5 Other quadrics

3.6 Triangle meshes

* 3.7 Curves

*3.8 Subdivision surfaces

* 3.9 Managing rounding error

Further reading

Exercises

04: Primitives and Intersection Acceleration

4.1 Primitive interface and geometric primitives

4.2 Aggregates

4.3 Bounding volume hierarchies

4.4 Kd-tree accelerator

Further reading

Exercises

05: Color and Radiometry

5.1 Spectral representation

5.2 The sampledSpectrum class

5.3 RGBSpectrum implementation

5.4 Radiometry

5.5 Working with radiometric integrals

5.6 Surface reflection

Further reading

Exercises

06: Camera Models

6.1 Camera model

6.2 Projective camera models

6.3 Environment camera

*6.4 Realistic cameras

Further reading

Exercises

07: Sampling and Reconstruction

7.1 Sampling theory

7.2 Sampling interface

7.3 Stratified sampling

*7.4 The halton sampler

*7.5 (0, 2)-Sequence sampler

*7.6 Maximized minimal distance sampler

*7.7 Sobol’ sampler

7.8 Image reconstruction

7.9 Film and the imaging pipeline

FURTHER READING

Exercises

08: Reflection Models

8.1 Basic interface

8.2 Specular reflection and transmission

8.3 Lambertian reflection

8.4 Microfacet models

8.5 Fresnel incidence effects

8.6 Fourier basis BSDFs

8.6.1 Spline interpolation

Further reading

Exercises

09: Materials

9.1 BSDFs

9.2 Material interface and implementations

9.3 Bump mapping

Further reading

Exercises

10: Texture

10.1 Sampling and antialiasing

10.2 Texture coordinate generation

10.3 Texture interface and basic textures

10.4 Image texture

10.5 Solid and procedural texturing

10.6 Noise

Further reading

Exercises

11: Volume Scattering

11.1 Volume scattering processes

11.2 Phase functions

11.3 Media

11.4 The bssrdf

Further reading

Exercises

12: Light Sources

12.1 Light emission

12.2 Light interface

12.3 Point lights

12.4 Distant lights

12.5 Area lights

12.6 Infinite area lights

Further reading

Exercises

13: Monte Carlo Integration

13.1 Background and probability review

13.2 The monte carlo estimator

13.3 Sampling random variables

*13.4 Metropolis sampling

13.5 Transforming between distributions

13.6 2D Sampling with multidimensional transformations

13.7 Russian roulette and splitting

13.8 Careful sample placement

13.9 Bias

13.10 Importance sampling

Further reading

Exercises

14: Light Transport I: Surface Reflection

14.1 Sampling reflection functions

14.2 Sampling light sources

14.3 Direct lighting

14.4 The light transport equation

14.5 Path tracing

Further reading

Exercises

15: Light Transport II: Volume Rendering

15.1 The equation of transfer

15.2 Sampling volume scattering

15.3 Volumetric light transport

*15.4 Sampling subsurface reflection functions

*15.5 Subsurface scattering using the diffusion equation

Further reading

Exercises

*16: Light Transport III: Bidirectional Methods

16.1 The path-space measurement equation

16.2 Stochastic progressive photon mapping

16.3 Bidirectional path tracing

16.4 Metropolis light transport

Further reading

Exercises

17: Retrospective and the Future

17.1 Design retrospective

17.2 Alternative hardware architectures

17.3 Conclusion

A: Utilities

A.1 Main include file

A.2 Image file input and output

A.3 Communicating with the user

A.4 Memory management

A.5 Mathematical routines

A.6 Parallelism

A.7 Statistics

Further reading

Exercises

B: Scene Description Interface

B.1 Parameter sets

B.2 Initialization and rendering options

B.3 Scene definition

B.4 Adding new object implementations

Further reading

Exercises

C: Index of Fragments

D: Index of Classes and their Members

E: Index of Miscellaneous Identifiers

References

Subject Index

Physically Based Rendering

From Theory to Implementation

Inside Back Cover