Digital Foundry interview with Halo: Reach developers

Halo: Reach was one of the big game releases of 2010, so I was pleased to see a detailed technical interview with some of the developers on Eurogamer‘s Digital Foundry website. I recommend you read the whole thing, but I’ll summarize some of the notable rendering tidbits (the interview also covered multiplayer, AI, and animation):

  • The previous two games (Halo 3 and Halo 3: ODST) used a “semi-deferred” approach, not for deferred lighting or shading but for decals. It sounds like they rendered a cut-down g-buffer (probably just diffuse color) in the first geometry pass (skipping small decoration objects like grass and pebbles), then blended decals into this buffer, and finally rendered the geometry a second time to do the lighting. Halo: Reach changed to a deferred lighting approach. Some lights were deferred and some weren’t, objects without decals or deferred lighting were only rendered once (this “hybrid deferred lighting” sounds similar to what Naughty Dog used for the Uncharted series).
  • Halo 3 used spherical harmonics in lightmaps to store directional lighting information (detailed in a GDC 2008 talk, as well as a SIGGRAPH 2008 course – see slides and course notes). For Halo: Reach, Bungie developed an improved light map representation that gave them “the same support for area light sources, improved contrast, fewer artifacts, a smaller memory footprint and much better performance”. This sounds really interesting; I hope they will describe this further in a conference presentation or article.
  • They developed a particle system which performs scene collisions on the GPU, using the depth and normal buffers as an approximate scene description. it can do tens of thousands of collisions / bounces per frame in 0.3 milliseconds (their previous CPU-based colliding particle system had a budget of 7 collisions per frame!). This system will be presented at GDC 2011 (the presentation will also discuss optimizations to their atmospheric effects system).  This is a great idea – techniques like SSAO use depth/normal buffers as approximate scene descriptions for rendering, but this is the first time I have heard of this being done for simulation.
  • Halo 3 used two 8-bit-per-channel frame buffers with different exposure values for HDR effects (primarily bloom). Bungie described this scheme in a presentation called “HDR the Bungie Way” at two Gamefest conferences: USA in 2006 and Europe in 2007 – the 2006 (giant) zip file also contains an audio recording, but the 2007 one has more updated slides (including screenshots). The GDC 2008 talk mentioned above also discusses this scheme briefly towards the end. In contrast, Halo: Reach uses a single 7e3 buffer; this yields higher performance and frees up more EDRAM for shadow buffers but has less dynamic range (the primary result of this is loss of color in some bloom regions).
  • Instead of MSAA, Halo: Reach uses a simple temporal anti-aliasing method. The camera is offset by a half-pixel in alternate frames, and the last two frames are selectively blended (the blending is turned off on pixels that have moved significantly since the last frame).
  • They developed a new LOD system (to be presented at GDC 2011) which automatically generates low-cost models to be used far from the camera. Combined with improved occlusion culling and GPU occlusion queries, this enabled a significant increase in draw distance.

cppcheck: free, easy, and great

Jari Komppa pointed this tool out to me while we were talking about my previous post on gDEBugger being free. The tool: cppcheck (download here). It’s free, it’s very simple to use, and it’s effective. Install, then run it like so:

cppcheck -q theRootDirectoryOfAllCodeYouWantToCheck

It will then plow through all your C++ files in this directory on down and look for memory allocation/deallocation problems, use of unallocated array elements, and other defects. “-q” means “show me just the errors found”. It does the things your compiler should find but probably doesn’t (someone will no doubt correct me about this for gcc or somesuch, but  I use MS Visual Studio and it’s definitely true for that). For our current project it found about 15 problems, one pretty serious. For an investment of just a few minutes, this free tool caught a number of flaws that weren’t getting caught by other means. One particularly nice feature is that it tries all possible “#ifdef” paths, checking to see if any combinations cause code problems like undefined variables or similar.

I particularly love the fact that I didn’t have to do the usual thing of telling it all about the various include file paths and the eighteen other things I usually have to do to get similar programs working. It was so easy to run that I spent a whole two minutes more and tried it on another group’s project for which I had the code. It turned up a bunch of spots where the codebase needs some repair. Nice! About the only drawback is that the error messages are sometimes a bit terse and take some decoding. It’s open source, and they have specifically asked for help with documentation, so I expect this area will improve over time.

