Course: Interactive Global Illumination

This course had a couple interesting talks, one by Bruce Walters and one by Per Christensen (originator of Photon Maps), but unfortunately drifted a bit from the topic during the middle.

Reusing Shading Results to Achieve Interactive Performance
Bruce Walter, Cornell

In order to hit interactive rates for global illumination renderings, we need tehcniques that allow the rendering (in particular shading) to run
less often than the framerate. Here is a survey of the techniques that have been developed:

Post-Rendering 3D Warp
- Render every nth frame
- Then use image warping to interpolate missing frames
- This requires predicting a future base frame to interpolate from, which limits applications. In particular, games are almost impossible to do this way

Corrective Texturing
- Start with a standard hardware rendering of scene
- And, start with a precomputed radiosity solution
- At each frame, take sparse samples of the global illumination and re-shade them
- Apply corrective textures based on samples as view-dependent projective textures
- Generate more samples where results change rapidly
- View-dependent samples are deprecated over time
[A fuller description of this technique is available online at http://www9.informatik.uni-erlangen.de/Persons/Stamminger/Research/corrtex]

Render Cache
- results of the global illumination are stored as cloud of unordered points with position, color, model, age, ...
- At each frame, reproject points into current frame
- Use occlusion culling heuristic
- Use an interpolation filter for filling holes
- Compute a priority image saying where to fill holes
- Fill holes with newly generated and shaded samples
- Points can be transformed along with their object
[an implementation of the Render Cache for the Cornell Box scene that runs on a standard Windows machine can be downloaded from Bruce's page at Cornell: http://www.graphics.cornell.edu/research/interactive/rendercache/]

Point & Edge Rendering
This is a SIGGRAPH 2003 paper that adds tracking of edge discontinuities to the basic Render Cache system. The full name of the paper is "Combining Edges and Points for Interactive High-Quality Rendering" by Kavita Bala, Bruce Walter, and Donald Greenburg of Cornell University.

Holodeck by Greg Ward
Renders samples stored in 4D light Field data structure
- Uses gouraud-shaded triangle mesh
- Get samples near current viewpoint
- Project onto view sphere
- Triangulate resulting mesh
- Use HW to draw resulting mesh
[The 1999 paper on the Holodeck is available at http://viz.cs.berkeley.edu/gwlarson/papers.html]

Tapestry (built on Holodeck)
- Prioritized sampling
- Incremental resampling of Delauney mesh
[see PDF file at http://www.graphics.cornell.edu/pubs/2002/TPWG02.pdf]

Shading Cache
Display mesh is refinement of original scene mesh
- no occlusion errors
- hw handles textures
- display mesh >= original mesh
- easier to handle moving objects
Added flood-fill heuristic for sampling
Mesh de-refinement over time


Industrial-Strength Global Illumination
Per Christensen, Pixar Animation Studios

Per basically talked about how the standard objections to global illumination (too slow, too uncontrollable, too tied to physics) have been overcome by modern global illumination implementations, and how they're moving global illumination into production at Pixar. It was a good rah-rah talk, but really didn't have a lot of specifically useful information.

Not surprisingly, it came out during the Q-and-A of this segment of the course that many of the production-oriented features of the global illumination implementation being done for the new renderer within Pixar are not being released in the public product. I knew that already but it was ugly to watch Per have to admit it in public.

Stochastic Solutions
During the talk by the guys from the Max Planck Institute (which I overall didn't find very interesting), they covered this little statistical gem:

The Halton Sequence: Way of generating very fast pseudo-random numbers. The Halton sequence maps an integer to a floating point number in the range [0,1). For a given integer, the Halton Sequence value is the digits reversed and written to the right of the decimal point:
(for base 10) 123 => 0.321, 124 -> 0.421, etc.
This is a pseudo-random across wide ranges. To get multi-dimensional Halton Sequences, use differently relatively prime bases for the different dimensions (i.e., base 5 for one dimensional and base 7 for another).

The full name of this course was "Global Illumination for Interactive Applications and High-Quality Animations". It was Course #27 at SIGGRAPH 2003.