In the first year, during Block B, I developed a CPU raytracer using Whitted-style ray tracing. The project involved working with a template provided by the school, which handled the rendering of pixels on the screen.
Overall, the goal was to improve the performance and efficiency of the raytracer. This provided opportunity to research into optimization techniques and gain experience in the field of computer graphics.
I created a GitHub repository. You can visit it by following this Link
I found it hard at first to understand the mathematical aspects of raytracing, including how lighting interacts with objects.
I had to learn these concepts from scratch since I had no previous knowledge of their implementation.
Implementing multithreading in C++ and optimizing the code were additional challenges due to my experience in these areas.
Fortunately, I received support from my school, which greatly contributed to my learning and progress in the project.
This is one of the key factors contributing to the improved rendering speed of the raytracer. I used the SAH (Surface Area Heuristic) split BVH acceleration structure. In short, what this structure does is it optimally organizes the scene's geometry by recursively partitioning it into bounding volumes based on the SAH. This approach efficiently narrows down the intersections that need to be calculated, resulting in faster rendering speeds.
I optimized the CPU raytracer using SIMD, Multithreading, and an acceleration structure. Beyond that, I prioritized minimizing divisions and other intensive calculations for enhanced efficiency.