Cover
Contents
Preface
What’s New in the Third Edition
Contents Overview
Website and Code Listings
Notational Conventions
Chapter 1 The Rendering Pipeline
1.1 Graphics Processors
1.2 Vertex Transformation
1.3 Rasterization and Fragment Operations
Chapter 2 Vectors
2.1 Vector Properties
2.2 The Dot Product
2.3 The Cross Product
2.4 Vector Spaces
Chapter 2 Summary
Exercises for Chapter 2
Chapter 3 Matrices
3.1 Matrix Properties
3.2 Linear Systems
3.3 Matrix Inverses
3.4 Determinants
3.5 Eigenvalues and Eigenvectors
3.6 Diagonalization
Chapter 3 Summary
Exercises for Chapter 3
Chapter 4 Transforms
4.1 Linear Transformations
4.1.1 Orthogonal Matrices
4.1.2 Handedness
4.2 Scaling Transforms
4.3 Rotation Transforms
4.3.1 Rotation About an Arbitrary Axis
4.4 Homogeneous Coordinates
4.4.1 Four-Dimensional Transforms
4.4.2 Points and Directions
4.4.3 Geometrical Interpretation of the w Coordinate
4.5 Transforming Normal Vectors
4.6 Quaternions
4.6.1 Quaternion Mathematics
4.6.2 Rotations with Quaternions
4.6.3 Spherical Linear Interpolation
Chapter 4 Summary
Exercises for Chapter 4
Chapter 5 Geometry for 3D Engines
5.1 Lines in 3D Space
5.1.1 Distance Between a Point and a Line
5.1.2 Distance Between Two Lines
5.2 Planes in 3D Space
5.2.1 Intersection of a Line and a Plane
5.2.2 Intersection of Three Planes
5.2.3 Transforming Planes
5.3 The View Frustum
5.3.1 Field of View
5.3.2 Frustum Planes
5.4 Perspective-Correct Interpolation
5.4.1 Depth Interpolation
5.4.2 Vertex Attribute Interpolation
5.5 Projections
5.5.1 Perspective Projections
5.5.2 Orthographic Projections
5.5.3 Extracting Frustum Planes
5.6 Reflections and Oblique Clipping
Chapter 5 Summary
Exercises for Chapter 5
Chapter 6 Ray Tracing
6.1 Root Finding
6.1.1 Quadratic Polynomials
6.1.2 Cubic Polynomials
6.1.3 Quartic Polynomials
6.1.4 Newton’s Method
6.1.5 Refinement of Reciprocals and Square Roots
6.2 Surface Intersections
6.2.1 Intersection of a Ray and a Triangle
6.2.2 Intersection of a Ray and a Box
6.2.3 Intersection of a Ray and a Sphere
6.2.4 Intersection of a Ray and a Cylinder
6.2.5 Intersection of a Ray and a Torus
6.3 Normal Vector Calculation
6.4 Reflection and Refraction Vectors
6.4.1 Reflection Vector Calculation
6.4.2 Refraction Vector Calculation
Chapter 6 Summary
Exercises for Chapter 6
Chapter 7 Lighting and Shading
7.1 RGB Color
7.2 Light Sources
7.2.1 Ambient Light
7.2.2 Directional Light Sources
7.2.3 Point Light Sources
7.2.4 Spot Light Sources
7.3 Diffuse Reflection
7.4 Specular Reflection
7.5 Texture Mapping
7.5.1 Standard Texture Maps
7.5.2 Projective Texture Maps
7.5.3 Cube Texture Maps
7.5.4 Filtering and Mipmaps
7.6 Emission
7.7 Shading Models
7.7.1 Calculating Normal Vectors
7.7.2 Gouraud Shading
7.7.3 Blinn-Phong Shading
7.8 Bump Mapping
7.8.1 Bump Map Construction
7.8.2 Tangent Space
7.8.3 Calculating Tangent Vectors
7.8.4 Implementation
7.9 A Physical Reflection Model
7.9.1 Bidirectional Reflectance Distribution Functions
7.9.2 Cook-Torrance Illumination
7.9.3 The Fresnel Factor
7.9.4 The Microfacet Distribution Function
7.9.5 The Geometrical Attenuation Factor
7.9.6 Implementation
Chapter 7 Summary
Exercises for Chapter 7
Chapter 8 Visibility Determination
8.1 Bounding Volume Construction
8.1.1 Principal Component Analysis
8.1.2 Bounding Box Construction
8.1.3 Bounding Sphere Construction
8.1.4 Bounding Ellipsoid Construction
8.1.5 Bounding Cylinder Construction
8.2 Bounding Volume Tests
8.2.1 Bounding Sphere Test
8.2.2 Bounding Ellipsoid Test
8.2.3 Bounding Cylinder Test
8.2.4 Bounding Box Test
8.3 Spatial Partitioning
8.3.1 Octrees
8.3.2 Binary Space Partitioning Trees
8.4 Portal Systems
8.4.1 Portal Clipping
8.4.2 Reduced View Frustums
Chapter 8 Summary
Exercises for Chapter 8
Chapter 9 Polygonal Techniques
9.1 Depth Value Offset
9.1.1 Projection Matrix Modification
9.1.2 Offset Value Selection
9.1.3 Implementation
9.2 Decal Application
9.2.1 Decal Mesh Construction
9.2.2 Polygon Clipping
9.3 Billboarding
9.3.1 Unconstrained Quads
9.3.2 Constrained Quads
9.3.3 Polyboards
9.4 Polygon Reduction
9.5 T-Junction Elimination
9.6 Triangulation
Chapter 9 Summary
Exercises for Chapter 9
Chapter 10 Shadows
10.1 Shadow Casting Set
10.2 Shadow Mapping
10.2.1 Rendering the Shadow Map
10.2.2 Rendering the Main Scene
10.2.3 Self-Shadowing
10.3 Stencil Shadows
10.3.1 Algorithm Overview
10.3.2 Infinite View Frustums
10.3.3 Silhouette Determination
10.3.4 Shadow Volume Construction
10.3.5 Determining Cap Necessity
10.3.6 Rendering Shadow Volumes
10.3.7 Scissor Optimization
Chapter 10 Summary
Exercises for Chapter 10
Chapter 11 Curves and Surfaces
11.1 Cubic Curves
11.2 Hermite Curves
11.3 Bézier Curves
11.3.1 Cubic Bézier Curves
11.3.2 Bézier Curve Truncation
11.3.3 The de Casteljau Algorithm
11.4 Catmull-Rom Splines
11.5 Cubic Splines
11.6 B-Splines
11.6.1 Uniform B-Splines
11.6.2 B-Spline Globalization
11.6.3 Nonuniform B-Splines
11.6.4 NURBS
11.7 Bicubic Surfaces
11.8 Curvature and Torsion
Chapter 11 Summary
Exercises for Chapter 11
Chapter 12 Collision Detection
12.1 Plane Collisions
12.1.1 Collision of a Sphere and a Plane
12.1.2 Collision of a Box and a Plane
12.1.3 Spatial Partitioning
12.2 General Sphere Collisions
12.3 Sliding
12.4 Collision of Two Spheres
Chapter 12 Summary
Exercises for Chapter 12
Chapter 13 Linear Physics
13.1 Position Functions
13.2 Second-Order Differential Equations
13.2.1 Homogeneous Equations
13.2.2 Nonhomogeneous Equations
13.2.3 Initial Conditions
13.3 Projectile Motion
13.4 Resisted Motion
13.5 Friction
Chapter 13 Summary
Exercises for Chapter 13
Chapter 14 Rotational Physics
14.1 Rotating Environments
14.1.1 Angular Velocity
14.1.2 The Centrifugal Force
14.1.3 The Coriolis Force
14.2 Rigid Body Motion
14.2.1 Center of Mass
14.2.2 Angular Momentum and Torque
14.2.3 The Inertia Tensor
14.2.4 Principal Axes of Inertia
14.2.5 Transforming the Inertia Tensor
14.3 Oscillatory Motion
14.3.1 Spring Motion
14.3.2 Pendulum Motion
Chapter 14 Summary
Exercises for Chapter 14
Chapter 15 Fluid and Cloth Simulation
15.1 Fluid Simulation
15.1.1 The Wave Equation
15.1.2 Approximating Derivatives
15.1.3 Evaluating Surface Displacement
15.1.4 Implementation
15.2 Cloth Simulation
15.2.1 The Spring System
15.2.2 External Forces
15.2.3 Implementation
Chapter 15 Summary
Exercises for Chapter 15
Chapter 16 Numerical Methods
16.1 Trigonometric Functions
16.2 Linear Systems
16.2.1 Triangular Systems
16.2.2 Gaussian Elimination
16.2.3 LU Decomposition
16.2.4 Error Reduction
16.2.5 Tridiagonal Systems
16.3 Eigenvalues and Eigenvectors
16.4 Ordinary Differential Equations
16.4.1 Euler’s Method
16.4.2 Taylor Series Method
16.4.3 Runge-Kutta Method
16.4.4 Higher-Order Differential Equations
Chapter 16 Summary
Exercises for Chapter 16
Appendix A: Complex Numbers
A.1 Definition
A.2 Addition and Multiplication
A.3 Conjugates and Inverses
A.4 The Euler Formula
Appendix B: Trigonometry Reference
B.1 Function Definitions
B.2 Symmetry and Phase Shifts
B.3 Pythagorean Identities
B.4 Exponential Identities
B.5 Inverse Functions
B.6 Laws of Sines and Cosines
Appendix C: Coordinate Systems
C.1 Cartesian Coordinates
C.2 Cylindrical Coordinates
C.3 Spherical Coordinates
C.4 Generalized Coordinates
Appendix D: Taylor Series
D.1 Derivation
D.2 Power Series
D.3 The Euler Formula
Appendix E: Answers to Exercises
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Chapter 9
Chapter 10
Chapter 11
Chapter 12
Chapter 13
Chapter 14
Chapter 15
Chapter 16
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Z