Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Screen Space Ambient Occlusion

This is sort of an implementation of Scalable Ambient Obscurance by McGuire et al. however I make a few simplifying shortcuts in my implementation and don't achieve as good performance or quality. I was also unable to get their new recommended estimator to behave so this implementation still uses the Alchemy AO estimator initially recommended in the paper. I have a somewhat longer write up available on my webpage since this was initially implemented as a class project.


The build system is a bit awkward at the moment as I developed this project and glt simultaneously so it's included as a git submodule. The project also depends on SDL2 and GLM which CMake is typically able to find. If not you can pass -DSDL2=path/to/sdl2 and -DGLM=path/to/glm when running CMake to help it out. I also use imgui which you should download and drop under external/imgui, later I plan to add a download step to fetch imgui to the CMake build.


You can pass any OBJ file through the command line but the camera and other settings for the AO are only really configured for a slightly modified version of Crytek Sponza that uses the OBJ file from McGuire's meshes page but the textures from the original Crytek Sponza.


Full render combining AO with all other effects: Full render

Ambient occlusion values only: AO only

I also made a short video which you can watch if you want to see the effect in action without running the project yourself.


Sort of an implementation of Scalable Ambient Obscurance, but not quite




No releases published


No packages published
You can’t perform that action at this time.