A real-time path tracing renderer in Vulkan.
Originally an SFU CMPT 469/722 course project during the Spring 2025 term.
Required:
- C++ 20 compiler
- CMake 3.22
- Vulkan 1.4 SDK
Included:
- GLFW
- OpenGL Mathematics (GLM)
- stb
- TinyGLTF
- Vulkan Memory Allocator (VMA)
Clone the repository with submodules:
git clone --recurse-submodules --shallow-submodules https://github.com/gpcm00/rt_renderConfigure the build directory and build the project (Windows or Linux):
cmake -B build
cmake --build buildDownload the glTF sample assets:
cd build
git clone --depth 1 https://github.com/KhronosGroup/glTF-Sample-AssetsRun the application from the same directory as the glTF sample assets. It uses the sample asset ABeautifulGame.gltf as the default scene, but you can pass it a file path as a command line argument, for example:
./renderer.exe "glTF-Sample-Assets/Models/ABeautifulGame/glTF/ABeautifulGame.gltf"
Due to time constraints, not all sample assets are supported.
- Movement: WASD keys
- Camera Rotation: Mouse
- Exit: Escape key
The code organization is as follows:
- The
shadersfolder contains the GLSL shader source code. - Our implementation is split across the
srcfolder which contains our.cppfiles while the header files are in theincludefolder. Our renderer code is primarily ininclude/renderer/renderer.hppandsrc/renderer.cpp. - The
externaldirectory contains third-party dependencies in the form of git submodules.



