Skip to content

Zydak/Vulkan-Path-Tracer

Repository files navigation

Vulkan-Path-Tracer

Sponza

Physically based offline path tracer made in Vulkan with Ray Tracing Pipeline extension. It uses energy conserving BSDF with Diffuse, Dielectric, Metallic and Glass lobes + volumetric scattering. Renders can also be saved as png images.

System Requirements

  • Windows 10 with MSVC or Linux with GCC (Only debian 12 with GCC 12.2 is tested)
  • Either NVIDIA RTX 2000+ series or AMD RX 6000+ series to support all of the extensions below. You may check whether they're present on your device here, maybe it's possible to run on some older hardware.
    • VK_KHR_ray_query
    • VK_KHR_acceleration_structure
    • VK_KHR_ray_tracing_pipeline
    • VK_KHR_swapchain
    • VK_KHR_deferred_host_operations

Building

Prerequisites

Windows

git clone --recursive https://github.com/Zydak/Vulkan-Path-Tracer
cd Vulkan-Path-Tracer
mkdir build
cd build
cmake ..

Then open generated Visual Studio solution and build.

Linux

git clone --recursive https://github.com/Zydak/Vulkan-Path-Tracer
cd Vulkan-Path-Tracer
mkdir build
cd build
cmake ..
make

Executable will be in build/PathTracer/VulkanPathTracer.

Features Overview

  • BSDF with importance sampling
  • Energy compensation implemented according to [Turquin 2018] paper.
  • HDR Environment Maps with importance sampling
  • NEE for environment map light
  • Volumetric scattering with importance sampling implemented according to Production Volume Rendering 2017
  • Multiple Importance Sampling implemented according to Optimally Combining Sampling Techniques for Monte Carlo Rendering
  • Textures and Normal Maps
  • Editor
    • Changing material and path tracing properties at runtime
    • Loading your own scenes in any format supported by assimp
    • Exporting renders into .PNG files
  • Post Processing
    • Bloom using Mip Maps
    • ACES tonemapping
  • Anti Aliasing
  • Depth of Field
  • Russian roulette

If you're interested in details of the implementation of these features, look at Project Overview.

Gallery

References

Papers Implemented

Models