Next:
List of Figures
Up:
Programming with OpenGL: Advanced
Previous:
Programming with OpenGL: Advanced
Contents
List of Figures
12.3.1 Introduction
1.1 Acknowledgments
1.2 Course Notes Web Site
2 About OpenGL
3 Modelling
3.1 Modelling Considerations
3.2 Decomposition and Tessellation
3.3 Capping Clipped Solids with the Stencil Buffer
3.4 Constructive Solid Geometry with the Stencil Buffer
4 Geometry and Transformations
4.1 Stereo Viewing
4.1.1 Fusion Distance
4.1.2 Computing the Transforms
4.1.3 Rotate vs. Shear
9.2 Depth of Field
4.3 The Z Coordinate and Perspective Projection
4.3.1 Depth Buffering
4.4 Image Tiling
4.5 Moving the Current Raster Position
5 Texture Mapping
5.1 Review
5.1.1 Filtering
5.1.2 Texture Environment
5.2 MIPmap Generation
5.3 View Dependent Filtering
5.4 Fine Tuning
5.5 Paging Textures
5.6 Transparency Mapping and Trimming with Alpha
5.7 Billboards
5.8 Rendering Text
5.9 Projective Textures
5.10 Environment Mapping
5.11 Image Warping and Dewarping
5.12 3D Textures
5.12.1 Using 3D Textures
3D Textures vs. MIPmaps
5.12.2 3D Texture Portability
5.12.3 3D Textures to Render Solid Materials
5.12.4 3D Textures as Multidimensional Functions
5.13 Procedural Texture Generation
5.13.1 Filtered Noise Functions
5.13.2 Generating Noise Functions
5.13.3 High Resolution Filtering
5.13.4 Spectral Synthesis
5.13.5 Other Noise Functions
5.13.6 Turbulence
5.13.7 Example: Image Warping
5.13.8 Generating 3D Noise
5.13.9 Generating 2D Noise to Simulate 3D Noise
Trade-offs Between 3D and 2D Techniques
8.4 Blending
6.1 Compositing
6.2 Advanced Blending
6.3 Painting
6.4 Blending with the Accumulation Buffer
7 Antialiasing
7.1 Antialiasing Points and Lines
7.2 Polygon Antialiasing
7.3 Multisampling
7.4 Antialiasing With Textures
7.5 Antialiasing with Accumulation Buffer
8 Lighting
8.1 Phong Shading
8.1.1 Phong Highlights with Texture
8.1.2 Spotlight Effects using Projective Textures
8.1.3 Phong shading by Adaptive Tessellation
8.2 Light Maps
8.2.1 2D Texture Light Maps
8.2.2 3D Texture Light Maps
8.3 Bump Mapping with Textures
8.3.1 Tangent Space
8.3.2 Going for higher quality
Blending
8.4.1 Why does this work?
8.4.2 Limitations
8.5 Choosing Material Properties
8.5.1 Modeling Material Type
Dielectrics
Metals
Composite Materials
Other Materials
8.5.2 Modeling Material Smoothness
9 Scene Realism
9.1 Motion Blur
Depth of Field
9.3 Reflections and Refractions
9.3.1 Planar Reflectors
Planar Reflections and Refractions using the Stencil Buffer
Planar Reflections using Texture Mapping
Interreflections
9.3.2 Sphere Mapping
Using a Sphere Map
Generating a Sphere Map for Specular Reflection
Multipass Techniques and Interreflections
Other Sphere Mapping Techniques
Limitations of Sphere Mapping
9.4 Creating Shadows
9.4.1 Projection Shadows
Projection Shadow Trade-offs
9.4.2 Shadow Volumes
Multiple Light Sources
Shadow Volume Trade-offs
9.4.3 Shadow Maps
Shadow Map Trade-offs
9.4.4 Soft Shadows by Jittering Lights
9.4.5 Soft Shadows Using Textures
10 Transparency
Screen-Door Transparency
10.2 Alpha Blending
10.3 Sorting
10.4 Using the Alpha Function
10.5 Using Multisampling
11 Natural Phenomena
11.1 Smoke
11.2 Vapor Trails
11.3 Fire
11.4 Clouds
11.5 Water
11.6 Light Points
11.7 Other Atmospheric Effects
12 Image Processing
Introduction
12.1.1 The Pixel Transfer Pipeline
12.1.2 Geometric Drawing and Texturing
The Frame Buffer and Per-Fragment Operations
12.2 Colors and Color Spaces
12.2.1 The Accumulation Buffer: Interpolation and Extrapolation
12.2.2 Pixel Scale and Bias Operations
Look-Up Tables
Pixel Maps
The Color Table Extension
The Texture Color Table Extension
The Pixel Texture Extension
Equivalent Functionality Without
SGIX_pixel_texture
12.2.4 The Color Matrix Extension
Equivalent Functionality Without
SGI_color_matrix
Scale and Bias
Conversion to Luminance
Modifying Saturation
Hue Rotation
CMY Conversion
YIQ Conversion
12.3 Convolutions
Introduction
12.3.2 The Convolution Operation
Two-Dimensional Convolutions
Separable Filters
12.3.3 Convolutions Using the Accumulation Buffer
12.3.4 The Convolution Extension
12.3.5 Useful Convolution Filters
Line detection
Horizontal Edges
Vertical Edges
Left Diagonal Edges
Right Diagonal Edges
Gradient Detection (Embossing)
North
West
East
South
Northeast
Smoothing and Blurring
Arithmetic Mean
Basic Smooth: 3x3
Basic Smooth: 5x5
High-pass Filters
Basic High-Pass Filter: 3x3
Basic High-Pass Filter: 5x5
Laplacian Filter
Sobel Filter
Horizontal
Vertical
12.4 Image Warping
12.4.1 The Pixel Zoom Operation
12.4.2 Warps Using Texture Mapping
Line Integral Convolution
13 Volume Visualization with Texture
13.1 Overview of the Technique
13.2 3D Texture Volume Rendering
13.3 2D Texture Volume Rendering
13.4 Blending Operators
13.4.1 Over
13.4.2 Attenuate
13.4.3 MIP
13.4.4 Under
13.5 Sampling Frequency
13.6 Shrinking the Volume Image
13.7 Virtualizing Texture Memory
13.8 Mixing Volumetric and Geometric Objects
13.9 Transfer Functions
13.10 Volume Cutting Planes
13.11 Shading the Volume
13.12 Warped Volumes
14 Using the Stencil Buffer
14.1 Dissolves with Stencil
14.2 Decaling with Stencil
14.3 Finding Depth Complexity with the Stencil Buffer
14.4 Compositing Images with Depth
15 Line Rendering Techniques
15.1 Hidden Lines
15.2 Haloed Lines
15.3 Silhouette Edges
16 Tuning Your OpenGL Application
16.1 What Is Pipeline Tuning?
Three-Stage Model of the Graphics Pipeline
16.1.2 Finding Bottlenecks in Your Application
Application bottlenecks.
Geometry bottlenecks.
Rasterization bottlenecks.
16.1.3 Factors Influencing Performance
16.2 Optimizing Your Application Code
16.2.1 Optimize Cache and Memory Usage
Minimizing Cache Misses.
16.2.2 Store Data in a Format That is Efficient for Rendering
Minimizing State Changes.
Per-Platform Tuning
16.3 Tuning the Geometry Subsystem
16.3.1 Use Expensive Modes Efficiently
16.3.2 Optimizing Transformations
16.3.3 Optimizing Lighting Performance
Advanced Geometry-Limited Tuning Techniques
16.4 Tuning the Raster Subsystem
16.4.1 Using Backface/Frontface Removal
Minimizing Per-Pixel Calculations
Avoid Unnecessary Per-Fragment Operations.
Use Simple Fill Algorithms for Large Polygons.
Use the Depth Buffer Efficiently.
16.4.3 Optimizing Texture Mapping
16.4.4 Clearing the Color and Depth Buffers Simultaneously
16.5 Rendering Geometry Efficiently
Using Peak-Performance Primitives
16.5.2 Using Vertex Arrays
16.5.3 Using Display Lists
16.5.4 Balancing Polygon Size and Pixel Operations
16.6 Rendering Images Efficiently
16.7 Tuning Animation
16.7.1 Factors Contributing to Animation Speed
16.7.2 Optimizing Frame Rate Performance
16.8 Taking Timing Measurements
16.8.1 Benchmarking Basics
16.8.2 Achieving Accurate Timing Measurements
16.8.3 Achieving Accurate Benchmarking Results
17 List of Demo Programs
18 Equation Appendix
18.1 Projection Matrices
18.1.1 Perspective Projection
18.1.2 Orthographic Projection
18.2 Lighting Equations
18.2.1 Attenuation Factor
18.2.2 Spotlight Effect
18.2.3 Ambient Term
18.2.4 Diffuse Term
18.2.5 Specular Term
18.2.6 Putting It All Together
19 References
References
About this document ...
David Blythe
Thu Jul 17 21:24:28 PDT 1997