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