Simple Vulkan physically based render that can render meshes in classic rasterisation pipeline. But also contains Ray tracer that renders the scene on the full screen Quad by utilising the ray tracing technology.
The goal is to eventually transition from a purely shader-based ray tracing implementation to leveraging Vulkan's dedicated ray tracing pipeline
- Rendering API - Vulkan (
vulkan.hpp
) - Shading Language - Slang
- Language - C++
- Math - glm
- Dear::ImGui - User interface
- Current code needs quite a lot of refactoring and simplification.
- Ray Tracer does not yet represent the scene that is rendered with raster pipeline
- Ray Tracer does not yet use accumulated average to de-noise the rendered image
- This is quite silly project for me to learn how ray tracing and Vulkan works
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
cd Vulkan-RTX ## navigate to repo
mkdir build ## create build directory
cd build ## go to the build directory
cmake -DCMAKE_BUILD_TYPE=Release -S ../ -B . ## write build files
cmake --build .
Download slang for your OS from here
For windows
- modify the
$SLANGC_PATH
incompileSlang.ps1
to point to theslangc.exe
that you have just downloaded - run the powershell script
compileSlang.ps1
cd ./Shaders
Set-ExecutionPolicy Unrestricted -Scope Process
.\compileSlang.ps1
For Linux
- run the shell script in
Shaders
directory - modify the
$SLANGC_PATH
incompileSlang.sh
to point to theslangc
that you have just downloaded
cd ./Shaders
chmod +x compileSlang.sh
./compileSlang.sh