A physically-based ray tracer with global illumination, soft shadows, and more
A ray tracer simulates the way light interacts with virtual objects to create realistic images. Starting from the camera's perspective, it traces rays of light as they travel through a scene, calculating how they interact with different surfaces and materials.
This implementation processes POV-Ray scene files, supporting various geometric primitives, materials, and lighting models. The ray tracer was developed in C++ using the GLM library for vector and matrix operations.
Implemented soft shadows by treating point lights as area lights, casting multiple shadow feeler rays and averaging the results to create more natural-looking shadows with penumbras.
Comparing standard rendering (left) with soft shadows enabled (right)

Standard Rendering

With Soft Shadows

Standard Rendering

With Soft Shadows

Standard Rendering

With Soft Shadows
Spheres, triangles, planes, and boxes
Reflection and Refraction
Monte Carlo Global Illumination
Anti-Aliasing
Transformations