You are previewing Advanced Graphics Programming Using OpenGL.
O'Reilly logo
Advanced Graphics Programming Using OpenGL

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.
* Code fragments are used in the book, and full blown example programs for virtually every algorithm are available at www.mkp.com/opengl

Table of Contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. The Morgan Kaufmann Series in Computer Graphics and Geometric Modeling
  5. Copyright
  6. Dedication
  7. Preface
  8. Acknowledgments
  9. Biographies
  10. PART I: Concepts
    1. Chapter 1: Geometry Representation and Modeling
      1. 1.1 Polygonal Representation
      2. 1.2 Decomposition and Tessellation
      3. 1.3 Shading Normals
      4. 1.4 Triangle Stripping
      5. 1.5 Vertices and Vertex Arrays
      6. 1.6 Modeling vs. Rendering Revisited
    2. Chapter 2: 3D Transformations
      1. 2.1 Data Representation
      2. 2.2 Overview of the Transformation Pipeline
      3. 2.3 Normal Transformation
      4. 2.4 Texture Coordinate Generation and Transformation
      5. 2.5 Modeling Transforms
      6. 2.6 Visualizing Transform Sequences
      7. 2.7 Projection Transform
      8. 2.8 The Z Coordinate and Perspective Projection
      9. 2.9 Vertex Programs
      10. 2.10 Summary
    3. Chapter 3: Color, Shading, and Lighting
      1. 3.1 Representing Color
      2. 3.2 Shading
      3. 3.3 Lighting
      4. 3.4 Fixed-Point and Floating-Point Arithmetic
      5. 3.5 Summary
    4. Chapter 4: Digital Images and Image Manipulation
      1. 4.1 Image Representation
      2. 4.2 Digital Filtering
      3. 4.3 Convolution
      4. 4.4 Images in OpenGL
      5. 4.5 Positioning Images
      6. 4.6 Pixel Store Operations
      7. 4.7 Pixel Transfer Operations
      8. 4.8 ARB Imaging Subset
      9. 4.9 Off-Screen Processing
      10. 4.10 Summary
    5. Chapter 5: Texture Mapping
      1. 5.1 Loading Texture Images
      2. 5.2 Texture Coordinates
      3. 5.3 Loading Texture Images from the Frame Buffer
      4. 5.4 Environment Mapping
      5. 5.5 3D Texture
      6. 5.6 Filtering
      7. 5.7 Additional Control of Texture Level of Detail
      8. 5.8 Texture Objects
      9. 5.9 Multitexture
      10. 5.10 Texture Environment
      11. 5.11 Summary
    6. Chapter 6: Rasterization and Fragment Processing
      1. 6.1 Rasterization
      2. 6.2 Fragment Operations
      3. 6.3 Framebuffer Operations
      4. 6.4 Summary
    7. Chapter 7: Window System and Platform Integration
      1. 7.1 Renderer and Window State
      2. 7.2 Address Space and Threads
      3. 7.3 Anatomy of a Window
      4. 7.4 Off-Screen Rendering
      5. 7.5 Rendering to Texture Maps
      6. 7.6 Direct and Indirect Rendering
    8. Chapter 8: OpenGL Implementations
      1. 8.1 OpenGL Versions
      2. 8.2 OpenGL Extensions
      3. 8.3 OpenGL ES for Embedded Systems
      4. 8.4 OpenGL Pipeline Evolution
      5. 8.5 Hardware Implementations of the Pipeline
      6. 8.6 The Future
  11. PART II: Basic Techniques
    1. Chapter 9: Multiple Rendering Passes
      1. 9.1 Invariance
      2. 9.2 Multipass Overview
      3. 9.3 The Multipass Toolbox
      4. 9.4 Multipass Limitations
      5. 9.5 Multipass vs. Micropass
      6. 9.6 Deferred Shading
      7. 9.7 Summary
    2. Chapter 10: Antialiasing
      1. 10.1 Full-Scene Antialiasing
      2. 10.2 Supersampling
      3. 10.3 Area Sampling
      4. 10.4 Line and Point Antialiasing
      5. 10.5 Antialiasing with Textures
      6. 10.6 Polygon Antialiasing
      7. 10.7 Temporal Antialiasing
      8. 10.8 Summary
    3. Chapter 11: Compositing, Blending, and Transparency
      1. 11.1 Combining Two Images
      2. 11.2 Other Compositing Operators
      3. 11.3 Keying and Matting
      4. 11.4 Blending Artifacts
      5. 11.5 Compositing Images with Depth
      6. 11.6 Other Blending Operations
      7. 11.7 Dissolves
      8. 11.8 Transparency
      9. 11.9 Alpha-Blended Transparency
      10. 11.10 Screen-Door Transparency
      11. 11.11 Summary
    4. Chapter 12: Image Processing Techniques
      1. 12.1 OpenGL Imaging Support
      2. 12.2 Image Storage
      3. 12.3 Point Operations
      4. 12.4 Region-based Operations
      5. 12.5 Reduction Operations
      6. 12.6 Convolution
      7. 12.7 Geometric Operations
      8. 12.8 Image-Based Depth of Field
      9. 12.9 High-Dynamic Range Imaging
      10. 12.10 Summary
    5. Chapter 13: Basic Transform Techniques
      1. 13.1 Computing Inverse Transforms Efficiently
      2. 13.2 Stereo Viewing
      3. 13.3 Depth of Field
      4. 13.4 Image Tiling
      5. 13.5 Billboarding Geometry
      6. 13.6 Texture Coordinate vs. Geometric Transformations
      7. 13.7 Interpolating Vertex Components through a Perspective Transformation
      8. 13.8 Summary
    6. Chapter 14: Texture Mapping Techniques
      1. 14.1 Loading Texture Images into a Framebuffer
      2. 14.2 Optimizing Texture Coordinate Assignment
      3. 14.3 3D Textures
      4. 14.4 Texture Mosaics
      5. 14.5 Texture Tiling
      6. 14.6 Texture Paging
      7. 14.7 Prefiltered Textures
      8. 14.8 Dual-Paraboloid Environment Mapping
      9. 14.9 Texture Projection
      10. 14.10 Texture Color Coding and Contouring
      11. 14.11 2D Image Warping
      12. 14.12 Texture Animation
      13. 14.13 Detail Textures
      14. 14.14 Texture Sharpening
      15. 14.15 Mipmap Generation
      16. 14.16 Texture Map Limits
      17. 14.17 Summary
    7. Chapter 15: Lighting Techniques
      1. 15.1 Limitations in Vertex Lighting
      2. 15.2 Fragment Lighting Using Texture Mapping
      3. 15.3 Spotlight Effects Using Projective Textures
      4. 15.4 Specular Lighting Using Environment Maps
      5. 15.5 Light Maps
      6. 15.6 BRDF-based Lighting
      7. 15.7 Reflectance Maps
      8. 15.8 Per-fragment Lighting Computations
      9. 15.9 Other Lighting Models
      10. 15.10 Bump Mapping with Textures
      11. 15.11 Normal Maps
      12. 15.12 Bump-mapped Reflections
      13. 15.13 High Dynamic Range Lighting
      14. 15.14 Global Illumination
      15. 15.15 Summary
  12. PART III: Advanced Techniques
    1. Chapter 16: CAD and Modeling Techniques
      1. 16.1 Picking and Highlighting
      2. 16.2 Culling Techniques
      3. 16.3 Occlusion Culling
      4. 16.4 Geometric Level of Detail
      5. 16.5 Visualizing Surface Orientation
      6. 16.6 Visualizing Surface Curvature
      7. 16.7 Line Rendering Techniques
      8. 16.8 Coplanar Polygons and Decaling
      9. 16.9 Capping Clipped Solids
      10. 16.10 Constructive Solid Geometry
    2. Chapter 17: Scene Realism
      1. 17.1 Reflections
      2. 17.2 Refraction
      3. 17.3 Creating Environment Maps
      4. 17.4 Shadows
      5. 17.5 Summary
    3. Chapter 18: Natural Detail
      1. 18.1 Particle Systems
      2. 18.2 Dynamic Meshes
      3. 18.3 Procedural Texture Generation
      4. 18.4 Summary
    4. Chapter 19: Illustration and Artistic Techniques
      1. 19.1 Projections for Illustration
      2. 19.2 Nonphotorealistic Lighting Models
      3. 19.3 Edge Lines
      4. 19.4 Cutaway Views
      5. 19.5 Depth Cuing
      6. 19.6 Patterns and Hatching
      7. 19.7 2D Drawing Techniques
      8. 19.8 Text Rendering
      9. 19.9 Drawing and Painting
      10. 19.10 Summary
    5. Chapter 20: Scientific Visualization
      1. 20.1 Mapping Numbers to Pictures
      2. 20.2 Visual Cues and Perception
      3. 20.3 Data Characterization
      4. 20.4 Point Data Visualization
      5. 20.5 Scalar Field Visualization
      6. 20.6 Vector Field Visualization
      7. 20.7 Tensor Field Visualization
      8. 20.8 Summary
    6. Chapter 21: Structuring Applications for Performance
      1. 21.1 Structuring Graphics Processing
      2. 21.2 Managing Frame Time
      3. 21.3 Application Performance Tuning
      4. 21.4 Summary
  13. Using OpenGL Extensions
  14. Equations
  15. Bibliography
  16. Subject Index