Book Review: Graphics Programming Methods
March 23, 2004
Graphics Programming Methods is another quality entry in the popular “Graphics” series from Charles River Media. The editor, Jeff Lander, who a few months ago wrapped up work on True Crime, (Activision) has been a long-time contributor to Game Developer magazine and one of the editors for the Game Programming Gems series, evidence that he is both really busy and has the engineering kung fu to compile books like this.
The archetypal Graphics Programming Methods presents its collection of thirty-four articles and whitepapers, all from industry veterans—several names I recognize and several more names I’ve worked with at various times in the past—on three distinct subjects of Animation, Geometry, and Rendering. Jeff Lander introduces each subject area where he covers some of the problems game industry engineers are facing and the state of the art of where we are today.
The individual articles are generally well written, self-evidently focused on a particular problem, yet not so constricted as to only be applicable to one particular development project. From having read many other graphics methods books, I find Lander did a particularly good job of selecting articles that have not been covered in those other books. While many of the articles in the individual sections complement each other, there is very little overlap either between themselves, or with other books.
Some of the articles are heavy on the math, so if you aren’t completely comfortable with linear algebra and calculus you may find some difficult to grasp—especially those concerning animation. There aren’t any new areas of math that game industry engineers haven’t been dealing with for years, but if you are new to the area it may devalue the book for you slightly.
The table of contents provides a few “stop and think” moments with the article titles, e.g. “Resolution of the Inverse Kinematic of an Articulated Structure Using the Jacobian Pseudo-Inverse”–titles where the author attempted to convey the subject matter of their article, and managed to completely obscure the fact by giving it such a wordy label. Upon first picking up the book, I was glad to see that the list of articles is most definitely not the usual “twenty different ways to skin a cat” applied to particle rendering or texture mapping.
Of the three sections in this book, I would have to say the Rendering section introduces the most new concepts and provides the most value. This isn’t to belittle the efforts of the contributors in the other sections, as every individual article is worth the price of the book. The Rendering section just stands out as one of the better collection of articles that I have come across, with the articles on illumination determination and illumination-based occlusion culling introducing ideas that can mean the difference between a low and high frame rate.
I’m currently teaching classes on how to implement animation systems, so the Animation section is immediately relevant to my students and I. The book really came along at a handy time as a collection that I can recommend. The articles covering “Real-Time Animation of Trees” and “Real-Time Multi-Resolution Dynamics of Deeply Hierarchical Bodies” (also applicable to trees) were useful and to the point for one particular lesson. The article covering “Collision Detection of Deformable Volumetric Meshes” I find to be interesting not only because I covered some of this subject as part of my undergrad project, but also because it will be one of the huge problems in the coming decade as our graphics hardware gets more powerful and environments become ever more realistic.
In the back of the book is a CD-ROM—with enough data on it that the publisher, Charles River, didn’t really have a choice but to supply a disc that contains source code to many, but not all, of the individual articles. Source code, where available, is either C or C++ and makes use of the DirectX 9 or OpenGL APIs for 3D graphics. The SDL is pressed in to service for any 2D elements. With articles that delve in to vertex shader and pixel shader technology the Nvidia CG toolkit is used.
For those articles where there is no source code, several movies have been thoughtfully placed in the CD-ROM directory referring to the article that present the idea graphically rather than as a purely abstract concept. Heck; even jaded game programmers like to look at eye candy.
Graphics programmers should add this book to their stack of “must own” titles that continues the legacy of the original Graphics Gems titles.