Next:
List of Figures
Up:
Advanced Graphics Programming Techniques
Previous:
Advanced Graphics Programming Techniques
Contents
List of Figures
12.3.1 Introduction
1.1 OpenGL Version
1.2 Course Notes and Slide Set Organization
1.3 Acknowledgments
1.4 Acknowledgments for 1997 Course Notes
1.5 Course Notes Web Site
2 About OpenGL
3 Modeling
3.1 Modeling Considerations
3.2 Decomposition and Tessellation
3.3 Generating Model Normals
3.3.1 Consistent Vertex Winding
3.3.2 Smooth Shading
Triangle-stripping
Greedy Tri-stripping
3.5 Capping Clipped Solids with the Stencil Buffer
3.6 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
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
4.6 Preventing Clipping of Wide Lines and Points
4.7 Distortion Correction
5 Texture Mapping
5.1 Review
5.1.1 Filtering
5.1.2 Texture Environment
5.2 Mipmap Generation
5.3 Texture Map Limits
5.4 Anisotropic Texture Filtering
5.5 Paging Textures
5.5.1 Texture Subloading
5.5.2 Paging Images in System Memory
5.6 Transparency Mapping and Trimming with Alpha
5.7 Billboards
5.8 Rendering Text
5.9 Texture Mosaicing
5.10 Texture Coordinate Generation
5.11 Color Coding and Contouring
5.12 Annotating Metrics
5.13 Projective Textures
5.13.1 How to Project a Texture
5.14 Environment Mapping
5.15 Image Warping and Dewarping
5.16 3D Textures
5.16.1 Using 3D Textures
3D Textures vs. Mipmaps
5.16.2 3D Textures to Render Solid Materials
5.16.3 3D Textures as Multidimensional Functions
5.17 Line Integral Convolution (LIC) with Texture
5.17.1 Sampling
5.17.2 Using OpenGL to Create Line Integral Convolution (LIC) Images
5.17.3 Line Integral Convolution Procedure
5.17.4 Details
5.17.5 Maximizing Contrast
5.17.6 Going Farther
5.18 Detail Textures
5.18.1 Signed Intensity Detail Textures
5.18.2 Making Detail Textures
5.19 Gradual Cutaway Views
5.19.1 Steps to Generating a Cutaway Shell
5.19.2 Refinements
5.19.3 Rendering a Surface Textured Shell
5.19.4 Alpha Buffer Approach
5.19.5 No Alpha Buffer Approach
5.20 Procedural Texture Generation
5.20.1 Filtered Noise Functions
5.20.2 Generating Noise Functions
5.20.3 High Resolution Filtering
5.20.4 Spectral Synthesis
5.20.5 Other Noise Functions
5.20.6 Turbulence
5.20.7 Example: Image Warping
5.20.8 Generating 3D Noise
5.20.9 Generating 2D Noise to Simulate 3D Noise
Trade-offs Between 3D and 2D Techniques
8.5.3 Blending
6.1 Compositing
6.2 Advanced Blending
6.3 Painting
6.4 Blending with the Accumulation Buffer
6.5 Blending Transitions
11.9.4 Antialiasing
7.1 Line and Point Antialiasing
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 Improved Highlight Shape
8.1.3 Spotlight Effects using Projective Textures
8.1.4 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 Other Lighting Models
8.4 Global Illumination
8.5 Bump Mapping with Textures
8.5.1 Tangent Space
8.5.2 Going for Higher Quality
Blending
8.5.4 Why Does This Work?
8.5.5 Limitations
8.6 Choosing Material Properties
8.6.1 Modeling Material Type
Dielectrics
Metals
Composite Materials
Other Materials
8.6.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 Explosions
11.5 Clouds
11.6 Water
11.7 Light Points
11.8 Other Atmospheric Effects
11.9 Particle Systems
11.9.1 Representing Particles
11.9.2 Particle Sizes
11.9.3 Large and Small Points
Antialiasing
11.9.5 ``Fat'' Particles
11.9.6 Particle Systems in a Scene
11.10 Precipitation
12 Image Processing
Introduction
12.1.1 The Pixel Transfer Pipeline
12.1.2 Geometric Drawing and Texturing
The Framebuffer and Per-Fragment Operations
12.1.4 The Imaging Subset in OpenGL 1.2
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.3.6 Correlation and Feature Detection
12.4 Image Warping
12.4.1 The Pixel Zoom Operation
12.4.2 Warps Using Texture Mapping
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 Maximum Intensity Projection
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 Wireframe Models
15.2 Hidden Lines
15.2.1 glPolygonOffset
15.2.2 glDepthRange
15.3 Haloed Lines
15.4 Silhouette Edges
15.5 Preventing Smooth Wide Line Overlap
15.6 End Caps On Wide Lines
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.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 Portability Considerations
17.1 General Concerns
17.1.1 Handle Runtime Feature Availability Carefully
17.1.2 Extensions and OpenGL Versioning
17.1.3 Source Compatibility Across OpenGL SDKs
17.1.4 Characterize Platform Performance
17.2 Windows versus UNIX
17.3 3D Texture Portability
18 List of Demo Programs
19 GLUT, the OpenGL Utility Toolkit
20 Equations
20.1 Projection Matrices
20.1.1 Perspective Projection
20.1.2 Orthographic Projection
Perspective z-Coordinate Transformations
20.2 Lighting Equations
20.2.1 Attenuation Factor
20.2.2 Spotlight Effect
20.2.3 Ambient Term
20.2.4 Diffuse Term
20.2.5 Specular Term
20.2.6 Putting It All Together
21 References
References
About this document ...