First year project at BUAS
A whitted style ray tracer on the CPU
Introduction to raytracing
This project was my first introduction to ray tracing. It involved writing our own linear algebra library with matrix and vector functionality. The project is entirely written in C++. It was a solo project.
Acceleration Structures
During the project I learned about building efficient bounding volume hierarchies to traverse the scene faster. In combination with multi-threading, somewhat real-time framerate was possible on the CPU.
Rendering Effects
During the project I added refraction with fresnel taken into account. I also worked on soft shadows with area lights and ambient occlusion.
Shapes
Intersections are calculated by doing AABB and transforming the rays into local space. The primitives themselves are spheres, cubes, triangles and planes. I keep a hierarchy of materials to determine how to refract when leaving/entering multiple materials.
Path Tracing
This project was my introduction to ray tracing, and eventually resulted in me joining the path tracing project in year 3. The project page for the path tracing project can be found here.