14 of 14 people found the following review helpful
4.0 out of 5 stars
Good but not great, 17 Sept. 2003
This book is not for beginners: it assumes you're comfortable with textures, meshes, matrices etc. and provides only a sketchy overview of them. The quality of the demos is uninspiring to say the least, especially the "Ocean Water" demo which is frankly terrible. There are many irritating typos. The author makes a sort of apology for his coding style and suggests that if you don't like it, you can always change it. This is easier said than done...!
So why does it still get 4 stars?
It covers, in one fairly short volume, how to represent and render terrain, with 3 LOD algorithms, skydomes/boxes, clouds (with Perlin Noise), realistic outdoor lighting, trees/grass and ocean water. It has a robust resource management system (perhaps too complex for the intermediate programmer like myself) and gives enough details of effects files (.fx) and HLSL to get you started in what looks like a fascinating and extremely powerful avenue. (The DirectX SDK is more-or-less useless with these.) It also has a wealth of tricks and tips ranging from floating point optimisations to "smart" ASSERTs.
Most of the code is relegated to the CD, which is where it should be, in my opinion. (Take note, Andre LaMothe!) Enough is retained in the body of the book to allow you to see what is going on, without needing to grind through pages of cut-and-pasted irrelevance.
It's very much an object-oriented approach rather than a procedural approach using classes as a notational convenience. This is the first book I've read that has let me see *why* classes are so much more powerful than procedures (rather than just extolling the academic virtues of them). For that alone the author is to be congratulated.
In the end, the fifth star is missing because the quality of the graphics supplied is so poor - this is, after all, a graphics programming book! (I formed the impression that the author didn't want to "waste" any of his "good" textures, and the skydome background is an embarassment.) With better quality textures, and larger terrains, some real showpieces could have been produced. Occlusion culling would have been nice too.
I also have some reservations about the scalability of the code - I was getting unacceptably low frame rates with the (tiny) demo terrains on a RADEON 9000 Pro / P4 2.4GHz which, while not cutting edge, is not that far off the pace.
To summarise: well worth the purchase price, but don't expect marvellous demos.