SIGGRAPH 2009 Trip Report

Siggraph2009Once again, SIGGRAPH was jam packed with the latest in computer graphics.  For the areas we're interested in, this year seemed a little more incremental than last year, probably because last year had big announcements, including Larrabee and OpenGL 3.  Nonetheless, we were exposed to plenty of ideas that will help us keep the technology underlying Insight3D on the cutting edge.  I'll hit the highlights in this post.

We tend to spend most of our time in SIGGRAPH courses.  This year, my favorite one was Advances in Real-Time Rendering.   Wolfgang Engel gave a good talk on deferred shading and light pre-pass.  Deferred shading showed up just about everywhere at SIGGRAPH this year, and rightfully so, since it is such a cool technique.  Currently, Insight3D uses so-called forward shading to allow support for a wide array of video cards.

Out of all the talks in the real-time rendering course, I enjoyed Alex Evan's talk on LittleBIGPlanet the most.  Overall, Little Big Planet is a very impressive engine for "1.5 graphics programmers over 3 years."  Although they tried to avoid it, they wound up using deferred shading and a MSAA hack to get 2 layer translucency (translucency is difficult in deferred shading since only a single z value is available during shading).  I also liked: "give artists too many knobs and they will ignore them."  I think the same is true of developers; if your API is overwhelming, developers will avoid it.  We've tried to balance flexibility and simplicity with our interfaces for Insight3D.

An Introduction to Shader-Based OpenGL Programming was a more polished version of last year's OpenGL course.

As usual, there was your fair share of interactive ray tracing.  This year, there was a trend toward real-time ray tracing APIs, such as NVIDIA's OptiX and Caustic Graphics' CausticGL.  As I've briefly mentioned before, we've architected Insight3D so all the OpenGL calls are isolated behind a renderer interface.  Although we don't have any immediate plans to do so, it's very likely that we could implement our renderer using a ray tracing API.

The OpenGL BOF was crowded as always.  This included information on OpenGL 3.2 and GLSL 1.5.  I'm happy to see that geometry shaders are core in 3.2.  I hope we get improved hardware support for them since they have several uses in Insight3D, including the SurfaceMeshPrimitive and MarkerBatchPrimitive.  Both of these primitives will fallback to vertex shaders to support older hardware.  I like the API Quick Reference Card that was handed out at the BOF.  References like this are handy, especially when you are searching for GLSL functions.  The OpenGL BOF was the first time I heard anything about WebGL.  I think bringing 3D to the web is great.  WebGL is an interesting approach, but I feel that OpenGL is pretty low level for JavaScript.  As they said at the BOF, development of higher level libraries is going to be key.  Insight3D is becoming web-enabled (although not using WebGL), keep your eyes open for more information.

Last year, I really enjoyed Beyond Programmable Shading.  I was pleasantly surprised to see that the course contained almost all new content this year.  Kayvon Fatahalian's overview of GPU architecture was even better than it was last year.  He provided insight into things like why branches and shader length affect performance.  Deferred shading showed up again when Johan Andersson showed a DX11 Compute Shader implementation in his presentation.  Also of interest to the Insight3D team was J.M.P. van Waveren's presentation on id Tech 5 where he provided some details on virtual texturing.  Techniques to handle massive amounts of textures are also useful to Insight3D's support for high resolution imagery.  Parallelism was a common theme throughout all the engine talks in this course.  Insight3D has some parallelism built in; for example, terrain and imagery disk reads occur in separate threads.  There are other areas we can add parallelism to in the future; for example, culling and rendering can be done in a producer-consumer style.

One of my favorite parts of SIGGRAPH is browsing all the new computer graphics books.  I am excited about Graphics Shaders:  Theory and Practice and Game Engine Architecture, both from A K Peters.  Although not new this year, I really like Mobile 3D Graphics with OpenGL ES and M3G from Morgan Kaufmann.  The chapters on scene management and performance describe many of the techniques we use in Insight3D.  Even though the book is targeted at moblie devices, much of the content is applicable to PCs.