RAY TRACER
Role
Programmer
Language
C++
Duration
8 Weeks
Team Size
Solo Project
This project was made as a part of a graded assignment during my 1st year of education at BUas.
​
This was a solo project, work done for this project included: Multithreading, BVH, Adaptive sampling​, Multiple materials, Area lights and more.
Personal Focus & Contributions
Optimization was one of the most important aspects of this project. For this project I researched and implemented BVH using different split techniques, for example: SAH.​ To further optimize BVH, I converted it into a compact representation (Linear layout in memory). After building BVH, the tree is transformed to the linear representation by performing a depth-first traversal and stores the nodes in memory in linear order.
​
On average BVH with linear memory layout improved performance of the ray tracer by 90 times when rendering more complex scenes. Which allowed to render many primitives while maintaining sufficient performance.
​
Multithreading was used to accelerate rendering by dividing the screen into multiple blocks (tasks) and distributing tasks between threads.