Ray tracing is a photorealistic image synthesis method where we trace coherent light rays between their source and the eye using physical simulation. Such methods are able to produce certain effects (e.g. shadows) much more easily than the scanline algorithms that are currently used in the gaming industry. They are also able to produce light effects scanline algorithms are not capable of (refracting materials, caustics). These abilities come at a severe performance price, however.
The local illumination methods solve the lighting equation by great simplifications: they only model direct light paths that connect the surface directly with the light source. This makes local illumination methods unable to produce certain light phenomena. To render truly photorealistic images, one should calculate the lighting equation in its original form, meaning the use of global illumination methods.
In this paper I present the implementation and results of a Monte Carlo based global illumination algorithm in C++. I will provide an overview of the graphical engine itself, the process of implementation, the arising technical and performance problems.