Aurora (2013)

Windows, C++, CUDA, Maya API

Aurora is a Monte Carlo distribution raytracer for Autodesk Maya 2014 using NVIDIA CUDA technology for accelerating rendering on the GPU.

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 bandwith saturation.

Targetting CUDA turned out to be quite a design challenge due to seperate memory spaces (host memory and device memory) and NVCC's lack of support for full C++. Maya API code and CUDA kernels are seperated 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. In the future I plan to extended it with progressive photon mapping as a global illumination algorithm.

Maya plugin installer
Source code