
GPU Gems 3
GPU Gems 3 is now available for free online!The CD content, including demos and content, is available on the web and for download.
You can also subscribe to our Developer News Feed to get notifications of new material on the site.
Part I: Geometry

Although pixels and pixel shaders often get the attention, geometry is "where it all starts." Without geometry, we would find lighting, shadows, and reflections quite uninteresting. Why? Because raising the complexity of the underlying geometry also raises the quality of the pixel. Thus the theme for this part of the book could best be described as "complexity," because all its techniques use the GPU to enhance the complexity of the scene in ways that previously required CPU intervention. Most of these approaches are made possible by the recent advances in graphics hardware exposed by DirectX 10, with capabilities like the geometry shader, stream out, and buffer fetches. However, many topics also improve techniques already feasible with previous hardware.
Chapter 1, "Generating Complex Procedural Terrains Using the GPU," approaches geometric complexity from the aspect of procedural generation. Ryan Geiss of NVIDIA Corporation demonstrates how to utilize many of the new hardware capabilities to generate terrain with features typically not seen when procedural synthesis is used. Of particular interest, Geiss suggests how to control procedural terrains to avoid the single largest practical hurdle of procedural generation.
Chapter 4, "Next-Generation SpeedTree Rendering," covers rendering the geometry for another outdoor environment: trees. Alexander Kharlamov, Iain Cantlay, and Yury Stepanenko of NVIDIA concentrate on improving the detail in trees that are relatively close to the viewer. This chapter accounts for all rendering aspects, from enhancing the geometry to improving lighting and shadows.
Expanding the tree theme, Chapter 6, "GPU-Generated Procedural Wind Animations for Trees" by Renaldas Zioma of Electronic Arts/Digital Illusions CE, demonstrates how to upgrade the animation effects of trees. The procedural wind effects allow a developer to take trees beyond the simple rustling that many applications are limited to today for tree animations.
The ability to handle massive amounts of simpler animation is also important for improving complexity. "Animated Crowd Rendering" in Chapter 2 addresses just this need. Here, Bryan Dudash of NVIDIA shows how to utilize DirectX 10 features to animate an entire stadium full of characters while keeping the CPU overhead manageable.
More ideas on improving characters are provided in the chapter on blend shapes, where NVIDIA's Tristan Lorach shows how new hardware capabilities are useful for creating rich animation. Chapter 3, "DirectX 10 Blend Shapes: Breaking the Limits," focuses on the animation techniques used in the "Dawn" demo but updates them to remove the limits placed by previous hardware.
Rendering particular objects such as terrain, characters, and trees is extremely important, but no section on geometry rendering would be complete without a discussion of more-generic techniques like surface rendering. Thankfully, Tamy Boubekeur and Christophe Schlick of LaBRI–INRIA, University of Bordeaux, have provided a chapter on generalized surface rendering with their GAMeR algorithm. Chapter 5, "Generic Adaptive Mesh Refinement," presents a technique that allows GPU acceleration of many surface types.
Finally, in addition to presenting surface techniques, this section offers a chapter on metaballs. Chapter 7, "Point-Based Visualization of Metaballs on a GPU" by Kees van Kooten and Gino van den Bergen of Playlogic Game Factory and Alex Telea of Eindhoven University of Technology, demonstrates an alternative to some more-popular methods of rendering metaballs, with the advantage that their approach can be accomplished completely on the GPU with just Shader Model 3.
With the broad range of topics and target hardware covered in this Geometry section, there is almost certainly something of interest for everyone. Whether the need is to add polish to technology already under development, or to learn how to utilize the new DirectX 10 features to maximize a project, valuable information is presented. Hopefully, you will enjoy reading these chapters as much as I have enjoyed editing them.
Evan Hart, NVIDIA Corporation
- Contributors
- Foreword
- Part I: Geometry
- Chapter 1. Generating Complex Procedural Terrains Using the GPU
- Chapter 2. Animated Crowd Rendering
- Chapter 3. DirectX 10 Blend Shapes: Breaking the Limits
- Chapter 4. Next-Generation SpeedTree Rendering
- Chapter 5. Generic Adaptive Mesh Refinement
- Chapter 6. GPU-Generated Procedural Wind Animations for Trees
- Chapter 7. Point-Based Visualization of Metaballs on a GPU
- Part II: Light and Shadows
- Chapter 10. Parallel-Split Shadow Maps on Programmable GPUs
- Chapter 11. Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders
- Chapter 12. High-Quality Ambient Occlusion
- Chapter 13. Volumetric Light Scattering as a Post-Process
- Chapter 8. Summed-Area Variance Shadow Maps
- Chapter 9. Interactive Cinematic Relighting with Global Illumination
- Part III: Rendering
- Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering
- Chapter 15. Playable Universal Capture
- Chapter 16. Vegetation Procedural Animation and Shading in Crysis
- Chapter 17. Robust Multiple Specular Reflections and Refractions
- Chapter 18. Relaxed Cone Stepping for Relief Mapping
- Chapter 19. Deferred Shading in Tabula Rasa
- Chapter 20. GPU-Based Importance Sampling
- Part IV: Image Effects
- Chapter 21. True Impostors
- Chapter 22. Baking Normal Maps on the GPU
- Chapter 23. High-Speed, Off-Screen Particles
- Chapter 24. The Importance of Being Linear
- Chapter 25. Rendering Vector Art on the GPU
- Chapter 26. Object Detection by Color: Using the GPU for Real-Time Video Image Processing
- Chapter 27. Motion Blur as a Post-Processing Effect
- Chapter 28. Practical Post-Process Depth of Field
- Part V: Physics Simulation
- Chapter 29. Real-Time Rigid Body Simulation on GPUs
- Chapter 30. Real-Time Simulation and Rendering of 3D Fluids
- Chapter 31. Fast N-Body Simulation with CUDA
- Chapter 32. Broad-Phase Collision Detection with CUDA
- Chapter 33. LCP Algorithms for Collision Detection Using CUDA
- Chapter 34. Signed Distance Fields Using Single-Pass GPU Scan Conversion of Tetrahedra
- Chapter 35. Fast Virus Signature Matching on the GPU
- Part VI: GPU Computing
- Chapter 36. AES Encryption and Decryption on the GPU
- Chapter 37. Efficient Random Number Generation and Application Using CUDA
- Chapter 38. Imaging Earth's Subsurface Using CUDA
- Chapter 39. Parallel Prefix Sum (Scan) with CUDA
- Chapter 40. Incremental Computation of the Gaussian
- Chapter 41. Using the Geometry Shader for Compact and Variable-Length GPU Feedback
- Preface