Simple Vulkan physically based render that can render meshes in classic rasterisation pipeline, but also contains Path tracer that uses RayTracingPipeline to utilise RT cores for a real time path tracing.
- Rendering API - Vulkan (
vulkan.hpp) - Shading Language - Slang
- Language - C++
- Math - glm
- User interface - Dear ImGui
- .glTF parsing - fastgltf
- .ini parsing - mINI
- SPIR-V Reflection - SPIRV-Reflect
- Gizmo - ImGuizmo
To run this project, for now it is crucial that your GPU supports VK_KHR_ray_tracing_pipeline !
git clone https://github.com/wpsimon09/Vulkan-RTX.git --recursive ## recursive has to be there- this library is used for window creation and provides context for Vulkan
On windows
On Linux
# On Ubuntu/Debian:
sudo apt update && sudo apt install -y libglfw3 libglfw3-dev
# On Arch Linux:
sudo pacman -S glfw --noconfirm
# On Fedora (Red Hat-based distros):
sudo dnf install -y glfw glfw-devel
# On openSUSE:
sudo zypper install glfw-devel
On windows
On Linux
# On Ubuntu/Debian:
sudo apt update && sudo apt install -y libglm-dev
# On Arch Linux:
sudo pacman -S glm --noconfirm
# On Fedora (Red Hat-based distros):
sudo dnf install -y glm-devel
# On openSUSE:
sudo zypper install glm-devel
sh build.sh ## default is debug
## in debug mode (explicitly)
sh build.sh debug
## in release mode (app wont work in release mode now)
sh build.sh releaseNote that you must have python installed verify this by running
python --help
Shaders are compiled using t--no-skip-unchangedhe slangc compiler, which can be downloaded from here.
Shaders are already precompiled, so you don't need to do this. Only recompile them when you change the shaders.
To get started, navigate to the Shaders directory:
cd ShadersThen, open compileSlang.py and change the variable SLANGC_PATH to point to the slangc executable.
Example:
SLANGC_PATH = "/home/user/SDKs/slang/bin/slangc"
Once done, use Python to compile the shaders from the Shaders directory:
## assuming you are in the Shaders directory
python compileSlang.py --verbose --no-skip-unchangedThe --no-skip-unchanged option forces all shaders to compile, even if they haven’t changed. --verbose flag, will print detailed messages about compilation process
- Model Loading
- Scene Exporting (To glTF)
- Forward Renderer
- Area Light With LTC
- Ray Traced soft shadows
- Real time path tracing (with RT cores)
- Image Based Lighting
- Real time selectable Tone mapping curves
- Automatic exposure
- Scene Editor With Gizmos
- Real Time Material Customisation
- Multy threaded lazy texture loading
- Bindless descritptors for material textures
- Large scale homogeneous participating media rendering
- Ray traced AO
- Bilateral filter denoiser
- Physically based bloom
- Atmospheric scattering
- Ray traced reflections with importance sampling
Screencast.From.2025-10-12.18-52-59.mp4
