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