Upgrade to Pro — share decks privately, control downloads, hide ads and more …

rtcamp 10 (vk-illuminati)

yumcyawiz
October 13, 2024

rtcamp 10 (vk-illuminati)

レイトレ合宿10 (https://sites.google.com/view/rtcamp10) で提出したレンダラー (vk-illuminati)の紹介スライドです。

Vulkanでリアルタイムレンダラーを実装し、ReSTIR DI + ReSTIR GI + 自作デノイザーを実装しました。RTX 3080で30fps程度で動作します。

X: https://x.com/yumcyawiz

yumcyawiz

October 13, 2024
Tweet

More Decks by yumcyawiz

Other Decks in Programming

Transcript

  1. vk-illuminati • Vulkanリアルタイムレンダラー (新規) • ラスタライズ + RTによるHybrid rendering ◦

    Inline ray tracing (VK_KHR_ray_query)を使用 • ReSTIR DI + ReSTIR GI + 自作デノイザー (by DALL-E)
  2. rtcamp 10 • Full HD 60fps 10秒 ◦ (4Kは画像出力がボトルネックになり断念) •

    各フレームは 1spp • レンダリング : 80ms, 画像出力: 68ms ◦ 合計で90秒 (今回の制約時間は256秒) ◦ 設定を変えれば30-60fpsで動作 (RTX 3080) • 依存ライブラリ ◦ Vulkan-hpp, glm, tinyobjloader, stb, fpng • シーン ◦ Sponza (McGuire Computer Graphics Archive)
  3. Pipeline overview Visibility Buffer (Graphics) ReSTIR DI (Compute) ReSTIR GI

    (Compute) Denoiser (Compute) Post Process (Compute) • Visibility (primitive ID, barycentrics) • Motion vector • Direct Illumination • Global Illumination • Denoised Image • Final Image Debug view (Compute) Post Process (Graphics) Present (開発時)
  4. ReSTIR DI/GI • Temporal resampling + Spatial resampling ◦ Spatial

    resampling後の結果をTemporal resamplingにフィードバック • Confidence capping (M-capping) • Confidence weight ◦ Biasの増大を防ぐ • Jacobian rejection heuristic (自作) ◦ GIの壁際でのartifactを抑える • Visibility reuse ◦ 影のノイズを減らす (Biasとのトレードオフ) • Boiling filter ◦ 提出時には使わなかった
  5. 開発過程 DDD (Deadline Driven Development) を採用 提出 10/09 23:00 Vulkan

    tutorialを始める 09/30 三角形が出る 10/02 10/05 Sponzaが出る レイが飛ぶ 10/06 †気合† Total: 335 commits
  6. References • レンダリング ◦ The Visibility Buffer: A Cache-Friendly Approach

    to Deferred Shading, https://jcgt.org/published/0002/02/04/ ◦ Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting, https://research.nvidia.com/publication/2020-07_spatiotemporal-reservoir-resampling-real-time-ray-tracing-dynamic-direct ◦ ReSTIR GI: Path Resampling for Real-Time Path Tracing, https://research.nvidia.com/publication/2021-06_restir-gi-path-resampling-real-time-path-tracing ◦ Generalized Resampled Importance Sampling: Foundations of ReSTIR, https://research.nvidia.com/publication/2022-07_generalized-resampled-importance-sampling-foundations-restir ◦ A Gentle Introduction to ReSTIR: Path Reuse in Real-time, https://intro-to-restir.cwyman.org/ ◦ Efficient Spatial Resampling Using the PDF Similarity, https://yusuketokuyoshi.com/ ◦ RTXDI, https://github.com/NVIDIAGameWorks/RTXDI ◦ rtxdi-runtime, https://github.com/NVIDIAGameWorks/rtxdi-runtime ◦ Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illumination, https://research.nvidia.com/publication/2017-07_spatiotemporal-variance-guided-filtering-real-time-reconstruction-path-traced • Vulkan ◦ Vulkan Tutorial, https://vulkan-tutorial.com/Introduction ◦ ゼロからVulkan Ray Tracing, https://zenn.dev/nishiki/books/f468197dca2dd8 ◦ Vulkan + GLFWでDear ImGuiを使う, https://zenn.dev/kinankomoti/articles/156fd17b74dcda ◦ Vulkan-Samples, https://github.com/KhronosGroup/Vulkan-Samples ◦ Vulkan Documentation, https://docs.vulkan.org/spec/latest/index.html ◦ NVIDIA Vulkan Ray Tracing Tutorial, https://nvpro-samples.github.io/vk_raytracing_tutorial_KHR/