1 minute(s) to read
Computer-generated rendering
C++ computer graphics rendering and ray tracing program
Concept Overview
Computer graphics is a technique for creating digital images with the aid of a computer. This field is closely linked to the graphic arts, utilizing numerous software tools for tasks such as photo retouching, coloring comic books, and various other artistic applications.
For this project, we focused primarily on algorithmic image generation—also known as image synthesis—and specifically on simulating the light captured by a camera using ray tracing.
Ray tracing is a computational optics technique used for image rendering as well as for studying optical systems in general physics. It involves simulating the reverse path of light: lighting is calculated from the camera to the objects and then to the light sources, whereas in reality, light travels from the scene to the eye.
Physical phenomena such as reflection and refraction are thus reproduced using an algorithmic and mathematical approach (based on principles like Fermat’s principle of reversibility and Snell’s laws). A naive implementation of ray tracing cannot account for optical phenomena such as caustics, global illumination, or light dispersion.
Project Overview
I was introduced to this technique during the second year of my DUT (University Diploma of Technology) in the final algorithms module. At the start of the project, our professor provided the code for the various data structures involved in ray tracing (camera, light sources, 3D objects, etc.). It was then up to us to implement the necessary methods to perform the ray tracing and generate the image shown above.
The codebase belongs to the XLIM laboratory in Limoges; the professor had removed the algorithms for the key calculations, which we were required to recreate based on what we had learned in class.
And where can I find this code?
As mentioned above, the code belongs to the XLIM laboratory. Therefore, I cannot share it.