The thesis’ main goal was to create a ray tracer that can load its objects from a file. The chosen format was .obj, since there are many ready-to-use models on the internet for it. This implementation only uses loads triangles and the materials accompanying them.
The ray tracer includes an accelerating structure that significantly increases performance. In my implementation this isn’t an automatic process, so we have to be informed about the object’s overall structure, and set the options for this feature by hand.
The most significant part of this dissertation is the usage of the CUDA platform. With it, we won’t have to rely on only the CPU’s power for our pixel calculations, we can use the GPU to do this on parallel processes. There is one restriction, CUDA is an Nvida product, which means we can only run this implementation on certain video cards.
The display was done with OpenGL, which is also responsible for the inputs. Besides this, I measure how much time it takes to render one frame, this is displayed on the console in real time. These inputs let us rotate the model, or move it closer/farther, this is important because using this, we can see changes in the program’s performance. This is due to the fact that the acceleration structure normally speeds up the process so significantly, that if we don’t utilize it perfectly, we can already see the performance dropping. (most notable on zooming in)