Gran Turismo on Playstation, PSP, PS2, and PS3

This video was published by Eurogamer‘s Digital Foundry department about two weeks ago; it shows footage captured from various games in the Gran Turismo series. What is remarkable about this video is that the same cars and tracks are shown on the original Playstation, the PSP, the Playstation 2 and Playstation 3. Since the developer (Polyphony Digital) has a reputation for squeezing the best visuals out of Sony’s platforms, this promises a rare “apples-to-apples” comparison across multiple hardware generations.

To my eyes, the display resolution changes drown out the more subtle differences in modeling, shading and lighting; it is also apparent to me that Polyphony no longer sits on the graphics throne in this generation. Other first-party PS3 titles such as Uncharted 2 and God of War III look better, in my opinion. The shadows are a particular weak spot: in places their resolution seems no higher than on the original Playstation!

More information on how the video was captured (as well as high-quality download links) can be found in Digital Foundry’s blog post.

HPG 2011 Call for Participation

High-Performance Graphics, although a relatively new conference in its current form, has had a large impact on the field; it is the venue of choice for breaking research on new antialiasing techniques, micropolygon rendering, and novel uses of GPUs for graphics. HPG 2011 will be co-located with SIGGRAPH 2011 in Vancouver, and is looking for paper, presentation, and poster submissions. The full CFP is included after the break:

Continue reading

gDEBugger is now free!

Just noticed this on Morgan McGuire’s twitter feed. I don’t know why, but gDEBugger, sort of the PIX equivalent for OpenGL, is now free, go here for a license. They’ll be putting out a newer free version (5.8) by the end of the year, so it’s not like they’re discontinuing the product. Maybe it’s the “get them hooked” business model. Also, there’s talk that the current version doesn’t work that well with OpenGL 3.2 and above. Nonetheless, it’s an excellent product overall. Anyway, screen shots here.

To quote their literature: gDEBugger is an OpenGL, OpenGL ES, and OpenCL Debugger, Profiler and memory analyzer. It traces application activity on top of the OpenGL API to provide the application behavior information you need to find bugs and to optimize application performance. gDEBugger transforms the debugging task of graphic application from a “Black box” into a White box model; using gDEBugger you can peer inside the OpenGL usage to see how individual commands affect the graphic pipeline implementation. gDEBugger has a lot of “standard debugger” abilities, but also contains many special features for graphics software developers: view render context state variables, view allocated textures, textures properties and image data, Shaders programs and source code, break on OpenGL errors. In addition, using its profiling abilities, gDEBugger enables you to pinpoint easily the exact location of the application’s graphic pipeline performance bottleneck to let you optimize the application performance.

Update: Jari Komppa wrote, “This may shed some light on things: http://www.export.gov.il/Eng/_Articles/Article.asp?CategoryID=461&ArticleID=12274

Full text:

AMD to buy Israel’s Graphic Remedy company

The American chip manufacturer AMD is buying Israel’s Graphic Remedy company, the Calcalist financial website reports.

It appears that AMD – Intel’s competitor in manufacturing PC and server chips – will pay a relatively low amount for Graphic Remedy, some $4-5 million.

Graphic Remedy, founded six years ago, is a small company with seven employees. It gained renown for its series of simulation and debugging applications for graphic programs and computer games and became dominant among Cronus’ [sic – they mean Khronos Group’s] Open GL platform developers.

According to Calcalist, AMD seems to be buying Graphic Remedy in an attempt to expand its presence in the home and business graphic
processors market.

What’s in a name?

Now that I3D reviews are over (and my Minecraft addiction is beginning to wane), back to blogging. So I was reading “Yes!“, which is a pretty fun bathroom book. It’s a bunch of short articles on various recent bits of social psychology. The “you can use this in your business” tone of this book is annoying, unlike the same authors’ wonderful book, “Influence“. Nonetheless, there are cool little ideas that make you see the world in a different way.

One chapter I just finished was “When is your name your game”. It turns out that if you’re named Dennis, you’re 43% more likely to become a dentist than some random guy. If you’re name George or Geoffrey, you’re more likely to go into the geosciences such as geology. Your name also influences where you live: there are a disproportionate number of Louises in Louisiana and Florences in Florida. Someone named Washington is more likely to live on Washington Street. Even first letters matter: if your name starts with an A, you’re more likely to like Almond Joy than someone without that initial A. Of course, you say you’d never take on any of these sorts of biases, that’s what everyone in these studies says, but the statistics say different.

