You are previewing Fundamentals of Computer Graphics, Fourth Edition, 4th Edition.
O'Reilly logo
Fundamentals of Computer Graphics, Fourth Edition, 4th Edition

Book Description

Drawing on an impressive roster of experts in the field, Fundamentals of Computer Graphics, Fourth Edition offers an ideal resource for computer course curricula as well as a user-friendly personal or professional reference.

Focusing on geometric intuition, the book gives the necessary information for understanding how images get onto the screen by using the complementary approaches of ray tracing and rasterization. It covers topics common to an introductory course, such as sampling theory, texture mapping, spatial data structure, and splines. It also includes a number of contributed chapters from authors known for their expertise and clear way of explaining concepts.

Highlights of the Fourth Edition Include:

  • Updated coverage of existing topics
  • Major updates and improvements to several chapters, including texture mapping, graphics hardware, signal processing, and data structures
  • A text now printed entirely in four-color to enhance illustrative figures of concepts

The fourth edition of Fundamentals of Computer Graphics continues to provide an outstanding and comprehensive introduction to basic computer graphic technology and theory. It retains an informal and intuitive style while improving precision, consistency, and completeness of material, allowing aspiring and experienced graphics programmers to better understand and apply foundational principles to the development of efficient code in creating film, game, or web designs.

