Book Description
Today truly useful and interactive graphics are available on affordable computers. While hardware progress has been impressive, widespread gains in software expertise have come more slowly. Information about advanced techniques—beyond those learned in introductory computer graphics texts—is not as easy to come by as inexpensive hardware.
This book brings the graphics programmer beyond the basics and introduces them to advanced knowledge that is hard to obtain outside of an intensive CG work environment. The book is about graphics techniques—those that don’t require esoteric hardware or custom graphics libraries—that are written in a comprehensive style and do useful things. It covers graphics that are not covered well in your old graphics textbook. But it also goes further, teaching you how to apply those techniques in real world applications, filling real world needs.- Emphasizes the algorithmic side of computer graphics, with a practical application focus, and provides usable techniques for real world problems.
- Serves as an introduction to the techniques that are hard to obtain outside of an intensive computer graphics work environment.
- Sophisticated and novel programming techniques are implemented in C using the OpenGL library, including coverage of color and lighting; texture mapping; blending and compositing; antialiasing; image processing; special effects; natural phenomena; artistic and non-photorealistic techniques, and many others.
Table of Contents
- Cover image
- Title page
- Table of Contents
- The Morgan Kaufmann Series in Computer Graphics and Geometric Modeling
- Copyright
- Dedication
- Preface
- Acknowledgments
- Biographies
- PART I: Concepts
- Chapter 1: Geometry Representation and Modeling
- 1.1 Polygonal Representation
- 1.2 Decomposition and Tessellation
- 1.3 Shading Normals
- 1.4 Triangle Stripping
- 1.5 Vertices and Vertex Arrays
- 1.6 Modeling vs. Rendering Revisited
- Chapter 2: 3D Transformations
- 2.1 Data Representation
- 2.2 Overview of the Transformation Pipeline
- 2.3 Normal Transformation
- 2.4 Texture Coordinate Generation and Transformation
- 2.5 Modeling Transforms
- 2.6 Visualizing Transform Sequences
- 2.7 Projection Transform
- 2.8 The Z Coordinate and Perspective Projection
- 2.9 Vertex Programs
- 2.10 Summary
- Chapter 3: Color, Shading, and Lighting
- 3.1 Representing Color
- 3.2 Shading
- 3.3 Lighting
- 3.4 Fixed-Point and Floating-Point Arithmetic
- 3.5 Summary
- Chapter 4: Digital Images and Image Manipulation
- 4.1 Image Representation
- 4.2 Digital Filtering
- 4.3 Convolution
- 4.4 Images in OpenGL
- 4.5 Positioning Images
- 4.6 Pixel Store Operations
- 4.7 Pixel Transfer Operations
- 4.8 ARB Imaging Subset
- 4.9 Off-Screen Processing
- 4.10 Summary
- Chapter 5: Texture Mapping
- 5.1 Loading Texture Images
- 5.2 Texture Coordinates
- 5.3 Loading Texture Images from the Frame Buffer
- 5.4 Environment Mapping
- 5.5 3D Texture
- 5.6 Filtering
- 5.7 Additional Control of Texture Level of Detail
- 5.8 Texture Objects
- 5.9 Multitexture
- 5.10 Texture Environment
- 5.11 Summary
- Chapter 6: Rasterization and Fragment Processing
- 6.1 Rasterization
- 6.2 Fragment Operations
- 6.3 Framebuffer Operations
- 6.4 Summary
- Chapter 7: Window System and Platform Integration
- 7.1 Renderer and Window State
- 7.2 Address Space and Threads
- 7.3 Anatomy of a Window
- 7.4 Off-Screen Rendering
- 7.5 Rendering to Texture Maps
- 7.6 Direct and Indirect Rendering
- Chapter 8: OpenGL Implementations
- 8.1 OpenGL Versions
- 8.2 OpenGL Extensions
- 8.3 OpenGL ES for Embedded Systems
- 8.4 OpenGL Pipeline Evolution
- 8.5 Hardware Implementations of the Pipeline
- 8.6 The Future
- PART II: Basic Techniques
- Chapter 9: Multiple Rendering Passes
- 9.1 Invariance
- 9.2 Multipass Overview
- 9.3 The Multipass Toolbox
- 9.4 Multipass Limitations
- 9.5 Multipass vs. Micropass
- 9.6 Deferred Shading
- 9.7 Summary
- Chapter 10: Antialiasing
- 10.1 Full-Scene Antialiasing
- 10.2 Supersampling
- 10.3 Area Sampling
- 10.4 Line and Point Antialiasing
- 10.5 Antialiasing with Textures
- 10.6 Polygon Antialiasing
- 10.7 Temporal Antialiasing
- 10.8 Summary
- Chapter 11: Compositing, Blending, and Transparency
- 11.1 Combining Two Images
- 11.2 Other Compositing Operators
- 11.3 Keying and Matting
- 11.4 Blending Artifacts
- 11.5 Compositing Images with Depth
- 11.6 Other Blending Operations
- 11.7 Dissolves
- 11.8 Transparency
- 11.9 Alpha-Blended Transparency
- 11.10 Screen-Door Transparency
- 11.11 Summary
- Chapter 12: Image Processing Techniques
- 12.1 OpenGL Imaging Support
- 12.2 Image Storage
- 12.3 Point Operations
- 12.4 Region-based Operations
- 12.5 Reduction Operations
- 12.6 Convolution
- 12.7 Geometric Operations
- 12.8 Image-Based Depth of Field
- 12.9 High-Dynamic Range Imaging
- 12.10 Summary
- Chapter 13: Basic Transform Techniques
- 13.1 Computing Inverse Transforms Efficiently
- 13.2 Stereo Viewing
- 13.3 Depth of Field
- 13.4 Image Tiling
- 13.5 Billboarding Geometry
- 13.6 Texture Coordinate vs. Geometric Transformations
- 13.7 Interpolating Vertex Components through a Perspective Transformation
- 13.8 Summary
- Chapter 14: Texture Mapping Techniques
- 14.1 Loading Texture Images into a Framebuffer
- 14.2 Optimizing Texture Coordinate Assignment
- 14.3 3D Textures
- 14.4 Texture Mosaics
- 14.5 Texture Tiling
- 14.6 Texture Paging
- 14.7 Prefiltered Textures
- 14.8 Dual-Paraboloid Environment Mapping
- 14.9 Texture Projection
- 14.10 Texture Color Coding and Contouring
- 14.11 2D Image Warping
- 14.12 Texture Animation
- 14.13 Detail Textures
- 14.14 Texture Sharpening
- 14.15 Mipmap Generation
- 14.16 Texture Map Limits
- 14.17 Summary
- Chapter 15: Lighting Techniques
- 15.1 Limitations in Vertex Lighting
- 15.2 Fragment Lighting Using Texture Mapping
- 15.3 Spotlight Effects Using Projective Textures
- 15.4 Specular Lighting Using Environment Maps
- 15.5 Light Maps
- 15.6 BRDF-based Lighting
- 15.7 Reflectance Maps
- 15.8 Per-fragment Lighting Computations
- 15.9 Other Lighting Models
- 15.10 Bump Mapping with Textures
- 15.11 Normal Maps
- 15.12 Bump-mapped Reflections
- 15.13 High Dynamic Range Lighting
- 15.14 Global Illumination
- 15.15 Summary
- PART III: Advanced Techniques
- Chapter 16: CAD and Modeling Techniques
- 16.1 Picking and Highlighting
- 16.2 Culling Techniques
- 16.3 Occlusion Culling
- 16.4 Geometric Level of Detail
- 16.5 Visualizing Surface Orientation
- 16.6 Visualizing Surface Curvature
- 16.7 Line Rendering Techniques
- 16.8 Coplanar Polygons and Decaling
- 16.9 Capping Clipped Solids
- 16.10 Constructive Solid Geometry
- Chapter 17: Scene Realism
- 17.1 Reflections
- 17.2 Refraction
- 17.3 Creating Environment Maps
- 17.4 Shadows
- 17.5 Summary
- Chapter 18: Natural Detail
- 18.1 Particle Systems
- 18.2 Dynamic Meshes
- 18.3 Procedural Texture Generation
- 18.4 Summary
- Chapter 19: Illustration and Artistic Techniques
- 19.1 Projections for Illustration
- 19.2 Nonphotorealistic Lighting Models
- 19.3 Edge Lines
- 19.4 Cutaway Views
- 19.5 Depth Cuing
- 19.6 Patterns and Hatching
- 19.7 2D Drawing Techniques
- 19.8 Text Rendering
- 19.9 Drawing and Painting
- 19.10 Summary
- Chapter 20: Scientific Visualization
- 20.1 Mapping Numbers to Pictures
- 20.2 Visual Cues and Perception
- 20.3 Data Characterization
- 20.4 Point Data Visualization
- 20.5 Scalar Field Visualization
- 20.6 Vector Field Visualization
- 20.7 Tensor Field Visualization
- 20.8 Summary
- Chapter 21: Structuring Applications for Performance
- 21.1 Structuring Graphics Processing
- 21.2 Managing Frame Time
- 21.3 Application Performance Tuning
- 21.4 Summary
- Using OpenGL Extensions
- Equations
- Bibliography
- Subject Index