Ray Tracer

Render High-Quality Geometries

Features Images Technology

Features

Complex Geometries

Renders complex geometries by accurately tracing the path of light through virtual 3D environments, mathematically determining the intersections of rays with intricate object models, and producing highly detailed and photorealistic images.

Efficient

Utilizes a bounded volume hierarchy which allows for fast intersection testing of rays with objects in the scene by organizing them hierarchically into bounding boxes, thus reducing the number of objects that need to be considered at each step.

Shading

Implements Phong's shading model which results in accurate and realistic lighting by considering the angle of incidence, angle of reflection, and surface's specular, diffuse and ambient properties in the calculation of the final color of each pixel on the screen, taking into account the position and intensity of light sources in the scene.

Shadows / Reflections

Shadows and reflections allow for a realistic scene by tracing secondary rays from each point that the primary rays hit, to determine the visibility of light sources, and then simulating the effect of reflected light by tracing additional rays to identify the color and intensity of any reflecting surfaces.


Images


Tech Stack and Description

About the Project

By using C++ and GLM, I built a powerful and high-quality ray tracing program that can create stunning, photorealistic images of complex scenes. It works by tracing the path of light through virtual environments and mathematically calculating the intersection of rays with objects in the scene. This program utilizes a Bounded Volume Hierarchy (BVH) which allows for fast intersection testing by hierarchically organizing objects into bounding boxes, thus reducing the number of objects that need to be considered at each step. The implementation of Phong's shading model results in realistic and accurate lighting by taking into account the angle of incidence, angle of reflection, and surface's specular, diffuse, and ambient properties in the calculation of the final color of each pixel on the screen, considering the position and intensity of light sources in the scene. The program also creates realistic shadows and reflections by tracing secondary rays from each point that the primary rays hit, to determine the visibility of light sources and simulating the effect of reflected light by tracing additional rays to identify the color and intensity of any reflecting surfaces.

Technology / Skills

C++

Linear Algebra

GLM

Debugging

Git

GitHub

Terminal

Computer Science Concepts

Object-Oriented

Inheritance

Polymorphism

Data Structures

Algorithms

Testing