SIGGRAPH 2004 was held August 8-12 in the Los Angeles Convention Center. Since this was my second SIGGRAPH, I had a better idea of what to expect and how to get the most out of it.
I'm posting this a little later than expected due to travel and some family issues that came up, so I apologize for the delay.
I spent most of my time attending sessions, and very little time on the expo floor. SIGGRAPH, of course, covers the gamut of graphics-related topics, from film, to simulation, to interfaces, and more. I naturally chose to focus on topics related to game development, in particular real-time rendering. I was pleased to discover that I was able to fill almost five solid days with relevant presentations, which was an improvement over last year. I even had to skip a few courses covering real time collision detection and animation techniques due to scheduling conflicts.
As much as I'd like to, it's impossible for me to completely convey the information gleaned from the presentations I attended. Instead, I'll provide a high-level overview, and where possible I'll provide links to the presenters' websites where you can read more if you're interested. Also, the ACM sells DVDs containing the presentations, as well as video of many of the courses. You can order these from the SIGGRAPH website, though at the time of this writing, the DVDs from this year aren't online yet.
Real-Time Shading (course)
The conference kicked off (for me at least) with the full-day real-time shading course, which I also attended last year. This year, the focus was more on shading languages/technologies than specific techniques being done using shaders.
One of the most interesting parts of this course was the presentation of Sh. Sh is a high-level metaprogramming language for GPUs. It's built on top of C++, and is intended to allow you to write shaders that are more easily portable using a familiar syntax. It also manages textures as well as shaders. Whether or not Sh will see wide adoption remains to be seen, but a subsequent presentation of it at ATI's booth on the expo floor was completely packed. You can find out more about Sh at libsh.org.
Rather than attempting to cover the rest of the course, I'll instead point you to course organizer Marc Olano's homepage, where all of the presentations are included.
Performance OpenGL (course)
I'd been told in the past that this course was really basic, so I didn't bother attending last year. I caught about an hour of it this year though, and what I saw was pretty useful, though there were a few things that seemed really obvious (and I was pretty surprised at one point to have one of the presenters spend time explaining what triangle strips are and why they're more efficient, after asking if there was anyone in the room not familiar with triangle strips and seeing not a single hand raised).
Of what I saw, the most interesting was regarding the use of occlusion queries. I haven't worked with them much myself, but I've gotten the impression that they're not that useful in improving performance. The presenters' results disagree with that, however.
They recommended sorting your geometry coarsely and cheaply, drawing near to far, drawing bounding objects using occlusion queries (batching them in groups of about 10% of the total load and doing other things while the queries execute), and then rendering non-occluded objects. In the test applications they used, the performance improvements were dramatic, though admittedly they were comparing it against a brute force approach. They also stated that occlusion queries could be used to efficiently determine LOD, as well as for frustum culling.
You may want to check out the slides from this course at performanceopengl.com. At the time of this writing, they haven't been posted yet, but they should be up soon, and in the meantime, presentations from past years are available.
I've Seen Fire and I've Seen Rain (Sketch)
This sketch covered fire, rain, snow, and ice rendering techniques. The first covered a really nice looking physically based ice modeling technique, which unfortunately isn't doable in real-time. The third covered the creation of atmospheric effects in Van Helsing, and the fourth covered image-based flame rendering, neither of which offer anything useful for games.
That leaves the second sketch, given by a former Microsoft Games employee, who described how they simulated rain and snow in Microsoft Flight Simulator.
The goal for the technique was to create realistic-looking snow and rain that doesn't degrade performance as the number of snowflakes or raindrops increase. Their solution was to use 4 texture planes, each with smaller drops/flakes moving slower than the last layer, for a sort of parallax effect. The rain textures are stretched to simulate the motion blur that happens with rainfall. These textures are applied to a double cone centered on the camera. As the camera speed changes, the cones tilt to simulate the rain/snow moving more quickly toward the viewer.
The results of this are pretty impressive and are very inexpensive. You can read more about the technique at http://ofb.net/~niniane/rainsnow/.
Real-Time Shadowing Techniques (course)
This was an all-day course on day 3. Unfortunately, I had other things that prevented me from attending the entire course, but I was able to attend about half of it. The course focused on coverage of the two main approaches to rendering shadows in real time: shadow maps and shadow volumes. If you're not familiar with either technique, check out our shadowing articles here, or any of the other abundant resources covering them.
Shadow maps have been around for a long time, produce good results, allow for self shadowing and soft shadows, and are relatively inexpensive (especially since they're now widely supported in hardware). Two major challenges with them are that they don't work well with omnidirectional point lights, and they have major aliasing problems, even with high-resolution textures. The former problem will be solved once hardware supports shadow cube maps, but the aliasing problem remains a challenge.
A solution to the aliasing problem presented during the course introduces the concept of silhouette maps. As the name implies, these maps capture data along the silhouette edges of shadow casters. This additional detail can then be used in conjunction with a shadow map in the fragment shader to more accurately decide whether or not a pixel is in shadow. The resulting images look as good as shadow volumes, at about half the cost (at least in the test cases used in developing the technique). Details can be found here.
The following links are for other presentations (or as close as I could find) included in this course:
GPU 1 & 2 (sketch)
These sketches covered using programmable GPUs in non-conventional ways. Four of the sketches were noteworthy for games, though all were interesting.
One covered UberFlow, a particle engine very similar in concept to the method described in a recent article on Gamasutra (in turn, taken from the GDC). The basic idea is to make particle system rendering more efficient by greatly reducing bandwidth consumption. This is done by storing particle attributes in textures. Attribute data can either be used statically, requiring only that the current time be updated every frame, or dynamically, rendering values to the textures as they change. As the title from the Gamasutra article suggest, this allows for much more efficient rendering, allowing many more particles to be used, resulting in better particle effects. The downside is that reading from textures in the vertex shader requires Vertex Shader 3.0 compliant hardware, which won't be widespread for quite some time.
You can read more about UberFlow from ATI.
CC Shadow Volumes presented a method of speeding up shadow volumes by culling shadow casters that are completely shadowed (thereby reducing the number of volumes rendered) and clamping the volumes to only include the objects being shadowed.
I attended this for the PACKMAN texture compression scheme for mobile devices, which I imagine most people won't be interested in unless they're developing mobile graphics hardware. If that's you, you can read more at http://graphics.cs.lth.se/research/mobile/.
I also stuck around for Tile-Based Texture Mapping on Graphics Hardware which essentially allows you to fake having really large textures for things like terrain rendering.
In addition to the links I've already included, the following pages contain quite a few of the more interesting presentations given at the conference:
One of the most common questions asked of me on the expo floor: "What's the most exciting thing you've seen?" My answer: "Uhhh..."
That isn't to say there was nothing exciting at the expo, but nothing in particular stood out to me. I didn't see anything that I'd consider revolutionary, which isn't necessarily bad. What I saw were incremental improvements almost everywhere. Tools are getting better, hardware is getting faster and more affordable, education is maturing, and there is considerable diversity in the products being offered. Everyone I talked to said that they feel like the industry as a whole is stronger than it was a year ago, and everyone has a positive outlook for the future.
As usual, I had some in-depth meetings with a number of companies presenting at the expo.
Prior to the show, discreet announced the launch of 3ds max 7, so as you'd expect they were promoting it heavily on the expo floor. I'll let you read about it on your own, if you're interested, but two things were particularly noteworthy.
The first is that max will include native support for M3G, otherwise known as JSR184. For those unfamiliar, M3G is a Java-based gaming API for cell phones and other mobile devices which is fairly new but already widely supported. The integrated support in max will allow mobile game developers to be able to easily preview their work.
The second is that ATI's Ashli shading technology will be integrated into max as well. If you're not familiar with Ashli, check it out.
We met with MAXON back during GDC, where they were promoting BodyPaint3D, which we should be reviewing here soon. At SIGGRAPH, they launched Release 9 of Cinema 4D. MAXON often gets overlooked by game developers, but they have a solid and powerful product line that definitely deserves consideration. Find out more about BodyPaint3D and Cinema 4D at their website.
Softimage has had a great year, with the launch of XSI 4 and XSI EXP - which will be included with Half-life 2. Their big announcement at SIGGRAPH was what they are calling "3-Democracy", which is essentially a plan to make professional grade 3D tools available for everyone. They're now offering a version of XSI 4 called Foundation for $495. They are also offering a version called Essentials for $1995, and Advanced for $6995.
Not being an artist, it's not clear to me how Foundation compares to Essentials and Advanced, to similarly priced products from other vendors, or to other high end packages. They do have an FAQ on their website with more details that I'd recommend checking out. It's definitely encouraging to see one of the high-end packages being offered at low-end prices.
Immersion was at the expo showing several new haptic and design products. Immersion is probably best-known to gamers and game developers for the haptic technology they provide to input device manufacturers.
The product on display that will be of most interest to game developers is a wireless version of their CyberGlove(R) system, which is now supported in Kaydara's MOCAP. Priced at around $20K for the glove and the associated plugin, it's not cheap, but it is considerably more affordable than other mocap solutions.
3Dlabs had a strong presence at the expo, showing off their new Wildcat Realizm line of professional graphics accelerators. They showed these cards effortlessly handling huge and/or complex scenes in max, Maya, XSI, and Lightwave. Particularly impressive is the high end Realizm 800, which is x16 PCI Express based, comes with 640 MB GDDR3, dual VPUs and a VSU (vertex/scalability unit), support for OpenGL 1.5 with OpenGL Shading Language (with full 2.0 support coming soon), and support for DirectX 9 with VS 2.0 and PS 3.0. Okay, it retails at $2800, but what do you expect from a professional card? In any case, I'd really love to see these guys take a crack at the consumer market.
I'm again impressed with what SIGGRAPH has to offer. The material covered in the presentations is generally cutting edge, and there is a substantial amount of information directly applicable to game development. I've been to a lot of conferences, and it's safe to say that SIGGRAPH offers the best bang for your buck, especially for graphics programmers.
When attending, I'd recommend doing what I did: Spend some time in advance reading through the program and finding the presentations that interest you. In addition to the courses and papers, don't neglect the sketches - they provided some of the most interesting ideas I saw this year.
I'm looking forward to going again next year (despite it being hosted at LACC again).