next up previous
Next: Final Up: Week 9 Previous: Week 9

Subsections

   
Importance

Read CW [10] pp 201-208 and for more details, see Smits et al[33] as well as [28].

Motivation

The motivation for this work is that for most global illumination solutions, only some subset of the environment is ever looked at. This subset may be a single image, a set of images, an animation, or an object. In these cases, a lot of work is done in areas the user isn't interested in. These areas can't be ignored because global illumination is a global process. The radiance of any area can and often does have an effect on other parts of the environment. Most of the time this effect is minimal, but sometimes it can be significant. We want to compute an accurate solution for some subset of the environment with the least amount of work (refinement) that we can get away with.

Sensors and Adjoints

Imagine a light sensor in an environment. The sensor extracts some subset of the environment and weights it to return a value. Let's assume the sensor is linear with respect to its input. We can express this mathematically as

\begin{displaymath}s = \int_E \int_{H^{in}}S(x,\omega) L(x,\omega) d\omega dx.
\end{displaymath}

This is just an inner product between S and L

s = <S,L>.

In fact, an idealized sensor can be represented by any valid inner product.

Now we introduce a new transport system related to that of radiance that acts on the sensor weight function $S(x,\omega)$. The reasons for introducing it will soon become clear.

M* I = S

Where M* is the adjoint operator (defined so that the equality holds) which for matrices is simply the transpose, and I is called importance.

Now, going back to the inner product for the sensor and rewriting and manipulating things, we get

s = <S,L> (19)
  = <M* I ,L> (20)
  = <I, ML> (21)
  = <I,Le> (22)

We have shown that the sensor's response to the radiance function is equal to the inner product of the emission function with the solution to a related transport problem.

Intuitively, importance at a point gives the effect that radiance emitted at that point that will have on the sensor.

Importance Driven Refinement

A hierarchical radiosity algorithm creates a matrix $\widehat{M}$. We can view this matrix as a perturbation of the exact operator M and write it like this

\begin{displaymath}\widehat{M}= M+ \Delta M.
\end{displaymath}

Now, assuming exact emittances, $\widehat{L}$ is the solution to this perturbed system. With a little substitution, we can view $\widehat{L}$ as the exact solution to a perturbed set of emittances

\begin{displaymath}M\widehat{L}= L_e- \Delta M\widehat{L}
\end{displaymath}

Now we can show how to use importance to help drive the refinement. The error in sensors response is

$\displaystyle \left< S \, , \, L- \widehat{L} \right>$ = $\displaystyle \left< S \, , \, L \right> - \left< S \, , \, \widehat{L} \right>$ (23)
  = $\displaystyle \left< I \, , \, L_e \right> - \left< M^{*}I \, , \, \widehat{L} \right>$ (24)
  = $\displaystyle \left< I \, , \, L_e \right> - \left< I \, , \, M\widehat{L} \right>$ (25)
  = $\displaystyle \left< I \, , \, L_e \right> - \left< I \, , \, L_e-
\Delta M\widehat{L} \right>$ (26)
  = $\displaystyle \left< I \, , \, \Delta M\widehat{L} \right> .$ (27)

This relates error at the sensor to error in the transfer matrix. Unfortunately, we do not have I and getting it is exactly as hard as getting L. We can, however, estimate I at the same time we are computing $\widehat{L}$, and refine it as we refine $\widehat{M}$ and $\widehat{L}$, giving $ \left< \widehat{I} \, , \, \Delta M\widehat{L} \right> $. A bound instead of an estimate can be found in Lischinski et al[22] Looking at a specific link between basis functions i and j, the error term is $\vert\widehat{I}_i\Delta M_{ij}\widehat{L}_j\vert$.

Implementation Summary

Surfaces must now store both importance and radiance, however, since the transport matrix for importance is simply the transpose of the radiance transport matrix, no additional information needs to be stored on the links (nor are two sets of links needed, although some later extensions seem to require this in order to achieve some slight conceptual clarity).

Changes to the refine code are trivial, the error function changes slightly. Changes to the gather code are a little more extensive. While gathering radiance, the code must push importance out (importance, as described here, travels in the reverse direction as radiance). This means that Gauss-Seidel is not an option (at least for the importance half) as the updates aren't local. This increases storage and solution time a little, however the resulting speed up is significant. Empirically (and somewhat theoretically, although we won't cover why [22]) the speed up is roughly proportional to the surface area the user is interested in (initially important) compared to the overall surface area of the environment. For complex environments, this can be significant.

Initial importance can be assigned in a number of ways. Importance can stream from an camera-like emitter, within the field of view of the camera. This effectively makes all visible surface important, and weighting them by the amount of screen space they take up. There can be several of these emitters if multiple images are desired, although if two cameras see the same surface, that surface probably shouldn't be twice as important. Importance can be emitted from along an animation path, or from within a constrained viewing volume (theater lighting). Finally, importance can be emitted from an object. An example of where this would be useful is for determining lighting on a sculpture in a museum. All parts of the sculpture are important, but the backdrop isn't necessarily important. Also, for any sort of appearance design (car body desgin) where the object is in an environment, but it's the object that the user cares about.


next up previous
Next: Final Up: Week 9 Previous: Week 9
Comments: Brian Edward Smits
1998-06-08