Book Review: GPU Pro, GPU Pro 2, GPU Pro 3
The GPU Pro book series is some kind of unofficial successor of the quite good ShaderX series. Both are edited by Wolfgang Engel and both are focused on real-time graphics programming. The first book of this series, GPU Pro, came out 2010 and presents 41 articles on 706 pages (not counting the author introduction at the end of the book).
Organized in ten sections the book covers mathematics, geometry, rendering, lighting and shadows but also more general topics as 3D engine design and mobile development (a complete list of contents can be found here ).
The overall quality of the articles is quite good and they cover a wide range of topics so everyone might find some interesting bits in here. Some introductory articles are quite basic like the ‘Virtual Texture 101’ from Matthäus Chajdas et al. (but it’s well written), some are more specific like ‘Accelerating Virtual Texturing Using CUDA’ by Charles-Frederik Hollemeersch et al. (to stay on the same topic).
A personal highlight in article collections like this one for me are reviews of actual game engines from the developers (see the section ‘Game Postmortems’): It’s always interesting to see which ideas from academia survive in real world applications that don’t focus on correctness but only on plausible visuals. Looking at academic publications, you never know for certain how well the described algorithms would work in real world applications. Ideas actually implemented in games can be tested and have proven to work to some extend. Of course, those real world solutions are often full of ugly hacks and sometimes only work thanks to very skilled artists who manage to hide the drawbacks. Also, we will rarely find novel ideas in games at the time they hit the market.
Sadly, not all articles in this book are gems imho: The ‘3D Game Design’ chapter for example has an article focusing on the Cell processor of the PS3 and two articles covering out-dated APIs (Direct3D 9 and OpenGL 2.0). While algorithm design for uncommon processors might be interesting but of little use (unless you’re a PS3 developer in which case I guess the article will unveil no secrets to you), but introducing old APIs might find no target group. The developers who still have to work with DX9 and OpenGL 2 (not so few, I’m sure) will already know the presented ‘insights’… These pages could better be spent on introductions of the later incarnations of said APIs!
‘GPU Pro 2’ is the successor of GPU Pro and was also edited by Wolfgang Engel. Book number two from 2011 got much thinner: 471 pages of articles instead of 706 and only 28 articles. A lot less content for only a bit less money (currently 60$).
Content-wise this book features a similar mixture of geometry, rendering, mobile development, engine design and miscellaneous other topics (see full contents here). It also features handheld related articles (a chapter that book 3 will leave out), but sadly mobile development/graphics isn’t the strength of this series.
‘GPU Pro 3’ from 2012 has gotten even thinner than part two of the series: Just 376 pages and 21 articles (full table of contents here) – that’s about half the content of book 1!
But some of these articles are actually very interesting: On the practical side for example there is an insight into the CryENGINE3 by Tiago Sousa. Also interesting, but in my opinion of little use is the trick presented by Holger Gruen of using the vertex shader and attribute-less rendering for tessellation. It sounds like a fun thing to do and I already enjoyed playing around with such ‘crazy’ ideas, but I yet have to see a practical application ;-)
Also presented by Gruen is a way of creating splats as proxy geometry to ray-traced reflections in real-time (‘Ray-Traced Approximate Reflections Using a Grid of Oriented Splats’). Realistic reflections are a hot topic and both EPIC and CryTec are presenting their own solutions in the current/upcoming game engines. Both have in common, that they ray-cast/ray-trace in a fragment shader for each reflecting fragment into a simplified scene instead of the real scene. The same is done in Gruens approach but the kind of proxy is fundamentally different. The creation of these splats requires modern OpenGL 4 capable hardware while Real-Time Local Reflections (CryTec) and Image Based Reflections (EPIC) basically only need simple fragment shaders.
While ‘GPU Pro 2’ featured OpenCL centered articles, ‘GPU Pro 3’ presents DirectCompute oriented ideas. This shows that the more flexible programming models of GPGPU programming are gaining traction in the context of rendering. I believe that we will see much more compute-rasterization-hybrid render in the near future.
Are they worth reading? Definitely yes. If your interested in real-time graphics, you will find some nice bits in here. Depending on your personal focus and your access to books (libraries, colleges, company owned books) it might be sufficient to grab them over a long weekend. Book number 2 and 3 are quite thin for the price they demand (currently 60$).
All these books have no DVDs with additional materials, instead you can get everything online (book 1&2, book 3). On the one hand this will give non-buyers the chance of taking a glimpse before purchasing the book, on the other hand it gets harder to justify the price…
GPU Pro 4 is currently in the making and should come out next year – I hope it won’t get even thinner.