With the following interactive illustration you can see how the sound energy is propagated to the surfaces in the radiosity technique.
The first phase of the radiosity technique is energy propagation than can be outlined as in the following. In that pseudo-code each surface in the geometry is assumed to be tessellated to patches of appropriate size. Smaller the patches are, more accurate the simulation will be but at the cost of increased computation time and memory requirements.
The algorithm is based on iterative propagation of the sound energy. At each iteration a patch with most energy waiting to be propagated is searched, and that energy is propagated to all the other patches. This is continued until the total amount of remaining energy reaches the given termination level that represents the amount of energy that can be considered to be negligible. The decay of the energy comes from the reflection operation that implements the absorption due to material properties. Without any absorption the algorithm would be in an infinite loop as there would be no energy decay.
It is worth noting that in all the pseudo-code inserts in this section, the sound propagation delay is neglected. In a real implementation, such as is in the illustrations in this section, all the energy storages need to be able to handle time as well. This can be achieved most simply by changing the energy to be an array that can be addressed by time that is quantized into small enough time slots. In practice it is recommended to have the temporal resolution of the responses to be finer than what is the shortest propagation delay between patches in the geometry. By this means it is possible to avoid loops in which the sound arrives to a patch at the same time when it is emitted from another patch. Another option for storage would be to store all the events individually thus storing the temporal information more accurately, but that would would be viable only for very low reflection orders.
There are different ways to implement the energy propagation between surfaces. In the algorithm above it is assumed that there is a function formFactor that returns the fraction of energy that is propagated from one patch to another one. At this point it is sufficient to know that it depends on the mutual angle of the two patches and on their mutual distance from each other. The exact formula for the form factor is presented later in relation to the Room Acoustic Rendering Equation. Besides the analytic form to compute the form factor it can be obtained by ray-tracing such that a number of rays is emitted from the patch and all the patches that are hit by those rays register the energy based on the number of rays hitting the patch. Actually, the illustration above uses that approach.
It is possible to pre-compute the form factor values for each pair of surface patches. However, in very large geometric models this might became problematic as the number of required form factors grows quadratically with respect to the number of patches. For this reason, it is sometimes better to compute the form-factors on the fly whenever needed as storing all of those would take too much memory.
It is essential to note that in the basic radiosity technique there is no need for the algorithm to remember any previous history of the reflection path. The sound energy from all the possible incident angles is treated similarly as there is no angle-dependence in ideally diffuse reflections. This enables efficient memory usage as it is sufficient to store just one temporal response at each patch.
|III.5.6 Brief History (previous)||III Modeling Techniques based on Geometrical Acoustics (up)||III.6.2 Bidirectional reflectance distribution function (BRDF) (next)|