Advanced Graphics Programming Techniques using OpenGL


This course demonstrates sophisticated and novel computer graphics programming techniques. The techniques are implemented in C using the widely available OpenGL library, making it easy for the audience to duplicate the techniques presented.

This course focuses on practical solutions to domain-specific graphics application problems. Emphasis will be on techniques for interactive graphics running on mainstream graphics hardware.

Graphics topics are drawn from the major graphics application areas, including CAD, visual simulation/gaming, image processing, scientific visualization, medical imaging, and special effects.


By attending this course, attendees will strengthen their understanding of both the theory of core computer graphics concepts, by seeing them applied, and the practice of graphics programming techniques, through examples that increase image realism, create special effects, and solve domain specific rendering problems.

They will strengthen analytical skills; learning how to identify and evaluate multiple approaches to solving rendering problems, and to analyze code examples that generate high quality graphics images.

Attendees will gain greater insight into the capabilities of OpenGL itself, and learn how to use OpenGL as a tool to solve challenging rendering problems. Outline

Full day (7 hour) format.

8:30 A.  Introduction (Blythe & McReynolds)
8:35 B.  Basic Techniques (McReynolds)
	  1. Texture Mapping (big-picture view of texture maps, alpha, texenv, envmap)
	  2. Depth Buffering (multipass implications, <= vs <)
	  3. Stenciling (multipass masking, per-pixel image segmentation)
	  4. Alpha Test (per pixel masking; working with textures)
	  5. Blending (Color Space Operations, alpha, blend ops, xor)
9:20 C.  CAD             (Nelson)
          1. Constructive Solid Geometry
          2. Meshing and Tessellation
          3. Improving Numerical Accuracy
	  4. Improved Reflection
10:00 Break
10:15 D. Visual Simulation (Blythe)
          1. Tiling large Textures
          2. Anisotropic Texturing
          3. Developing LOD Models for Geometry
          4. Billboarding
          5. Light Points
11:00 E. Graphics Special Effects (Nelson)
          1. Stencil Dissolves
          2. Compositing
          3. Antialiasing
          4. Motion Blur
          5. Depth of Field
12:00 Lunch 
1:30 F.  Lighting and Shading I (Blythe)
          1. Environment Maps (Sphere, Cube, Parabolic)
          2. Phong Shading
	  3. Fresnel Effects
	  4. Light Maps (Diffuse, Specular, Spot Lights)
	  5. Bump Mapping (Direct computation (light), Tangent-space)
2:15 G.  Technical Visualization (Grantham)
          1. Volume Rendering
          2. Depth & Transparency Cuing
          3. Scalar Field Visualization
          4. Vector Field Visualization
          5. Technical Illustration
3:00 Break
3:15 H.  Lighting and Shading II (McReynolds)
          1. Anisotropic Reflection
	  2. Reflection & Refraction
          3. Shadows (Projection, Shadow Volumes, Shadow Textures)
          4. Transparency
          5. Complex BDRFs using multiple Phong lights
4:00 I.  Simulating Natural Phenomena (Grantham)
          1. Particle Systems
          2. Filtered Noise Images
          3. Smoke
          4. Fire
          5. Clouds
          6. Water
	  7. Precipitation & Lightning
          8. Fog & Haze 
          9. Non-homogeneous effects
5:00 J.  Summary, Question & Answers (variable) (Blythe & McReynolds)

Course Prerequisites

Attendees should have a good working knowledge of computer graphics concepts, particularly lighting and texture mapping, and OpenGL programming experience. A background writing graphics applications using advanced rendering techniques, image processing, or volume rendering is especially desirable.

Intended Audience

Developers who need to generate more challenging or realistic images using OpenGL. Anyone interested in the practical application of advanced rendering techniques. Application developers who desire to use OpenGL with increased understanding and competence. Anyone interested in deeping their knowledge of computer graphics through the use of practical examples.