## I3D 2007 Papers and Posters posted

All I3D 2007 papers and posters are available online. A collection of papers that are available as pre-prints online is available here. Hopefully I will follow this up with some discussion of a few of the papers.

## Discrete Differential Geometry tutorial from SIGGRAPH 06

The slides from this tutorial are available online at Columbia’s DDG forum.

## Self-shadowing in Bump and Parallax Occlusion Maps

Humus has a great little demo based on Chris Oat’s ambient aperture work . Oat’s stuff was used with terrain lighting in mind, but obviously it can be used on some bump maps also. This is a quick and dirty way to get some self shadowing on your bump mapped/parallax occlusion mapped surface without a bunch of extra texture accesses or aliasing. Oat’s method works by representing the unoccluded part of the hemisphere (the aperture) and the light source by spherical caps ( a direction and arc-length radius) and then computes the intersection of the two. Humus instead calculates the difference between the dot product of the aperture direction and the light direction minus the radius of the aperture. Pretty cool.

Please add this page to your RSS feed if like what you see so far.

## Real-time Ambient Maps

I visited the CryTek booth at GDC 2007 and watched their CryTek Engine tech demo trailer for about the 10th time. They have a lot of impressive looking things going on there, but one thing that I hadn’t really thought about until recently was their “Real-time Ambient Maps” which are demonstrated in this video: http://www.youtube.com/watch?v=VFtATu5gt3k

I don’t think a lot of people realize at first what exactly this feature is, besides the fact that the video looks good. While the point light soft shadows are nice, you need to look past them. The “ambient” part should be a tip-off. When doing surface lighting, the ambient term is an approximation to global illumination.. the amount of non-direct lighting incident on the surface. Ambient occlusion refers to the determination of the fraction of the hemisphere above a surface position that is occluded. Simply modulating an ambient lighting amount by the ambient occlusion factor adds a very effective approximation to global illumination. So therefore to get a decent approximation that accounts for multiple-bounce lighting, you have to get an approximation of the amount of light bouncing around the room.

Of course, I have **no idea** exactly what they are doing and the rest of this is speculation. But I would guess that in order to get an approximation of the ambient lighting term, they are rendering cube maps, in artist-defined positions, of the nearby surfaces shaded with direct lighting. Each texel in that cube map can be treated like a little light source. To get the amount of lighting incident on that cube map position, you can average all of the texel values in the cube map. Of course, each texel should be weighted by its distance from the cube map center to account for attenuation. The resulting value is a quick and dirty approximation of the ambient lighting term in the room! Assuming that these scenes are spatially subdivided by some structure such as a BSP tree, portals, etc. the cube map rendering would be accelerated by only rendering lit surfaces in nearby nodes.

Note that this is only an ambient term and has no directional properties. It’s also possible to convert that cube map into a spherical harmonic representation of irradiance which could in turn be used to light nearby surfaces. I found this poster, which describes doing something similar.

Anyway, just thought I’d post something about this because I’ve seen several posts on forums wondering what’s going on here. I’d love to hear anyone else’s thoughts.