Skip to content

sfreed141/vct

Repository files navigation

Build Status

Voxel Cone Tracing

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.

References

Libraries Used

Models

Building

Linux

  1. Install glm and glfw3 using your package manager.
  2. cd into root directory of project. mkdir build; cd build; cmake ..; make.
  3. Good to go!

Windows

  1. Install Visual Studio Community 2017. Make sure to install Visual C++ and enable the "Desktop development with C++" option.
  2. Install dependencies using vcpkg.
    • Clone or download vcpkg to C:\src\vcpkg.
    • Install vcpkg, integrate with Visual Studio, and install packages:
    C:\src\vcpkg> .\bootstrap-vcpkg.bat
    C:\src\vcpkg> .\vcpkg.exe integrate install
    C:\src\vcpkg> .\vcpkg.exe install glm glfw3
    
    You can also install x64 versions of the libraries:
    C:\src\vcpkg> .\vcpkg.exe install glm:x64-windows glfw3:x64-windows
    
  3. If you didn't install vcpkg to C:\src\vcpkg, update the CMAKE_TOOLCHAIN_FILE variable in CMakeSettings.json appropriately.
  4. In Visual Studio, open the project by going to File>Open>CMake... and selecting the CMakeLists.txt file in the root project directory.
  5. Good to go!

Screenshots

With global illumination: With Global Illumination

Without global illumination: Without Global Illumination

Voxelized representation of the scene (cracks are from not using perfect conservative rasterization, which is okay for our purposes): Voxelized Scene

The voxelized VPLs (virtual point lights) that are filtered and cone traced (to approximate indirect lighting): Radiance Voxels

About

Voxel Cone Tracing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •