This is the implementation for my passing thesis, Real-Time Dynamic Global Illumination using Warped Voxel Cone Tracing.
At its core, the application is a standard forward rendering engine supporting multiple lights, shadow mapping, and normal mapping---in addition, of course, to full real-time dynamic global illumination. The scene to be rendered is composed of one or more actors, which are simply meshes loaded from the generic Wavefront OBJ file format. Actors are also capable of rigid body animations.
In general, the main steps in the rendering pipeline are generating a voxelized representation of the scene, creating a filtered representation of light from the voxels and light sources, and finally shading the scene.
Screenshots are included at the bottom of the README.
- Interactive Indirect Illumination Using Voxel Cone Tracing
- OpenGL Insights: Octree-Based Sparse Voxelization Using the GPU Hardware Rasterizer
- Install glm and glfw3 using your package manager.
cd
into root directory of project.mkdir build; cd build; cmake ..; make
.- Good to go!
- Install Visual Studio Community 2017. Make sure to install Visual C++ and enable the "Desktop development with C++" option.
- Install dependencies using vcpkg.
- Clone or download vcpkg to
C:\src\vcpkg
. - Install vcpkg, integrate with Visual Studio, and install packages:
You can also install x64 versions of the libraries:C:\src\vcpkg> .\bootstrap-vcpkg.bat C:\src\vcpkg> .\vcpkg.exe integrate install C:\src\vcpkg> .\vcpkg.exe install glm glfw3
C:\src\vcpkg> .\vcpkg.exe install glm:x64-windows glfw3:x64-windows
- Clone or download vcpkg to
- If you didn't install vcpkg to
C:\src\vcpkg
, update theCMAKE_TOOLCHAIN_FILE
variable inCMakeSettings.json
appropriately. - In Visual Studio, open the project by going to
File>Open>CMake...
and selecting theCMakeLists.txt
file in the root project directory. - Good to go!
Voxelized representation of the scene (cracks are from not using perfect conservative rasterization, which is okay for our purposes):
The voxelized VPLs (virtual point lights) that are filtered and cone traced (to approximate indirect lighting):