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 Tran

Details

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

About the authors

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.