Next: Bidirectional Tracing Up: Radiosity-based Global Illumination Previous: Form Factors

# Progressive Refinement

Progressive Refinement:
Basics
• Full matrix solution is slow, with no partial answer
• Requires storage and time, since we need to store form factors for entire calculation
• Recall our equation says how much radiosity is comes from patch j to patch i:

Light is being gathered at patch i.

• Idea: Choose a patch, shoot its radiosity to all other patches, repeat.

Progressive Refinement:
Code

```Procedure Shoot(i)
For all j, calculate all Fji
Foreach j
endfor
dBi = 0```
Call from
```while (unshot > eps) do
Choose patch i with highest dB
Shoot(i)
end```

Progressive Refinement:
Analysis

• Shoot lights first
• Can stop and look at partial results
• Can be formulated as a matrix equation
• Lots of cute tricks:
• Add initial ambient to all patches so that initial results more viewable
• Can move objects and lights after calculation has started
• Technically, this is no faster than full matrix, but we can stop early
• If we play tricks it is faster than full matrix

Questions:

• How big should we make initial patches?
• When do we stop Progressive-Refinement?

Problems

• T-vertices and edges cause light/shadow leakage
• Occlusions and shadows hard to model
• Form factor estimations often cause aliasing

Extensions

• Methods for adding specular (but expensive)
• Substructuring improves quality without increasing big-O
• Smarter substructuring reduces big-O

CS488/688: Introduction to Interactive Computer Graphics
University of Waterloo
Computer Graphics Lab

cs488@cgl.uwaterloo.ca