In probabilistic form factor computation, rays were fired from surfaces to determine which other surfaces can absorb their radiosity. In progressive refinement, on the other hand, the radiosity is shot proportionally to the precomputed form factors. These approaches can be merged in a method which randomly shoots photons carrying a given portion of energy. As in progressive refinement, the unshot and total radiosities are initialized to the emission of the surfaces. At each step of the iteration a point is selected at random on the surface which has the highest unshot radiosity, a direction is generated according to the directional distribution of the radiation (cosine distribution), and a given portion, say 1/nth, of the unshot energy is delivered to that surface which the photon encounters first on its way.
The program of this algorithm is then:
for j=1 to N dodo j = Index of the surface of maximum
![]()
= a random point on surface j by uniform distribution
= a random direction from
by cosine distribution if
hits surface i first then
+=
;
+=
; endif
-=
;
; while error > threshold;
This is possibly the simplest algorithm for radiosity calculation. Since it does not rely on form factors, shading models other than diffuse reflection can also be incorporated.