A full spectral polarisation Monte-Carlo Raytracer

7.1. Tracing a ray – overview

In the field of computer graphics, many different implementations of Monte-Carlo (MC) raytracing can be found. A good overview is provided by Jansen et al. (2003). The methods apply different advanced methods of MC sampling known as, e.g. Metropolis sampling, importance sampling or Russian roulette. All methods aim at providing realistic renderings of objects with the highest possible efficiency, i.e. the shortest possible calculation time. In order to achieve this, the methods cast rays (light particles) from the eye-point towards the viewed area. Since the light is traced against its natural direction, these methods are referred to as backward raytracing, while tracing the light in its natural direction is referred to as forward raytracing (unfortunately, some authors with computer graphics background use the terms with interchanged meanings).
Backward raytracing is very efficient on the first hand, as it guarantees that every cast ray hits an object in the visible area first and therefore provides valuable information for the rendering. The efficiency of the methods is then determined after this first hit when the light incident to this first collision point has to be sampled efficiently. The light incident to this point will generally show high spatial fluctuations, as usually distinct, angularly limited light sources, or reflections of these, are present. The various MC sampling strategies aim to solve this integration of the incoming light as efficiently as possible. Special requirements must be met in this sampling process, as the visual appearance of the object, and not the energy of the light, is the relevant measure.
Reversing directions and using forward raytracing for image rendering is possible in theory but not from a practical point of view, as it is simply too inefficient. Forward raytracing, e.g. of an outdoor environment, would mean that every ray of light initiates from the sun’s direction or some from the sky dome if scattering is considered. The rays are then scattered on objects, and only a very small fraction of them would finally reach the virtual camera lens to provide imaging information. However, most rays would either be absorbed or scattered in other directions. The overwhelming majority of cast rays would therefore be useless for the rendering process.
However, a similar reasoning applies in reverse in the application presented here. The focus of this application is determining the paths that the energy (or power) carried by the incident light particles are taking. In this context, any light particle contributes equally relevant information, regardless of whether it is absorbed or transmitted through the object. Hence, an unbiased sampling strategy fulfils the requirements of this energetic analysis best. In the context of rendering and backward raytracing, this unbiased strategy would cause the appearance of some surfaces to be determined by very few samples only, leading to noise-like colour or brightness fluctuations in the image. In the energetic context, however, the number of samples absorbed by a surface is always related to the density of the incidence light. Therefore, the relative accuracy of the results is determined by the total of light particles cast and can, therefore, even be high for a surface absorbing no particles.
Following this line of reasoning, an important design choice is that no recursive path splitting is applied during the raytracing process. This means that whenever light is scattered into different directions or simultaneously reflected, absorbed and transmitted, always one path is selected and followed further on, maintaining the full energy of the light particle. Since the probability of these paths is determined based on the underlying probabilities, the law of large numbers ensures that the A full spectral polarisation Monte-Carlo Raytracer RadiCal, D. Rüdisser 155 results converge to the expected value. Splitting the path into N sub-paths would lead to a recursive division, resulting in a large number of branched paths. On average, all of these paths would be computationally as expensive as the single path; however, most would carry little energy and, therefore, contribute little relevant information. Avoiding path splitting is, therefore, significantly more efficient for the intended application.