This seems true for at least one acquaintance of mine, Rod G. Bogart. With initials like that, not to mention a first name that goes with “and cones”, his name is perfectly suited to computer graphics work. Now if he just had friends named Roy G. Biv and Hugh St. Val, life would be complete.

So, be careful naming your kids. I highly recommend for a boy the name Raymond Tracey, “Ray” for short. Or Norman Victor might help point him in the right direction. If you’re more into math, perhaps Algy (though with a name like that, expect him to get beat up a lot, unless he can hang out with the cool kids and be called “Algy, bro”). For girls, Alfa Belinda could work, though names like Polly Nomial clearly give away what you’re up to, and could have a backlash effect; she might go into the study of implicit surfaces (shudder), just to rebel against you.

I3D 2011 Call for Participation

I received this CfP a week ago, but I was traveling so hadn’t had the time to post it earlier. I3D has always been a very good conference, with a high percentage of usable real-time rendering papers. This year’s conference was especially strong. Five of the papers were by people who had implemented the described techniques in commercial games (Crysis 2, Batman: Arkham Asylum, Civilization V, Toy Story 3 The Video Game, and Dark Void), and many of the other papers were also interesting and relevant (all papers are linked from Ke-Sen’s website).

Now is the opportunity to submit papers for I3D 2011, which will take place in San Francisco in late February. The full Call follows:

I3D 2011 Call for Participation

Submission System is now open!

Paper submission deadline: October 22, 2010

Conference info: http://www.i3dsymposium.org

Submission system: http://precisionconference.com/~i3d

Conference Date: February 18th – 20th, 2011

Location: Marriott Fisherman’s Wharf, San Francisco, CA

I3D is the leading-edge conference for real-time 3D computer graphics and human interaction, and 2011 marks the 25th year since the first conference gathering. We invite you to submit papers, posters, and interactive demos across the entire range of topics in interaction, interactive 3D graphics, and games. The fall deadline provides the perfect outlet for your summer work.

Topics include, but are not limited to:

  • Interaction devices and techniques
  • 3D game techniques
  • Interactive modeling
  • Level-of-detail approaches
  • Pre-computed lighting
  • Visibility computation
  • Real-time surface shading
  • Fast shadows, caustics and reflections
  • Imposters and image-based techniques
  • Animated models
  • GPU techniques
  • Navigation methods
  • Interactive visualization
  • Virtual and augmented reality
  • User studies of interactive techniques and applications

Paper submissions should be up to 8 pages in length and adhere to ACM SIGGRAPH style guidelines. The submission of a video to accompany the paper is encouraged. Papers will be peer-reviewed in a single-blind process and authors notified by e-mail.

Please visit the conference website at http://www.i3dsymposium.org for additional information, submission details, and further updates.

Send questions to:

  • general (at) i3dsymposium.org (for general inquiries)
  • papers (at) i3dsymposium.org (for questions on paper submission)
  • posters (at) i3dsymposium.org (for questions on posters & demos)

Important Dates:

  • Paper submissions due: October 22nd, 2010
  • Poster and demo submissions due: December 17th, 2010
  • Paper notifications: Dec 3, 2010
  • Poster and demo notifications: Jan 7, 2011
  • Conference: February 18th – 20th, 2011

Benoit Mandelbrot dies at 85

I just received this news from Solomon Boulos, that Mandelbrot passed away. Would anyone have discovered this area of math if he hadn’t? Whatever the answer, many of us have whiled away at least a few happy hours rendering 2D and 3D fractals, and Benoit was the one who started it all.

Here are a few links in honor of Mandelbrot. I happened to have these stored away for the blog, time to put them up.

They Tried to Make Me Go to Rehab…

There’s only one way through Minecraft addiction, burning your way through to the other side. At least that’s my current theory. I’ll get back to posting for real after just one more little project… How I did this sculpture is shown here and here, using Patrick Min’s binvox and modified viewvox. Yes, I placed all 2302 cubes by hand; it’s sort of like knitting, with vertigo. You can even take the tour on YouTube.