實時渲染路徑追蹤概述

大家好,本文是對Real-Time Path Tracing and Beyond和它的視頻:HPG 2022 Monday, Day 1 (enhanced)學習的總結,並結合我的理解進行了一些延伸

得益於下面的技術進步,使得通常應用於離線渲染技術中的路徑追蹤能夠應用於實時渲染:

  • RTX顯卡帶來的硬件光追管線
    使用該管線可使射線與場景相交計算大幅提升;並且不再需要自己維護BVH加速結構,而是直接使用管線默認提供的加速結構來代替
  • 新的採樣方法:ReSTIR
    該採樣方法通過在渲染過程中減少採樣的方差,帶來了幾十倍的速度提升;並且能夠優化有大量光源的情況;並且支持更健壯的光源路徑(比如光源隱藏在門後的情況)
  • 新的降噪技術
    主要代表爲SVGF等結合時間和空間上的信息一起做Filter的降噪算法以及基於神經網絡降噪技術

渲染管線

實時渲染路徑追蹤的渲染管線如下圖所示:
image

管線分爲三個部分:
前端->光照傳輸->後處理

下面依次討論:

前端

前端主要負責組織場景數據,包括構造和更新場景數據

有兩個實現方案:

光照傳輸

光照傳輸使用路徑追蹤來實現直接光照和間接光照的計算。

不過對路徑追蹤進行了下面的改進:

  • 使用ReSTIR採樣方法
  • 使用RTXDI計算直接光照
  • 使用ReSTIR GI計算間接光照

原文還對frameless render進行了討論,不過我不是很瞭解

後處理

後處理包括降噪->DLSS->其它後處理(如tone map)

這裏討論降噪

原文使用了Nvdia的NRD Denoiser來降噪,它相當於SVGF的改進版

我其實更看好神經網絡降噪,這也是最近的發展趨勢

原文中也提到了一種神經網絡降噪的方法:Neural Temporal Adaptive Sampling and Denoising

它還有改進的論文:
Interactive Monte Carlo Denoising using Affinity of Neural Features

通過參考下面的資料:

我確定了通過依次實現下面的論文,可以逐漸改進蒙特卡洛降噪器:

  • LBF
    A machine learning approach for filtering Monte Carlo noise
  • KPCN
    Kernel-predicting convolutional networks for denoising Monte Carlo renderings
  • KPAL
    Denoising with kernel prediction and asymmetric loss functions
  • Monte Carlo Denoising via Auxiliary Feature Guided Self-Attention
  • Self-Supervised Post-Correction for Monte Carlo Denoising

slang: 着色器語言中的Typescript

因爲使用了統一的路徑追蹤算法,所以只需要一個shader

這個shader原文作者寫了1萬行,規模相當大,因此需要一種更容易維護、更模塊化的shader語言

因此,原文作者使用了slang,它支持接口定義等語法,貌似可以進行單元測試,可以編譯爲GLSL、HLSL等着色器語言

slang相當於Typescript,也就是在原始的着色器語言之上增加了一層編譯器

我構想的具體實現的方案

下面是我構想的具體實現的方案:

應用領域

Web3D

技術棧

  • WebGPU
    如果渲染器是運行在瀏覽器中的話,則使用WebGPU這個圖形API。但是目前WebGPU只有計算管線而沒有光追管線,所以我們就需要自己維護BVH
  • WebGPU Node
    如果渲染器是運行在Nodejs中的話,則可以使用WebGPU Node這個開源的Nodejs項目。它底層封裝了Vulkan SDK,上層使用了dawn-ray-tracing項目,提供了WebGPU API,實現了在Nodejs環境中使用WebGPU API和光追管線來實現硬件加速的光線追蹤。
    具體介紹可見WebGPU+光線追蹤Ray Tracing 開發三個月總結

技術方案

我們應該會優先使用WebGPU Node,因爲它支持光追管線

我們使用自主開發的神經網絡降噪器來降噪

我們基於自主開發的Meta3D:開源Web3D低代碼平臺,通過實現多個獨立且可組裝的擴展來開發可維護、可擴展、可讀的渲染器

初步的開發計劃

1.實現基礎的神經網絡降噪器

需要重點實現:

需要使用我開發的深度學習庫,並將其改爲支持GPU端訓練和推理

2.直接使用基礎的路徑追蹤算法來渲染基本的場景,並用神經網絡降噪器來降噪

3.使用slang來寫着色器語言,編譯爲GLSL

4.實現動態場景

5.將渲染器拆成光照傳輸和降噪器兩個部分,並重構爲基於Meta3D的擴展

6.將光照傳輸改爲使用RTXDI實現直接光照、使用ReSTIR實現間接光照

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章