Voxel ambient occlusion

This was my final project for the Computer Graphics course as an MSc. student at UFRGS. The goal was to experiment how voxel representations of a scene can be used to compute effects typically used in raytracing engine, ambient occlusion being the simplest I could come up with.

It works by computing a voxel representation of the scene (inspired by the work of Crassin et al), then inside the fragment shader we shoot rays from the mesh and try to intersect them with the voxelized version of the scene to compute a Monte Carlo approximation to the ambient occlusion integral.

Everything runs in software using my own rendering engine.

Source code

Some well known scenes rendered using local, diffuse illumination with (left) and without (right) our ambient occlusion effect.