← All works

World-Space ReSTIR in Vulkan

  • Rendering
  • C++
  • Vulkan
  • GLSL
  • Ray tracing
  • ReSTIR

An implementation of World-Space Spatiotemporal Path Resampling for Path Tracing with Vulkan ray tracing, built on Nvidia’s Vulkan ray-tracing renderer. It was the final project for CIS 565, GPU Programming and Architecture, at the University of Pennsylvania, made together with Zhiyi Zhou.

In large scenes it reaches about 40% higher accuracy than screen-space ReSTIR for roughly 5% extra render time.

The renderer runs in five passes:

  • G-buffer and initial path sampling
  • Hash grid construction: path samples go into a world-space hash grid keyed by position and normal, with cells that grow with distance from the camera
  • Spatiotemporal resampling: samples are reused from the previous frame and from neighbouring hash-grid cells
  • Final shading of direct and indirect illumination
  • Post-processing, including Intel Open Image Denoise

Hash grid

World-space ReSTIR DI

Spatiotemporal resampling

Sponza at 1 sample per pixel

Rough surface

Smooth surface

Subway scene: 1 sample per pixel, 1.3 million triangles

Result

Denoising

Performance