Read CW[10] chapter 5.
We can invert the matrix explicitly or use iterative techniques to solve the system of equations without fully inverting.
Common iterative techniques are:
As the matrices are very expensive to store (
), the matrix
elements were computed as they were needed. The matrix needed to be
accessed row by row, and (not by coincidence) the hemicube method
computes an entire row at once.
Notice that both Gauss-Seidel and Jacobi look at a row (i) of the matrix
and compute a new entry for
.
The physical explanation for
this is that we are computing a new estimate for basis function
(surface) i by gathering energy from the rest of the environment.
Initially, most of the environment is dark, cause much of the work in
the initial iteration(s) to be wasted. Computing a single new entry
requires
work assuming efficient visibility
checking. Therefore it takes a lot of work to get to a reasonably
converged solution. There are too many insignificant transfers of
energy when doing a gather at each element. We want to reorder the
compuation so that significant transfers are accounted for first.
Rather than gathering energy at each reciever, shoot from each source. Order the ``shots'' so that the ones with the most energy occur first.
Each patch (or basis function) holds to values (colors), one stores the radiance for the surface, the other holds the radiance on the surface that has not yet been shot. When energy is shot to a patch, both the total radiance and the unshot radiance are incremented by the amount of radiance striking it. After a patch shoots it's energy, the value of the unshot gets set to zero.
Patches are sorted by energy, not radiance, because a very tiny, yet bright surface will have less effect on an environment than a very large yet less bright surface.
As the solution progresses, the overall intensity of the environment increases. Ambient Approximation
A matrix as a set of links.
Links to different levels of a subdivision hierarchy.
Gortler Radiosity and Relaxation Methods: Progressive Radiosity is Southwell Iteration [14]