"GPU Gems" edited by Randima Fernando (Addison-Wesley, 2004, ISBN 0-321-22832-4) is a collection of white papers describing techniques and practical applications useful in today's programmable graphical processing units. The full color hardcover text is 816 pages and includes a CD-ROM that includes working demos and source for most of the articles presented in the book. The text retails for $59.99.
The text is divided into six major parts: natural effects, lighting and shadows, materials, image progressing, performance and practicalities, and beyond triangles. Each part has anywhere between 5 to 9 chapters (for an overall total of 42 chapters). The chapters are separate white papers related to the overall part's major topic. For example, the natural effects part contains chapters on water caustics, Perlin noise, creating realistic fire, and diffraction just to name a few.
Generally, each chapter has an introduction, a background with some mathematics, an implementation occasionally with some partial source code, a conclusion, and key references. While a different author writes each chapter, the overall feel of the book is consistent and smooth. The chapters read very similar to a SIGGRAPH paper without as much math or specific detail.
Take for example, the chapter on stereograms - a process by which a 2D image encodes stereo information that when viewed correctly reveals a 3D scene. The chapter has brief background section that includes several helpful color examples. The author discusses how to create such an image using the fragment program capabilities of a GPU using the z-buffer as a depth map and provides a demo program on the CD. Many of the articles follow the same format - enough of a topic to provide understanding, but not enough depth to be comprehensive or fully instructional.
The topics presented are extremely current. Many of the samples provided on the CD required the latest video hardware (GeForce4 or better) and latest drivers to run. The sample programs and demos require shader support, Cg, OpenGL, or the latest version of DirectX to run. On the plus side, the majority of the companion topics included pre-compiled binaries (but not the runtime dynamic link libraries) or an AVI illustrating the subject in addition to the source code. While the CD contains over 600 MB of examples from the text, it provided only 23 of the 42 topics covered in the book. Since most of the articles provide an overview and references to a topic, additional material on the CD would have been beneficial.
The majority of the contributors are from the Nvidia Corporation which causes the book to bias toward their hardware and developer tools. In fact, one of the chapters is featured FX Composer, Nvidia's shader tool. The source code is a mixture of different shader languages from Microsoft's HLSL to Nvidia's Cg - with various authors using whatever was comfortable or convenient. Although the majority of the material presented is applicable to other hardware, it is critical to have a broad understanding of various shader languages if porting to specific hardware is important.
I found the wide range of subjects quite interesting - and was refreshed that the topics actually seemed "ahead of the curve" in terms of hardware requirements. However in order to provide more subject depth, it seemed that the text could have been split into two volumes in order to expand the existing chapters with sufficient depth. As the material is just enough to get one started, the subject treatment may disappoint some readers seeking to apply the clever and unique techniques presented in the book directly or those hoping to use the book as an opportunity to learn some of the advanced features provided in a programming graphical processing unit.