Yet Another Free Book

So I had such plans for all the things I’d get done during the holiday break. Well, at least I fixed our bathtub faucet, and kept the world safe from/for zombies in Left4Dead versus mode.

In contrast, Wolfgang Engel, Jack Hoxley, Ralf Kornmann, Niko Suni, and Jason Zink did something nice for the world: gave us a DirectX 10 book for free online. There’s more information about it at the site hosting it, gamedev.net. To quote Jack Hoxley, “It’s more of a hands-on guide to the API at a fairly introductory/intermediate level so doesn’t really break any new ground or introduce any never-seen-before cool new tricks, but it should bump up the amount of D3D10 content is available for free online.”

There are some great topics covered, including a thorough treatment of shading models, lots about post-processing effects, and an SSAO implementation (which I disagree with their specific implementation a bit in theory – convex objects shouldn’t really have self-shadowing ever, that’s why you usually ignore half the samples that are obscured, as a start – but SSAO is so hacky that it should be considered an artistic effect as much as photorealistic one). Lots of chewy stuff here.

Don’t be fooled because the book is only on the web, by the way. This is a high-quality effort: well-illustrated, the sections I sampled were readable and worthwhile, and there are solid code snippets throughout. The authors didn’t work out a print deal that they liked, so released the book to the web. You can see its original listing on Amazon. To quote Jack again, “We’re all glad it’s now out … for everyone to use.”

If you find errors or problems in the book, please let the authors know – the whole book is on a wiki, so you can add discussion notes (note: I found the wiki doesn’t work well with Chrome, but Internet Explorer worked fine). As the gamedev.net article notes, this release may form the basis of a book on DirectX 11, so could be considered something of a free beta. Please do reward the authors for their hard work by contributing feedback to them.

Update: Do keep in mind that this is a first draft (i.e., cut them some slack). Reading more bits, quality varies by section. I trust the authors will read and fix each others’ work as time goes on. I do like the wiki element. For example, there are some comments from Greg Ward in the corresponding discussion page for the implementation of the Ward shading model that should help improve their text.

I3D 2009 Papers Listed

I3D 2009, the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, will be in Boston on February 27 to March 1. Along with Morgan McGuire I’m a papers cochair this year. Naty served on the papers committee along with 81 others, plus external reviewers; over 300 reviewers were written. We were happy to see a large number of submissions: 87, up from 57 last year. 28 papers were accepted. The papers to be presented are now listed at http://kesen.huang.googlepages.com/i3d2009Papers.htm.

Heh, I just noticed Naty also posted this site; well, a little duplication won’t kill you. Amazing to me, Ke-Sen had already tracked down 9 of the papers accepted at I3D – acceptance notices went out on the 5th. I sent the list of all papers accepted to Ke-Sen, as this became open knowledge on the 15th. Ke-Sen’s listing is about as official as it will get until the final program is published at the I3D site.

I should also note that the Posters deadline is just a few days away, on December 19. Posters are a great way to present an idea or a demo and get feedback from the community, without having to spend the time and effort of writing a full formal paper.

2009 Conference Paper Preprints

The ever-amazing Ke-Sen Huang already has paper pages up for I3D 2009 and Eurographics 2009. Both conferences are currently in that twilight zone where the authors have been notified (and are putting notifications and preprints on their web pages) but the official paper list has not yet been published.

There are already several interesting papers there: Approximating Dynamic Global Illumination in Image Space (available here) extends the popular SSAO (screen-space ambient occlusion) technique to support directional occlusion and single-bounce diffuse reflection. Automatic Linearization of Nonlinear Skinning (available here) introduces a method to automatically place virtual bones, resulting in quality similar to dual quaternion skinning but using traditional linear skinning. Multiresolution Splatting for Indirect Illumination (available here) speeds up reflective shadow maps by using a multiresolution data structure. Bounding volume hierarchies are important for many algorithms (including ray tracing), so a method to rapidly construct them on the fly is useful. Such a method is detailed in Fast BVH Construction on GPUs (paper web page here). The final paper has a somewhat self-explanatory title: Temporal Glare: Real-Time Dynamic Simulation of the Scattering in the Human Eye (available here).

Two papers, although lacking preprints as of yet, have particularly interesting titles, and I look forward to reading them: Soft Irregular Shadow Mapping: Fast, High-Quality, and Robust Soft Shadows and Real-Time Fluid Simulation using Discrete Sine/Cosine Transforms.

Gift Books

What with Saturnalia and Festivus coming up, I’ve been buying books. Here are some of the more visually-related titles I’ve found:

  • Mars 3-D – a book of 3D red/blue stereograms of pictures of Mars. I like the way that you cannot lose the glasses: they’re built into the cover of the book.
  • ABC3D – Officially a kid’s alphabet book, it’s actually a well-crafted (and relatively inexpensive) pop-out book with clever little mechanisms and visual tricks throughout.
  • Gallop – This one really is a kid’s book, but the animation mechanism is fun. You can also get a set of greeting cards of the book. Swing is another by the same author.
The main reason GPUs are so numerous and so cheap is games, of course. My current addiction is Left4Dead, but I hope to play a lot of good board games during the holiday break. Some books I’m passing out this year:
  • Game Design Workshop – My older son hopes to do a class project of designing a board game, and this looks like a book that will help. I wish Game Developer magazine would gather its game design articles into book form.
  • The Game Maker’s Apprentice – I hope to lure my younger son into making simple videogames with this, a good book of tutorials for the Gamemaker software, which itself is free to download.
  • One Jump Ahead – About a computer program to play checkers and so much more, by the person who eventually solved checkers. Longer review here. I just love this book on so many levels. I don’t know what the new edition adds; the older edition is noticeably cheaper on half.com.
