In the realm of computer graphics, the art of ray tracing stands as a cornerstone technique, offering breathtakingly realistic images through the simulation of light rays interacting with objects in a scene.
This project was inspired by Peter Shirley's book "Ray Tracing in One Weekend". A basic ray-tracer from scratch using C++ has been constructed.
The primary aim of this project is to develop a foundational understanding of ray tracing principles and implementation techniques. Each step of the process, from modelling simple reflection equations to crafting complex materials like gloss and refraction, contributes to this overarching goal.
By following along with the chapters of Shirley's book and translating its concepts into code, the objective is to create a functional raytracer capable of producing compelling images with varying materials and lighting scenarios.
The project unfolds in a systematic manner, progressing through key stages of raytracer development:
Camera 3D Rays: A crucial aspect of any raytracer, the camera is implemented to emit rays into the scene, capturing the perspective of the virtual world and updating pixel values accordingly.
Intersection with Sphere: Basic geometry computations enable the determination of ray-sphere intersections, laying the foundation for rendering objects in the scene.
Object Normals: With intersection points established, the calculation of surface normals allows for realistic shading and illumination of objects.
Antialiasing: To combat jagged edges and improve image quality, antialiasing techniques are implemented, smoothing out pixel boundaries through random sampling.
Diffuse Material: The introduction of basic material properties allows for the simulation of light scattering and reflections, enhancing the realism of rendered scenes.
Gloss Material: Building upon diffuse materials, a gloss material with adjustable fuzziness adds complexity to surface reflections, simulating materials like metal.
Refraction Material: Advancing further, the project explores the intricacies of refraction, implementing Snell's law to simulate the behavior of light passing through transparent objects.
Adjustable Camera: Finally, the camera's parameters are fine-tuned, experimenting with focal lengths, perspectives, and positioning within the scene to achieve desired compositions.
The rendered images exhibit realistic lighting effects, including reflections, refractions, and shadows, camera focus as well as field of view.
With a solid foundation in place, the stage is set for further exploration and refinement, paving the way for future advancements in the field of computer graphics.