/Vulkan-ReSTIR-PT

Vulkan ReSTIR Path Tracer / Rebuild of EIDOLA, from sratch [2023-2024]

Primary LanguageC++

Vulkan ReSTIR PT

This is another Vulkan ray tracing project, aiming for rebuilding EIDOLA completely from scratch and adding ReSTIR PT (GRIS) for indirect illumination.

Build and Run

  • Clone git clone [this repo] --recursive
  • Run ./build.bat (for Windows only)
  • Extract .zip test scene files in ./res/model/

Progress

  • Standard path tracing with NEE and MIS
  • ReSTIR DI
    • Temporal reuse
    • Spatial reuse
  • ReSTIR GI
    • Temporal reuse
    • Spatial reuse
  • ReSTIR PT
    • Reconnection vertex generation
    • Shift mapping
      • Reconnection
      • Random Replay
      • Hybrid
    • Temporal reuse
    • Spatial reuse
    • MIS
  • Support for both ray tracing pipeline & ray query
  • Batched G-buffer draw calls and bindless resource fetching
  • Cache & memory improvement as RTXDI
  • Improve scene definition & GLTF loader
  • Async command recording & submission
  • Denoiser?
  • Make separate ZVK Vulkan wrapper
  • Direct3D 12 backend? (Making this project a multi-backend ray tracing engine)

Algorithm

Reusing Paths

Path Sample Generation

Result

ReSTIR PT (Not all correct)

Compared to Paper

More