OK, enough diversion from the main topic of this blog; I’ll get back to that next post.

More Free Books

GPU Gems 3NVIDIA’s done it again, they’re releasing GPU Gems 3 to the web. It’s being done in the installment plan, I expect so that there’s something to announce every few weeks, which is fine. Eventually the whole book will be available, so much better to have this “section a month” scheme than not at all. NVIDIA’s to be complimented on their progressive attitude. GPU Gems 3 is less than a year and a half old, so could still make a few dollars, but NVIDIA’s goal is to get the information out there.


ShaderXThis summer Wolfgang Engel and I tracked down authors of the ShaderX and ShaderX^2 books and secured releases. The ShaderX^2 books quickly found a home at gamedev.net, but Wolfgang had to dig around for the PDF for the first ShaderX book, then find a place to host it, plus the dog ate my homework, etc. Long and short, the original ShaderX book is now free for download here: http://tog.acm.org/resources/shaderx/ – I decided to host it on the ACM TOG site, as it’s a valuable resource, despite its hoary old age. Just ignore the first chunk about using 1.x shaders and enjoy the rest.

I do wish the GPU Gems books were available as PDFs (hint, hint, NVIDIA), as they would be much easier to search for those “I know I saw this in one of these books” moments.

Exploiting temporal and spatial coherence

Exploitation of temporal and spatial coherence is among the most powerful tools available to a graphics programmer. Several recent papers explore this area. Accelerating Real-Time Shading with Reverse Reprojection Caching (GH 2007, available here) uses reverse reprojection to reuse values cached from previous frames. An Improved Shading Cache for Modern GPUs (GH 2008, available here) analyzes the performance characteristics of this technique and proposes some efficiency improvements.

Such caching schemes involve analyzing each pixel shader to find appropriate values to cache. Care must be taken to use values which are expensive to compute but have low directional dependence. Automated Reprojection-Based Pixel Shader Optimization (to be published at SIGGRAPH Asia 2008, available here) proposes a method to automate this process. Another option is to apply reprojection caching to a specific, well-defined case like shadow mapping. This is discussed in Pixel-Correct Shadow Maps with Temporal Reprojection and Shadow-Test Confidence (EGSR 2007, paper web page). This paper was also mentioned in our book.

Personally I’m a bit skeptical of reprojection caching techniques, since whenever the view changes abruptly the cache will be completely invalidated resulting in performance dips. Many applications can’t use acceleration techniques which don’t help worst-case performance. Applications with restricted camera motion may certainly benefit. Enhancing these techniques with fallbacks which degrade quality (instead of performance) in cases of abrupt camera motion may make them more generally applicable.

A different approach is discussed in Geometry-Aware Framebuffer Level of Detail (EGSR 2008, available here). Here the idea is to render certain quantities into a lower resolution frame buffer, using a joint bilateral filter to resample them during final rendering. As with the previous technique, care must be taken in selecting intermediate values; they should be both expensive to compute and vary slowly over the screen. This powerful acceleration technique was also used in the paper Image-Based Proxy Accumulation for Real-Time Soft Global Illumination (PG 2007, available here). Variations of this technique have been used in games, with perhaps the most common case being particle rendering, as the Level of Detail blog points out in this interesting post on the subject. The same blog also has insightful posts on many of the papers mentioned here, as well as another related paper.

This and That

I’ll someday run out of titles for these occasional summaries of new(ish) resources, but in the meantime, this one’s “This and That”.

Christer Ericson’s article on dealing with grouping and sorting objects for rendering is excellent. It mostly depends on input latency, but has concepts that can be applied in immediate mode.

An element that continues to renew the field of computer graphics is that the rules change. This article is about taking Quake 2 (from 1997) and moving it to a modern GPU.

If you haven’t seen it yet, Farbrausch’s demo “debris” is truly impressive. It’s only 183,462 bytes, and is absolutely packed with procedural content. Download here (last link works). Or be lazy and watch on YouTube.

NVIDIA’s pulled together its resources for shadow generation and ambient occlusion all onto one handy page (plus ray tracing – just one entry so far, but it’s a good one).

How to deal with various rendering paradigms on multiple platforms? GRAMPS looks intriguing.

Gamasutra put a useful Game Developer article online, all about commercial middleware game engines currently available.

OpenGL will always exist, since Macs and Linux need it. It’s easier to use in college courses because of its clarity and readability. But otherwise the pendulum’s swung far towards DirectX. Phil Taylor comments on and gives some historical context to the controversy around the latest release, OpenGL 3.0.

A nice trend for OpenGL is that people continue to write useful bits, such as GLee, which manages extensions.

New info on older effects: blur and glow, volumetric clouds, and particle systems.

The glorious teapot. I like “a wireframe view”. Yes, the real thing is taller than the synthetic model, as the model makers were compensating for non-square pixels.

“What’s the future hold?” is always a fun topic, one we’ve used each edition to end our book. I liked this presentation on SlideShare for its sheer “here are a hundred things that hurtle us towards the Singularity” feel, though I don’t buy it for a minute. SlideShare, where it is hosted, is a pleasant medium-attention-span kind of place, with all sorts of random and fun slidesets.

Finally, I am pleased to find that LittleBIGPlanet is just as gorgeous as it looked like it would be. I’ve played myself for only a bit, but walking by when my kids are playing I find I have to stop and stare.

Ray Tracing News v. 21 n. 1 is out

I’ve put out the Ray Tracing News for more than 20 years now. New issues come maybe once a year, but there you have it. There’s a little overlap with this blog, but not that much. Find the latest issue here. Now that I’m finally done with this issue I can imagine blogging again (it wasn’t just I3D that was holding me back).