We just returned from the annual SIGGRAPH conference, and one thing is clear: it's an exciting time to be in computer graphics. There was an overwhelming amount of things to see. The Larrabee, GPU, and OpenGL presentations were among the best in my opinion.
Larry Seiler presented the Larrabee paper. Briefly, Larrabee is Intel's new many-core visual computing architecture. Larrabee is built with in-order x86 cores with wide vector units to provide high computational density for parallel applications (e.g., graphics). Things used to increase single-stream performance, such as out-of-order logic, are not included since they consume die area and power that could be used for more cores.
From a developer's point of view, the most exciting thing about Larrabee is almost the entire rendering pipeline is done in software! This should lead to all sorts of innovations as suggested by Matt Pharr's talk in the Beyond Programmable Shading class. Only texture filtering has dedicated logic because they showed a software implementation would take 12x-40x longer.
For me, the most eye-opening part of the Larrabee paper was the figures showing how much time various games spent in each part of the graphics pipeline. For example, F.E.A.R. spent more time in rasterization and depth testing than in fragment shading because of its heavy use of stencil shadow volumes. I never bothered to think that rasterization itself can consume so much time, and it's really cool that Larrabee can dynamically load balance among different stages, not just vertex and fragment shading.
This class had a ton of outstanding presentations on GPU architecture and applications. There was an emphasis on non-graphics uses for GPUs. Two of my favorite talks were by Kayvon Fatahalian, a PhD candidate at Stanford, and Jon Olick of id software.
Kayvon presented From Shader Code to a Teraflop: How Shader Cores Work. This was, by far, the best presentation I've ever seen on GPU architecture. I strongly recommend going through Kayvon's slides if you want to learn how GPUs work and why they are designed differently than CPUs.
Jon presented Next Generation Parallelism in Games. In particular, he talked about ray casting sparse voxel octrees using CUDA. Of all the SIGGRAPH classes I attended, he was one of the few presenters with a live, cutting-edge software demo. That's impressive.
I've been using OpenGL since 2003. Even though this was an intro class, it was full of good information for all experience levels. From the start of the presentation, new school OpenGL was emphasized (e.g., shaders and no more glTranslate, etc).
Several worthwhile changes are being made for GLSL 1.30. I think in and out qualifiers are cleaner than attribute and varying. Simplifying the language by removing built-in attributes, varyings, and uniforms is a step in the right direction. In my experience, sending a parameter to a shader using a call like glColor4fv is slightly faster than glUniform4fv. Hopefully, this won't be true in the future.
The best part of the class was the shader examples presented by Ed Angel. Ed showed examples of mesh animation, cartoon shading, per-vertex vs. per-fragment lighting, and reflection maps. These examples were very well thought-out and illustrate important points in writing shaders. If I ever teach a graphics class, this is how I want to do it. I was a big fan of his cartoon shading example as I've never seen it before and had no idea how easy it is.
By the way, the OpenGL 3.0 spec is out now.
AGI Viewer at SIGGRAPH?
We attended SIGGRAPH as a training event - to come up to speed on the latest graphics research. We didn't have a booth at the exhibition or demo any AGI products. Electrosonic's booth caught my attention. At first glance, they had visuals that looked a lot like our products; a satellite orbiting the earth, targeting some areas of interest. At second glance, it was our software - AGI Viewer. Cool! Its always to nice to see people using our technology to show off theirs.
The papers and classes were good but the best part of SIGGRAPH is the people. We consistently ran into people whose papers or books we've read. I had a particular worthwhile conversation with Oliver Mattausch and Michael Wimmer. Both of which have published several pragmatic papers on visibility - the area of my thesis (I hesitate to call my thesis research, yet).
Pretty much every time you sat down, you meet someone interesting, whether it be the treasurer of the Free Software Foundation or the originator of BSP trees. The people that sat next to me must have been disappointed. lol.