If you are new to the topic of ray tracing you might want to read through this section.

Ray tracing is a rendering technique that generates a 2D image out of a given 3D scene. This is done by simulating the physics of light propagation using rays. The algorithm shoots, for every pixel on the screen, a so-called "primary ray" from the perspective of the eye of the viewer. The ray tracing algorithm then determines which object is hit first on the path of the ray.

At that hit-point a shader program is invoked which could, for example, cast another ray to simulate (say) a reflection at a mirror.

Through so-called "shadow rays" it can be easily determined if a given pixel is lit or in shadow. If a ray from the point in question can be shot to the light source without being blocked, then it can be concluded that light reaches that point. In the other case – when it is blocked – then we can conclude that the point is in shadow.

The ray tracing approach I am reporting about in this article is calculated completely on the CPU. No graphics card is needed to create the image. (Once created, we merely transport the pixels to the graphics card to have it paint the image onto the monitor).

Another approach to generate a 2D image out of a 3D scene is called "rasterization" and is currently performed by special-purpose hardware graphics cards. Currently, this the standard way that games "render" the images you see using standard libraries like DirectX or OpenGL.