Aurora (2013)

Windows, C++, CUDA, Maya API

GPU accelerated Monte Carlo distribution raytracer using NVIDIA CUDA. A plugin for Autodesk Maya 2014.

This project is accompanying my master's thesis titled „Light modeling in Computer Graphics on the GPU“, written under the supervision of Mr. Wojciech Kowalewski PhD at Faculty of Mathematics and Computer Science, Adam Mickiewicz University of Poznań.

The raytracer operates on triangle meshes which get spatially presorted in a way that allows indexing geometry like a heap and thus accelerating ray-scene intersection tests. This method was published by Eisemann et. al. in 2012, in their technical report "Geometry presorting for implicit object space partitioning". Not using a dedicated acceleration structures poses a huge advantage for GPUs where main bottleneck is memory bandwidth saturation.

Targetting CUDA turned out to be quite a design challenge due to separate memory spaces (host memory and device memory) and NVCC's lack of support for full C++. Maya API code and CUDA kernels are separated and shared classes avoid inheritance or virtual functions.

The raytracer aims to be physically accurate and supports point, directional and area lights, Lambertian diffuse surfaces and Fresnel reflection/refraction.