Features
- Cover Type: Hard Cover with 384 pages
- Published by: A K Peters, Ltd. August 1, 2005
- Written in: English
- ISBN 10 Number: 156881240X
- ISBN 13 Number: 978-1568812403
-
Book Dimensions:
9.2 x 7.3 x 0.9 inches
- Weighs: 2.1 pounds
Product Description
Written for game programmers and developers, this book covers GPU techniques and supporting applications that are commonly used in games and similar real-time 3D applications. The authors describe the design of programs and systems that can be used to implement games and other applications whose requirements are to render real-time animation sequences (such as walks through complex scenes) at the high quality now available from GPUs.
The text is mainly structured around programming in Cg; but also includes techniques (in C++/OpenGl) that do not map onto GPU hardware. The supplementary CD includes implementation for most of the techniques covered in the book and full source code for an advanced render library in Cg/C++/OpenGL. This library can be used to quickly develop 3D games and applications which make use of the advanced features available in current programmable graphics hardware like GPU based animation, lighting, shadows and special effects.
Reader Reviews
I bought this book because, standing in the bookstore thumbing through it, I thought that it seemed like a decent guide to modern GPU effects. The nice high-gloss pages have lots of nice colorful images, and there is a lot of code as well. However, when you actually try to learn something from reading this book, you may hit a roadblock fairly quickly. The problem is that there is precious little space devoted to explaining many of the shaders, and much of that space spells out only the totally obvious anyway, which leaves one doubly frustrated. As an example, in the bump mapping section, there is a discussion on per fragment L and H computation as a means to getting higher quality results. The first thing to note is the declaration 'v2f IN'. It's noteworthy because 'v2f' is not defined anywhere! Thumbing backwards through the book, it becomes clear that this is some sort of structure for passing data from the vertex to fragment shaders, but not having it defined means you're scratching your head over what exactly is defined. Next, there is this bit of code: // transform normal to world space normal.xyz=normalize(normal.x*IN.tangent-normal.y*IN.binormal+normal.z*IN.normal); WTF? One of the most interesting bits of the whole thing (bringing the normal into world space, as opposed to bringing the light and half angle variables into surface local space), and there is *absolutely no* explanation of why it's done this way or how that tight little snippet of code was derived. None. It's really unbelievable. As another example, the parallax mapping code has this little snippet // parallax code ... float height = tex2D(rmtex,uv).w * 0.06 - 0.03; ... Once again, WTF? What's with the magic numbers? Of course, once you understand what they mean, it's obvious, but then again, if things like this were obvious, you wouldn't be buying a book on the subject now would you? The book is not garbage, it just needs to be expanded. It's pretty much impossible to actually learn anything if a particular topic has little more than a title and a few shader fragments thrown at you. I mean, don't get me wrong, writing a book like that would certainly be fun, but it would be of little use to anyone else.
Comment | |
(Report this)