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.