Table of Contents

  1. Preliminaries
  2. Preface
    1. About the Cover
    2. Online Resources
    3. Acknowledgments
  3. Chapter 1 Introduction
    1. 1.1 Graphics Areas
    2. 1.2 Major Applications
    3. 1.3 Graphics APIs
    4. 1.4 Graphics Pipeline
    5. 1.5 Numerical Issues
    6. 1.6 Efficiency
    7. 1.7 Designing and Coding Graphics Programs
      1. 1.7.1 Class Design
      2. 1.7.2 Float vs. Double
      3. 1.7.3 Debugging Graphics Programs
        1. The Scientific Method
        2. Images as Coded Debugging Output
        3. Using a Debugger
        4. Data Visualization for Debugging
    8. Notes
  4. Chapter 2 Miscellaneous Math
    1. 2.1 Sets and Mappings
      1. 2.1.1 Inverse Mappings
      2. 2.1.2 Intervals
      3. 2.1.3 Logarithms
    2. 2.2 Solving Quadratic Equations
    3. 2.3 Trigonometry
      1. 2.3.1 Angles
      2. 2.3.2 Trigonometric Functions
      3. 2.3.3 Useful Identities
    4. 2.4 Vectors
      1. 2.4.1 Vector Operations
      2. 2.4.2 Cartesian Coordinates of a Vector
      3. 2.4.3 Dot Product
      4. 2.4.4 Cross Product
      5. 2.4.5 Orthonormal Bases and Coordinate Frames
      6. 2.4.6 Constructing a Basis from a Single Vector
      7. 2.4.7 Constructing a Basis from Two Vectors
      8. 2.4.8 Squaring Up a Basis
    5. 2.5 Curves and Surfaces
      1. 2.5.1 2D Implicit Curves
      2. 2.5.2 The 2D Gradient
        1. Implicit 2D Lines
        2. Implicit Quadric Curves
      3. 2.5.3 3D Implicit Surfaces
      4. 2.5.4 Surface Normal to an Implicit Surface
      5. 2.5.5 Implicit Planes
        1. 3D Quadric Surfaces
        2. 3D Curves from Implicit Surfaces
      6. 2.5.6 2D Parametric Curves
        1. 2D Parametric Lines
        2. 2D Parametric Circles
      7. 2.5.7 3D Parametric Curves
        1. 3D Parametric Lines
      8. 2.5.8 3D Parametric Surfaces
      9. 2.5.9 Summary of Curves and Surfaces
    6. 2.6 Linear Interpolation
    7. 2.7 Triangles
      1. 2.7.1 2D Triangles
      2. 2.7.2 3D Triangles
    8. Frequently Asked Questions
    9. Notes
    10. Exercises
      1. Figure 2.1
      2. Figure 2.2
      3. Figure 2.3
      4. Figure 2.4
      5. Figure 2.5
      6. Figure 2.6
      7. Figure 2.7
      8. Figure 2.8
      9. Figure 2.9
      10. Figure 2.10
      11. Figure 2.11
      12. Figure 2.12
      13. Figure 2.13
      14. Figure 2.14
      15. Figure 2.15
      16. Figure 2.16
      17. Figure 2.17
      18. Figure 2.18
      19. Figure 2.19
      20. Figure 2.20
      21. Figure 2.21
      22. Figure 2.22
      23. Figure 2.23
      24. Figure 2.24
      25. Figure 2.25
      26. Figure 2.26
      27. Figure 2.27
      28. Figure 2.28
      29. Figure 2.29
      30. Figure 2.30
      31. Figure 2.31
      32. Figure 2.32
      33. Figure 2.33
      34. Figure 2.34
      35. Figure 2.35
      36. Figure 2.36
      37. Figure 2.37
      38. Figure 2.38
      39. Figure 2.39
      40. Figure 2.40
  5. Chapter 3 Raster Images
    1. 3.1 Raster Devices
      1. 3.1.1 Displays
      2. 3.1.2 Hardcopy Devices
      3. 3.1.3 Input Devices
    2. 3.2 Images, Pixels, and Geometry
      1. 3.2.1 Pixel Values
      2. 3.2.2 Monitor Intensities and Gamma
    3. 3.3 RGB Color
    4. 3.4 Alpha Compositing
      1. 3.4.1 Image Storage
    5. Frequently Asked Questions
    6. Exercise
      1. Figure 3.1
      2. Figure 3.2
      3. Figure 3.3
      4. Figure 3.4
      5. Figure 3.5
      6. Figure 3.6
      7. Figure 3.7
      8. Figure 3.8
      9. Figure 3.9
      10. Figure 3.10
      11. Figure 3.11
      12. Figure 3.12
      13. Figure 3.13
      14. Figure 3.14
  6. Chapter 4 Ray Tracing
    1. 4.1 The Basic Ray-Tracing Algorithm
    2. 4.2 Perspective
    3. 4.3 Computing Viewing Rays
      1. 4.3.1 Orthographic Views
      2. 4.3.2 Perspective Views
    4. 4.4 Ray-Object Intersection
      1. 4.4.1 Ray-Sphere Intersection
      2. 4.4.2 Ray-Triangle Intersection
      3. 4.4.3 Ray-Polygon Intersection
      4. 4.4.4 Intersecting a Group of Objects
    5. 4.5 Shading
      1. 4.5.1 Lambertian Shading
      2. 4.5.2 Blinn-Phong Shading
      3. 4.5.3 Ambient Shading
      4. 4.5.4 Multiple Point Lights
    6. 4.6 A Ray-Tracing Program
      1. 4.6.1 Object-Oriented Design for a Ray-Tracing Program
    7. 4.7 Shadows
    8. 4.8 Ideal Specular Reflection
    9. 4.9 Historical Notes
    10. Frequently Asked Questions
    11. Exercises
      1. Figure 4.1
      2. Figure 4.2
      3. Figure 4.3
      4. Figure 4.4
      5. Figure 4.5
      6. Figure 4.6
      7. Figure 4.7
      8. Figure 4.8
      9. Figure 4.9
      10. Figure 4.10
      11. Figure 4.11
      12. Figure 4.12
      13. Figure 4.13
      14. Figure 4.14
      15. Figure 4.15
      16. Figure 4.16
      17. Figure 4.17
      18. Figure 4.18
      19. Figure 4.19
      20. Figure 4.20
  7. Chapter 5 Linear Algebra
    1. 5.1 Determinants
    2. 5.2 Matrices
      1. 5.2.1 Matrix Arithmetic
      2. 5.2.2 Operations on Matrices
      3. 5.2.3 Vector Operations in Matrix Form
      4. 5.2.4 Special Types of Matrices
    3. 5.3 Computing with Matrices and Determinants
      1. 5.3.1 Computing Inverses
      2. 5.3.2 Linear Systems
    4. 5.4 Eigenvalues and Matrix Diagonalization
      1. 5.4.1 Singular Value Decomposition
    5. Frequently Asked Questions
    6. Notes
    7. Exercises
      1. Figure 5.1
      2. Figure 5.2
      3. Figure 5.3
      4. Figure 5.4
      5. Figure 5.5
      6. Figure 5.6
      7. Figure 5.7
      8. Figure 5.8
  8. Chapter 6 Transformation Matrices
    1. 6.1 2D Linear Transformations
      1. 6.1.1 Scaling
      2. 6.1.2 Shearing
      3. 6.1.3 Rotation
      4. 6.1.4 Reflection
      5. 6.1.5 Composition and Decomposition of Transformations
      6. 6.1.6 Decomposition of Transformations
        1. Symmetric Eigenvalue Decomposition
        2. Singular Value Decomposition
        3. Paeth Decomposition of Rotations
    2. 6.2 3D Linear Transformations
      1. 6.2.1 Arbitrary 3D Rotations
      2. 6.2.2 Transforming Normal Vectors
    3. 6.3 Translation and Affine Transformations
    4. 6.4 Inverses of Transformation Matrices
    5. 6.5 Coordinate Transformations
    6. Frequently Asked Questions
    7. Notes
    8. Exercises
      1. Figure 6.1
      2. Figure 6.2
      3. Figure 6.3
      4. Figure 6.4
      5. Figure 6.5
      6. Figure 6.6
      7. Figure 6.7
      8. Figure 6.8
      9. Figure 6.9
      10. Figure 6.10
      11. Figure 6.11
      12. Figure 6.13
      13. Figure 6.14
      14. Figure 6.15
      15. Figure 6.12
      16. Figure 6.16
      17. Figure 6.17
      18. Figure 6.18
      19. Figure 6.19
      20. Figure 6.20
  9. Chapter 7 Viewing
    1. 7.1 Viewing Transformations
      1. 7.1.1 The Viewport Transformation
      2. 7.1.2 The Orthographic Projection Transformation
      3. 7.1.3 The Camera Transformation
    2. 7.2 Projective Transformations
    3. 7.3 Perspective Projection
    4. 7.4 Some Properties of the Perspective Transform
    5. 7.5 Field-of-View
    6. Frequently Asked Questions
    7. Notes
    8. Exercises
      1. Figure 7.1
      2. Figure 7.2
      3. Figure 7.3
      4. Figure 7.4
      5. Figure 7.5
      6. Figure 7.6
      7. Figure 7.7
      8. Figure 7.8
      9. Figure 7.9
      10. Figure 7.10
      11. Figure 7.11
      12. Figure 7.12
      13. Figure 7.13
      14. Figure 7.14
  10. Chapter 8 The Graphics Pipeline
    1. 8.1 Rasterization
      1. 8.1.1 Line Drawing
        1. Line Drawing Using Implicit Line Equations
      2. 8.1.2 Triangle Rasterization
        1. Dealing with Pixels on Triangle Edges
      3. 8.1.3 Clipping
      4. 8.1.4 Clipping Before the Transform (Option 1)
      5. 8.1.5 Clipping in Homogeneous Coordinates (Option 2)
      6. 8.1.6 Clipping against a Plane
    2. 8.2 Operations Before and After Rasterization
      1. 8.2.1 Simple 2D Drawing
      2. 8.2.2 A Minimal 3D Pipeline
      3. 8.2.3 Using a z-Buffer for Hidden Surfaces
        1. Precision Issues
      4. 8.2.4 Per-vertex Shading
      5. 8.2.5 Per-fragment Shading
      6. 8.2.6 Texture Mapping
      7. 8.2.7 Shading Frequency
    3. 8.3 Simple Antialiasing
    4. 8.4 Culling Primitives for Efficiency
      1. 8.4.1 View Volume Culling
      2. 8.4.2 Backface Culling
    5. Frequently Asked Questions
    6. Notes
    7. Exercises
      1. Figure 8.1
      2. Figure 8.2
      3. Figure 8.3
      4. Figure 8.4
      5. Figure 8.5
      6. Figure 8.6
      7. Figure 8.7
      8. Figure 8.8
      9. Figure 8.9
      10. Figure 8.10
      11. Figure 8.11
      12. Figure 8.12
      13. Figure 8.13
      14. Figure 8.14
      15. Figure 8.15
  11. Chapter 9 Signal Processing
    1. 9.1 Digital Audio: Sampling in 1D
      1. 9.1.1 Sampling Artifacts and Aliasing
    2. 9.2 Convolution
      1. 9.2.1 Moving Averages
      2. 9.2.2 Discrete Convolution
        1. Convolution Filters
        2. Properties of Convolution
      3. 9.2.3 Convolution as a Sum of Shifted Filters
      4. 9.2.4 Convolution with Continuous Functions
        1. The Dirac Delta Function
      5. 9.2.5 Discrete-Continuous Convolution
      6. 9.2.6 Convolution in More Than One Dimension
    3. 9.3 Convolution Filters
      1. 9.3.1 A Gallery of Convolution Filters
        1. The Box Filter
        2. The Tent Filter
        3. The Gaussian Filter
        4. The B-Spline Cubic Filter
        5. The Catmull-Rom Cubic Filter
        6. The Mitchell-Netravali Cubic Filter
      2. 9.3.2 Properties of Filters
        1. Separable Filters
    4. 9.4 Signal Processing for Images
      1. 9.4.1 Image Filtering Using Discrete Filters
      2. 9.4.2 Antialiasing in Image Sampling
      3. 9.4.3 Reconstruction and Resampling
    5. 9.5 Sampling Theory
      1. 9.5.1 The Fourier Transform
      2. 9.5.2 Convolution and the Fourier Transform
      3. 9.5.3 A Gallery of Fourier Transforms
      4. 9.5.4 Dirac Impulses in Sampling Theory
      5. 9.5.5 Sampling and Aliasing
        1. Preventing Aliasing in Sampling
        2. Preventing Aliasing in Reconstruction
        3. Preventing Aliasing in Resampling
      6. 9.5.6 Ideal Filters vs. Useful Filters
    6. Exercises
      1. Figure 9.1
      2. Figure 9.2
      3. Figure 9.3
      4. Figure 9.4
      5. Figure 9.5
      6. Figure 9.6
      7. Figure 9.7
      8. Figure 9.8
      9. Figure 9.9
      10. Figure 9.10
      11. Figure 9.11
      12. Figure 9.12
      13. Figure 9.13
      14. Figure 9.14
      15. Figure 9.15
      16. Figure 9.16
      17. Figure 9.17
      18. Figure 9.18
      19. Figure 9.19
      20. Figure 9.20
      21. Figure 9.21
      22. Figure 9.22
      23. Figure 9.23
      24. Figure 9.24
      25. Figure 9.25
      26. Figure 9.26
      27. Figure 9.27
      28. Figure 9.28
      29. Figure 9.29
      30. Figure 9.30
      31. Figure 9.31
      32. Figure 9.32
      33. Figure 9.33
      34. Figure 9.34
      35. Figure 9.35
      36. Figure 9.36
      37. Figure 9.37
      38. Figure 9.38
      39. Figure 9.39
      40. Figure 9.40
      41. Figure 9.41
      42. Figure 9.42
      43. Figure 9.43
      44. Figure 9.44
      45. Figure 9.45
      46. Figure 9.46
      47. Figure 9.47
      48. Figure 9.48
      49. Figure 9.49
      50. Figure 9.50
      51. Figure 9.51
      52. Figure 9.52
      53. Figure 9.53
  12. Chapter 10 Surface Shading
    1. 10.1 Diffuse Shading
      1. 10.1.1 Lambertian Shading Model
      2. 10.1.2 Ambient Shading
      3. 10.1.3 Vertex-Based Diffuse Shading
    2. 10.2 Phong Shading
      1. 10.2.1 Phong Lighting Model
      2. 10.2.2 Surface Normal Vector Interpolation
    3. 10.3 Artistic Shading
      1. 10.3.1 Line Drawing
      2. 10.3.2 Cool-to-Warm Shading
    4. Frequently Asked Questions
    5. Exercises
      1. Figure 10.1
      2. Figure 10.2
      3. Figure 10.3
      4. Figure 10.4
      5. Figure 10.5
      6. Figure 10.6
      7. Figure 10.7
      8. Figure 10.8
      9. Figure 10.9
  13. Chapter 11 Texture Mapping
    1. 11.1 Looking Up Texture Values
    2. 11.2 Texture Coordinate Functions
      1. 11.2.1 Geometrically Determined Coordinates
        1. Planar Projection
        2. Spherical Coordinates
        3. Cylindrical Coordinates
        4. Cubemaps
      2. 11.2.2 Interpolated Texture Coordinates
      3. 11.2.3 Tiling, Wrapping Modes, and Texture Transformations
      4. 11.2.4 Perspective Correct Interpolation
      5. 11.2.5 Continuity and Seams
    3. 11.3 Antialiasing Texture Lookups
      1. 11.3.1 The Footprint of a Pixel
      2. 11.3.2 Reconstruction
      3. 11.3.3 Mipmapping
      4. 11.3.4 Basic Texture Filtering with Mipmaps
      5. 11.3.5 Anisotropic Filtering
    4. 11.4 Applications of Texture Mapping
      1. 11.4.1 Controlling Shading Parameters
      2. 11.4.2 Normal Maps and Bump Maps
      3. 11.4.3 Displacement Maps
      4. 11.4.4 Shadow Maps
      5. 11.4.5 Environment Maps
    5. 11.5 Procedural 3D Textures
      1. 11.5.1 3D Stripe Textures
      2. 11.5.2 Solid Noise
      3. 11.5.3 Turbulence
    6. Frequently Asked Questions
    7. Notes
    8. Exercises
      1. Figure 11.1
      2. Figure 11.2
      3. Figure 11.3
      4. Figure 11.4
      5. Figure 11.5
      6. Figure 11.6
      7. Figure 11.7
      8. Figure 11.8
      9. Figure 11.9
      10. Figure 11.10
      11. Figure 11.11
      12. Figure 11.12
      13. Figure 11.13
      14. Figure 11.14
      15. Figure 11.15
      16. Figure 11.16
      17. Figure 11.17
      18. Figure 11.18
      19. Figure 11.19
      20. Figure 11.20
      21. Figure 11.21
      22. Figure 11.22
      23. Figure 11.23
      24. Figure 11.24
      25. Figure 11.25
      26. Figure 11.26
      27. Figure 11.27
      28. Figure 11.28
      29. Figure 11.29
      30. Figure 11.30
  14. Chapter 12 Data Structures for Graphics
    1. 12.1 Triangle Meshes
      1. 12.1.1 Mesh Topology
      2. 12.1.2 Indexed Mesh Storage
      3. 12.1.3 Triangle Strips and Fans
      4. 12.1.4 Data Structures for Mesh Connectivity
        1. The Triangle-Neighbor Structure
        2. The Winged-Edge Structure
        3. The Half-Edge Structure
    2. 12.2 Scene Graphs
    3. 12.3 Spatial Data Structures
      1. 12.3.1 Bounding Boxes
      2. 12.3.2 Hierarchical Bounding Boxes
      3. 12.3.3 Uniform Spatial Subdivision
      4. 12.3.4 Axis-Aligned Binary Space Partitioning
    4. 12.4 BSP Trees for Visibility
      1. 12.4.1 Overview of BSP Tree Algorithm
      2. 12.4.2 Building the Tree
      3. 12.4.3 Cutting Triangles
      4. 12.4.4 Optimizing the Tree
    5. 12.5 Tiling Multidimensional Arrays
      1. 12.5.1 One-Level Tiling for 2D Arrays
      2. 12.5.2 Example: Two-Level Tiling for 3D Arrays
    6. Frequently Asked Questions
    7. Notes
    8. Exercises
      1. Figure 12.1
      2. Figure 12.2
      3. Figure 12.3
      4. Figure 12.4
      5. Figure 12.5
      6. Figure 12.6
      7. Figure 12.7
      8. Figure 12.8
      9. Figure 12.9
      10. Figure 12.10
      11. Figure 12.11
      12. Figure 12.12
      13. Figure 12.13
      14. Figure 12.14
      15. Figure 12.15
      16. Figure 12.16
      17. Figure 12.17
      18. Figure 12.18
      19. Figure 12.19
      20. Figure 12.20
      21. Figure 12.21
      22. Figure 12.22
      23. Figure 12.23
      24. Figure 12.24
      25. Figure 12.25
      26. Figure 12.26
      27. Figure 12.27
      28. Figure 12.28
      29. Figure 12.29
      30. Figure 12.30
      31. Figure 12.31
      32. Figure 12.32
      33. Figure 12.33
      34. Figure 12.34
      35. Figure 12.35
      36. Figure 12.36
      37. Figure 12.37
      38. Figure 12.38
      39. Figure 12.39
      40. Figure 12.40
      41. Figure 12.41
      42. Figure 12.42
  15. Chapter 13 More Ray Tracing
    1. 13.1 Transparency and Refraction
    2. 13.2 Instancing
    3. 13.3 Constructive Solid Geometry
    4. 13.4 Distribution Ray Tracing
      1. 13.4.1 Antialiasing
      2. 13.4.2 Soft Shadows
      3. 13.4.3 Depth of Field
      4. 13.4.4 Glossy Reflection
      5. 13.4.5 Motion Blur
    5. Notes
    6. Frequently Asked Questions
      1. Figure 13.1
      2. Figure 13.2
      3. Figure 13.3
      4. Figure 13.4
      5. Figure 13.5
      6. Figure 13.6
      7. Figure 13.7
      8. Figure 13.8
      9. Figure 13.9
      10. Figure 13.10
      11. Figure 13.11
      12. Figure 13.12
      13. Figure 13.13
      14. Figure 13.14
      15. Figure 13.15
      16. Figure 13.16
      17. Figure 13.17
      18. Figure 13.18
      19. Figure 13.19
  16. Chapter 14 Sampling
    1. 14.1 Integration
      1. 14.1.1 Measures and Averages
      2. 14.1.2 Example: Measures on the Lines in the 2D Plane
      3. 14.1.3 Example: Measure of Lines in 3D
    2. 14.2 Continuous Probability
      1. 14.2.1 One-Dimensional Continuous Probability Density Functions
      2. 14.2.2 One-Dimensional Expected Value
      3. 14.2.3 Multidimensional Random Variables
      4. 14.2.4 Variance
      5. 14.2.5 Estimated Means
    3. 14.3 Monte Carlo Integration
      1. 14.3.1 Quasi—Monte Carlo Integration
    4. 14.4 Choosing Random Points
      1. 14.4.1 Function Inversion
      2. 14.4.2 Rejection
      3. 14.4.3 Metropolis
      4. 14.4.4 Example: Choosing Random Lines in the Square
    5. Frequently Asked Questions
    6. Notes
    7. Exercises
      1. Figure 14.1
      2. Figure 14.2
      3. Figure 14.3
      4. Figure 14.4
      5. Figure 14.5
      6. Figure 14.6
      7. Figure 14.7
      8. Figure 14.8
      9. Figure 14.9
      10. Figure 14.10
      1. Table 14.1
  17. Chapter 15 Curves
    1. 15.1 Curves
      1. 15.1.1 Parameterizations and Reparameterizations
      2. 15.1.2 Piecewise Parametric Representations
      3. 15.1.3 Splines
    2. 15.2 Curve Properties
      1. 15.2.1 Continuity
    3. 15.3 Polynomial Pieces
      1. 15.3.1 Polynomial Notation
      2. 15.3.2 A Line Segment
        1. Matrix Form for Polynomials
      3. 15.3.3 Beyond Line Segments
      4. 15.3.4 Basis Matrices for Cubics
      5. 15.3.5 Blending Functions
      6. 15.3.6 Interpolating Polynomials
    4. 15.4 Putting Pieces Together
      1. 15.4.1 Knots
      2. 15.4.2 Using Independent Pieces
      3. 15.4.3 Putting Segments Together
    5. 15.5 Cubics
      1. 15.5.1 Natural Cubics
      2. 15.5.2 Hermite Cubics
      3. 15.5.3 Cardinal Cubics
    6. 15.6 Approximating Curves
      1. 15.6.1 Bézier Curves
        1. Geometric Intuition for Bézier Curves
        2. The de Casteljau Algorithm
      2. 15.6.2 B-Splines
        1. Uniform Linear B-Splines
        2. Uniform Quadratic B-Splines
        3. Uniform Cubic B-Splines
      3. 15.6.3 Nonuniform B-Splines
        1. Repeated Knots and B-Spline Interpolation
      4. 15.6.4 NURBS
    7. 15.7 Summary
    8. Notes
      1. 15.7.1 Exercises
      1. Figure 15.1
      2. Figure 15.2
      3. Figure 15.3
      4. Figure 15.4
      5. Figure 15.5
      6. Figure 15.6
      7. Figure 15.7
      8. Figure 15.8
      9. Figure 15.9
      10. Figure 15.10
      11. Figure 15.11
      12. Figure 15.12
      13. Figure 15.13
      14. Figure 15.14
      15. Figure 15.15
      16. Figure 15.16
      17. Figure 15.17
      18. Figure 15.18
      19. Figure 15.19
      20. Figure 15.20
      21. Figure 15.21
      22. Figure 15.22
      23. Figure 15.23
      24. Figure 15.24
      25. Figure 15.25
  18. Chapter 16 Computer Animation
    1. 16.1 Principles of Animation
      1. 16.1.1 Timing
      2. 16.1.2 Action Layout
      3. 16.1.3 Animation Techniques
      4. 16.1.4 Animator Control vs. Automatic Methods
    2. 16.2 Keyframing
      1. 16.2.1. Motion Controls
      2. 16.2.2 Interpolating Rotation
    3. 16.3 Deformations
    4. 16.4 Character Animation
      1. 16.4.1 Facial Animation
      2. 16.4.2 Motion Capture
    5. 16.5 Physics-Based Animation
    6. 16.6 Procedural Techniques
    7. 16.7 Groups of Objects
    8. Notes
      1. Figure 16.1
      2. Figure 16.2
      3. Figure 16.3
      4. Figure 16.4
      5. Figure 16.5
      6. Figure 16.6
      7. Figure 16.7
      8. Figure 16.8
      9. Figure 16.9
      10. Figure 16.10
      11. Figure 16.11
      12. Figure 16.12
      13. Figure 16.13
      14. Figure 16.14
      15. Figure 16.15
      16. Figure 16.16
      17. Figure 16.17
      18. Figure 16.18
      19. Figure 16.19
      20. Figure 16.20
      21. Figure 16.21
      22. Figure 16.22
      23. Figure 16.23
      24. Figure 16.24
      25. Figure 16.25
      26. Figure 16.26
      27. Figure 16.27
      28. Figure 16.28
      29. Figure 16.29
  19. Chapter 17 Using Graphics Hardware
    1. 17.1 Hardware Overview
    2. 17.2 What Is Graphics Hardware
    3. 17.3 Heterogeneous Multiprocessing
      1. 17.3.1 Programming with OpenGL
    4. 17.4 Graphics Hardware Programming: Buffers, State, and Shaders
      1. 17.4.1 Buffers
      2. 17.4.2 Display Buffer
      3. 17.4.3 Cycle of Refresh
    5. 17.5 State Machine
    6. 17.6 Basic OpenGL Application Layout
    7. 17.7 Geometry
      1. 17.7.1 Describing Geometry for the Hardware
    8. 17.8 A First Look at Shaders
      1. 17.8.1 Vertex Shader Example
      2. 17.8.2 Fragment Shader Example
      3. 17.8.3 Loading, Compiling, and Using Shaders
    9. 17.9 Vertex Buffer Objects
    10. 17.10 Vertex Array Objects
    11. 17.11 Transformation Matrices
      1. 17.11.1 GLM
      2. 17.11.2 Using an Orthographic Projection
    12. 17.12 Shading with Per-Vertex Attributes
      1. 17.12.1 Structs of Vertex Data
    13. 17.13 Shading in the Fragment Processor
      1. 17.13.1 Blinn-Phong Shader Program: Vertex Shader
      2. 17.13.2 Blinn-Phong Shader Program: Fragment Shader
      3. 17.13.3 A Normal Shader
    14. 17.14 Meshes and Instancing
      1. 17.14.1 Instancing Models
    15. 17.15 Texture Objects
      1. 17.15.1 Texture Lookup in Shaders
    16. 17.16 Object-Oriented Design for Graphics Hardware Programming
    17. 17.17 Continued Learning
    18. Frequently Asked Questions
    19. Notes
    20. Exercises
      1. Figure 17.1
      2. Figure 17.2
      3. Figure 17.3
      4. Figure 17.4
      5. Figure 17.5
      6. Figure 17.6
      7. Figure 17.7
      8. Figure 17.8
      9. Figure 17.9
      10. Figure 17.10
      11. Figure 17.11
      12. Figure 17.12
      13. Figure 17.13
      14. Figure 17.14
  20. Chapter 18 Light
    1. 18.1 Radiometry
      1. 18.1.1 Photons
      2. 18.1.2 Spectral Energy
      3. 18.1.3 Power
      4. 18.1.4 Irradiance
      5. 18.1.5 Radiance
        1. Radiance and Other Radiometric Quantities
      6. 18.1.6 BRDF
        1. Directional Hemispherical Reflectance
        2. Ideal Diffuse BRDF
    2. 18.2 Transport Equation
    3. 18.3 Photometry
    4. Frequently Asked Questions
    5. Notes
    6. Exercises
      1. Figure 18.1
      2. Figure 18.2
      3. Figure 18.3
      4. Figure 18.4
      5. Figure 18.5
      6. Figure 18.6
      7. Figure 18.7
      8. Figure 18.8
  21. Chapter 19 Color
    1. 19.1 Colorimetry
      1. 19.1.1 Grassmann’s Laws
      2. 19.1.2 Cone Responses
      3. 19.1.3 Color Matching Experiments
      4. 19.1.4 Standard Observers
      5. 19.1.5 Chromaticity Coordinates
    2. 19.2 Color Spaces
      1. 19.2.1 Constructing a Matrix Transform
      2. 19.2.2 Device-Dependent RGB Spaces
      3. 19.2.3 LMS Cone Space
      4. 19.2.4 CIE 1976 L*a*b*
    3. 19.3 Chromatic Adaptation
    4. 19.4 Color Appearance
    5. Notes
      1. Figure 19.1
      2. Figure 19.2
      3. Figure 19.3
      4. Figure 19.4
      5. Figure 19.5
      6. Figure 19.6
      7. Figure 19.7
      8. Figure 19.8
      9. Figure 19.9
      10. Figure 19.10
      1. Table 19.1
      2. Table 19.2
  22. Chapter 20 Visual Perception
    1. 20.1 Vision Science
    2. 20.2 Visual Sensitivity
      1. 20.2.1 Brightness and Contrast
      2. 20.2.2 Color
      3. 20.2.3 Dynamic Range
      4. 20.2.4 Field-of-View and Acuity
      5. 20.2.5 Motion
    3. 20.3 Spatial Vision
      1. 20.3.1 Frames of Reference and Measurement Scales
      2. 20.3.2 Ocularmotor Cues
      3. 20.3.3 Binocular Disparity
      4. 20.3.4 Motion Cues
      5. 20.3.5 Pictorial Cues
    4. 20.4 Objects, Locations, and Events
      1. 20.4.1 Object Recognition
      2. 20.4.2 Size and Distance
      3. 20.4.3 Events
    5. 20.5 Picture Perception
      1. Figure 20.1
      2. Figure 20.2
      3. Figure 20.3
      4. Figure 20.4
      5. Figure 20.5
      6. Figure 20.6
      7. Figure 20.7
      8. Figure 20.8
      9. Figure 20.9
      10. Figure 20.10
      11. Figure 20.11
      12. Figure 20.12
      13. Figure 20.13
      14. Figure 20.14
      15. Figure 20.15
      16. Figure 20.16
      17. Figure 20.17
      18. Figure 20.18
      19. Figure 20.19
      20. Figure 20.20
      21. Figure 20.21
      22. Figure 20.22
      23. Figure 20.23
      24. Figure 20.24
      25. Figure 20.25
      26. Figure 20.26
      27. Figure 20.27
      28. Figure 20.28
      29. Figure 20.29
      30. Figure 20.30
      31. Figure 20.31
      32. Figure 20.32
      33. Figure 20.33
      34. Figure 20.34
      35. Figure 20.35
      36. Figure 20.36
      37. Figure 20.37
      38. Figure 20.38
      39. Figure 20.39
      40. Figure 20.40
      41. Figure 20.41
      42. Figure 20.42
      43. Figure 20.43
      44. Figure 20.44
      45. Figure 20.45
      46. Figure 20.46
      1. Table 20.1
  23. Chapter 21 Tone Reproduction
    1. 21.1 Classification
    2. 21.2 Dynamic Range
    3. 21.3 Color
    4. 21.4 Image Formation
    5. 21.5 Frequency-Based Operators
    6. 21.6 Gradient-Domain Operators
    7. 21.7 Spatial Operators
    8. 21.8 Division
    9. 21.9 Sigmoids
    10. 21.10 Other Approaches
    11. 21.11 Night Tonemapping
    12. 21.12 Discussion
      1. Figure 21.1
      2. Figure 21.2
      3. Figure 21.3
      4. Figure 21.4
      5. Figure 21.5
      6. Figure 21.6
      7. Figure 21.7
      8. Figure 21.8
      9. Figure 21.9
      10. Figure 21.10
      11. Figure 21.11
      12. Figure 21.12
      13. Figure 21.13
      14. Figure 21.14
      15. Figure 21.15
      16. Figure 21.16
      17. Figure 21.17
      18. Figure 21.18
      19. Figure 21.19
      20. Figure 21.20
      21. Figure 21.21
      22. Figure 21.22
      23. Figure 21.23
      24. Figure 21.24
      25. Figure 21.25
      26. Figure 21.26
      27. Figure 21.27
      28. Figure 21.28
      29. Figure 21.29
      30. Figure 21.30
      31. Figure 21.31
  24. Chapter 22 Implicit Modeling
    1. 22.1 Implicit Functions, Skeletal Primitives, and Summation Blending
      1. 22.1.1 C1 Continuity and the Gradient
      2. 22.1.2 Distance Fields, R-Functions, and F-Reps
      3. 22.1.3 Level Sets
      4. 22.1.4 Variational Implicit Surfaces
      5. 22.1.5 Convolution Surfaces
      6. 22.1.6 Defining Skeletal Primitives
    2. 22.2 Rendering
    3. 22.3 Space Partitioning
      1. 22.3.1 Exhaustive Search
      2. 22.3.2 Algorithm Description
        1. Data Structures
      3. 22.3.3 Polygonization Algorithm
        1. Finding Cube-Surface Intersections
      4. 22.3.4 Sampling Problems
        1. Subdividing a Cube
      5. 22.3.5 Cell Polygonization
    4. 22.4 More on Blending
    5. 22.5 Constructive Solid Geometry
    6. 22.6 Warping
      1. 22.6.1 Twist
      2. 22.6.2 Taper
      3. 22.6.3 Bend
    7. 22.7 Precise Contact Modeling
    8. 22.8 The BlobTree
      1. 22.8.1 Traversing the BlobTree
    9. 22.9 Interactive Implicit Modeling Systems
    10. Exercises
      1. Figure 22.1
      2. Figure 22.2
      3. Figure 22.3
      4. Figure 22.4
      5. Figure 22.5
      6. Figure 22.6
      7. Figure 22.7
      8. Figure 22.8
      9. Figure 22.9
      10. Figure 22.10
      11. Figure 22.11
      12. Figure 22.12
      13. Figure 22.13
      14. Figure 22.14
      15. Figure 22.15
      16. Figure 22.16
      17. Figure 22.17
      18. Figure 22.18
      19. Figure 22.19
      20. Figure 22.20
      21. Figure 22.21
      22. Figure 22.22
      23. Figure 22.23
      24. Figure 22.24
      25. Figure 22.25
      26. Figure 22.26
      27. Figure 22.27
      28. Figure 22.28
      29. Figure 22.29
      30. Figure 22.30
      31. Figure 22.31
  25. Chapter 23 Global Illumination
    1. 23.1 Particle Tracing for Lambertian Scenes
    2. 23.2 Path Tracing
    3. 23.3 Accurate Direct Lighting
      1. 23.3.1 Mathematical Framework
      2. 23.3.2 Sampling a Spherical Luminaire
      3. 23.3.3 Nondiffuse Luminaries
    4. Frequently Asked Questions
    5. Notes
    6. Exercises
      1. Figure 23.1
      2. Figure 23.2
      3. Figure 23.3
      4. Figure 23.4
      5. Figure 23.5
      6. Figure 23.6
      7. Figure 23.7
      8. Figure 23.8
      9. Figure 23.9
  26. Chapter 24 Reflection Models
    1. 24.1 Real-World Materials
      1. 24.1.1 smooth Dielectrics and Metals
      2. 24.1.2 Rough Surfaces
      3. 24.1.3 Diffuse Materials
      4. 24.1.4 Translucent Materials
      5. 24.1.5 Layered Materials
    2. 24.2 Implementing Reflection Models
    3. 24.3 Specular Reflection Models
    4. 24.4 smooth-Layered Model
    5. 24.5 Rough-Layered Model
      1. 24.5.1 Anisotropic Specular BRDF
      2. 24.5.2 Diffuse Term for the Anisotropic Phong Model
      3. 24.5.3 Implementing the Model
    6. Frequently Asked Questions
    7. Notes
    8. Exercises
      1. Figure 24.1
      2. Figure 24.2
      3. Figure 24.3
      4. Figure 24.4
      5. Figure 24.5
      6. Figure 24.6
      7. Figure 24.7
      8. Figure 24.8
  27. Chapter 25 Computer Graphics in Games
    1. 25.1 Platforms
    2. 25.2 Limited Resources
      1. 25.2.1 Processing Time
      2. 25.2.2 Storage
      3. 25.2.3 Development Resources
    3. 25.3 Optimization Techniques
    4. 25.4 Game Types
    5. 25.5 The Game Production Process
      1. 25.5.1 Asset Creation
        1. Initial Modeling
        2. Texturing
        3. Shading
        4. Lighting
        5. Animation
    6. Notes
    7. Exercises
      1. Figure 25.1
      2. Figure 25.2
      3. Figure 25.3
      4. Figure 25.4
      5. Figure 25.5
      6. Figure 25.6
      7. Figure 25.7
      8. Figure 25.8
      9. Figure 25.9
      10. Figure 25.10
      11. Figure 25.11
      12. Figure 25.12
      13. Figure 25.13
      14. Figure 25.14
      15. Figure 25.15
  28. Chapter 26 Visualization
    1. 26.1 Background
      1. 26.1.1 History
      2. 26.1.2 Resource Limitations
    2. 26.2 Data Types
      1. 26.2.1 Dimension and Item Count
      2. 26.2.2 Data Transformation and Derived Dimensions
    3. 26.3 Human-Centered Design Process
      1. 26.3.1 Task Characterization
      2. 26.3.2 Abstraction
      3. 26.3.3 Technique and Algorithm Design
      4. 26.3.4 Validation
    4. 26.4 Visual Encoding Principles
      1. 26.4.1 Visual Channel Characteristics
      2. 26.4.2 Color
      3. 26.4.3 2D vs. 3D Spatial Layouts
      4. 26.4.4 Text Labels
    5. 26.5 Interaction Principles
      1. 26.5.1 Overview First, Zoom and Filter, Details on Demand
      2. 26.5.2 Interactivity Costs
      3. 26.5.3 Animation
    6. 26.6 Composite and Adjacent Views
      1. 26.6.1 Single Drawing
      2. 26.6.2 Superimposing and Layering
      3. 26.6.3 Glyphs
      4. 26.6.4 Multiple Views
    7. 26.7 Data Reduction
      1. 26.7.1 Overviews and Aggregation
      2. 26.7.2 Filtering and Navigation
      3. 26.7.3 Focus+Context
      4. 26.7.4 Dimensionality Reduction
    8. 26.8 Examples
      1. 26.8.1 Tables
      2. 26.8.2 Graphs
      3. 26.8.3 Trees
      4. 26.8.4 Geographic
      5. 26.8.5 Spatial Fields
        1. Frequently Asked Questions
      1. Figure 26.1
      2. Figure 26.2
      3. Figure 26.3
      4. Figure 26.4
      5. Figure 26.5
      6. Figure 26.6
      7. Figure 26.7
      8. Figure 26.8
      9. Figure 26.9
      10. Figure 26.10
      11. Figure 26.11
      12. Figure 26.12
      13. Figure 26.13
      14. Figure 26.14
      15. Figure 26.15
      16. Figure 26.16
      17. Figure 26.17
      18. Figure 26.18
      19. Figure 26.19
      20. Figure 26.20
      21. Figure 26.21
      22. Figure 26.22
      23. Figure 26.23
      24. Figure 26.24
      25. Figure 26.25
      26. Figure 26.26
  29. References