大家好,本文是對Real-Time Path Tracing and Beyond和它的視訊:HPG 2022 Monday, Day 1 (enhanced)學習的總結,並結合我的理解進行了一些延伸
得益於下面的技術進步,使得通常應用於離線渲染技術中的路徑追蹤能夠應用於實時渲染:
實時渲染路徑追蹤的渲染管線如下圖所示:
管線分為三個部分:
前端->光照傳輸->後處理
下面依次討論:
前端主要負責組織場景資料,包括構造和更新場景資料
有兩個實現方案:
光照傳輸使用路徑追蹤來實現直接光照和間接光照的計算。
不過對路徑追蹤進行了下面的改進:
原文還對frameless render進行了討論,不過我不是很瞭解
後處理包括降噪->DLSS->其它後處理(如tone map)
這裡討論降噪
原文使用了Nvdia的NRD Denoiser來降噪,它相當於SVGF的改進版
我其實更看好神經網路降噪,這也是最近的發展趨勢
原文中也提到了一種神經網路降噪的方法:Neural Temporal Adaptive Sampling and Denoising
它還有改進的論文:
Interactive Monte Carlo Denoising using Affinity of Neural Features
通過參考下面的資料:
我確定了通過依次實現下面的論文,可以逐漸改進蒙特卡洛降噪器:
因為使用了統一的路徑追蹤演演算法,所以只需要一個shader
這個shader原文作者寫了1萬行,規模相當大,因此需要一種更容易維護、更模組化的shader語言
因此,原文作者使用了slang,它支援介面定義等語法,貌似可以進行單元測試,可以編譯為GLSL、HLSL等著色器語言
slang相當於Typescript,也就是在原始的著色器語言之上增加了一層編譯器
下面是我構想的具體實現的方案:
Web3D
我們應該會優先使用WebGPU Node,因為它支援光追管線
我們使用自主開發的神經網路降噪器來降噪
我們基於自主開發的Meta3D:開源Web3D低程式碼平臺,通過實現多個獨立且可組裝的擴充套件來開發可維護、可延伸、可讀的渲染器
1.實現基礎的神經網路降噪器
需要重點實現:
需要使用我開發的深度學習庫,並將其改為支援GPU端訓練和推理
2.直接使用基礎的路徑追蹤演演算法來渲染基本的場景,並用神經網路降噪器來降噪
3.使用slang來寫著色器語言,編譯為GLSL
4.實現動態場景
5.將渲染器拆成光照傳輸和降噪器兩個部分,並重構為基於Meta3D的擴充套件
6.將光照傳輸改為使用RTXDI實現直接光照、使用ReSTIR實現間接光照