在 GTC 2020 秋季站上,NVIDIA 宣布即將推出開發者 SDK,RTX Direct Illumination (RTXDI),用于支持并加速大量光源的動態直接照明和陰影渲染。本篇博文中,我將在 RTXDI 于 2021 年春首次公開發布之前,提前重點講述一下 RTXDI 的功能。您現在可以申請使用 RTXDI 的搶鮮體驗版。

RTXDI 利用光線追蹤功能打破了傳統光柵化流程中常見的藝術表現力方面的束縛。借助 RTXDI,藝術家可以充分發揮想象,無需考慮光照復雜性或陰影貼圖成本。場景中的所有光源都可以動態移位、打開或關閉、變換顏色,并投射出正確的陰影和光線。要啟用光源,請把自發光屬性添加到表面材質。性能在很大程度上已與光照復雜性解除關聯,因此,RTXDI 可以從一個光源無縫擴展至數百萬個光源。
功能
RTXDI 的主要功能包括:
- 動態移動所有光源并與動態幾何體交互
- 提供來自各類基本光源,包括由三角形面光源、點光源、矩形面光源、球面光源、柱面光源和環境映射組成的模型光源
- 支持自發光紋理和 IES 配置文件(如適用)
- 動態添加、移除、合并或拆分光源幾何體。
- RTX GPU 出色的性能可擴展性,可從一個光源擴展至數百萬個
- 不需要預計算或烘焙
- 與 RTXGI 集成使用
- 使用專為 RTXDI 設計的 ReLAX 降噪器;與通用實時降噪器(如 SVGF)兼容
- 提供完整源代碼,便于集成和定制
- 可在任意 GPU 上運行,具有硬件加速的光線追蹤功能
長期來看,RTXDI 是一系列出色研發工作的成果,令這種靈活而強大的光線追蹤得到了應用。初始版本建立在最近發布的關于基于樣本池的時空重要性重采樣 (ReSTIR) 的研究的基礎上,其中包括各種改進,大大提升了魯棒性和性能。
素材影響
RTXDI 應與現有素材和流程輕松集成。RTXDI 僅假設如下:
- 自發光表面的材質屬性包含一項易于估算的發光強度
- 列舉自發光模型和基本光源(球面、矩形面等)并提供給 RTXDI。
- 一張已有的 G-buffer,其中包含必要的數據,用于對光源與屏幕像素的任意組合進行材質和光照的估算。
提供給 RTXDI 的任何自發光表面都會自動照亮周圍的環境。只要提供一套合適的采樣函數,您可以輕松添加尚未支持的基本光源
技術背景
真實感渲染需要對每個像素求解一次渲染方程,結合入射光,以確定有多少反射光會進入相機。對于直接照明,積分會轉化為所有光源的總和。因此,計算像素的直接照明需要查詢每個燈光并測試其可見性。遺憾的是,這與光源數量為線性擴展關系。
現代引擎使用分區光源剔除潛在可見集和類似技術,通過逐像素剔除光源來降低成本。但是,動態可見性依賴于每幀重新計算陰影貼圖。這在現代引擎中開銷龐大,且不能擴展到多個光源。除了烘焙光貼圖中的靜態陰影和一些主光源以外,當今游戲中的其他發光體通常提供只在局部反彈的光照,且忽略可見性。
設想一下,包含數百個復雜面光源的照片和渲染(如圖 2 所示)。任一像素中有多少陰影是可見的?在帶圓圈的區域中,直觀的感受是“沒有”,盡管此處到場景中各個光源的可見性十分復雜。

?
在較大的圖像中,將這個問題推廣到“像素中可感知的最大陰影數量是多少?”答案是很少,這表明您可以僅測試幾個可感知的重要光源的可見性,而無需查詢所有光源的可見性。但是,有一條重要警告,即這組重要光源隨像素而變化。所有光源都可能會在某處投射重要陰影,這意味著,采用光柵化時,我們仍需要所有光源的陰影貼圖。
然而,光線追蹤器可以跟蹤每個像素的唯一陰影光線。這樣一來,問題就演變為“需要哪些陰影查詢,以及如何加以識別?”,對于大多數數值積分來說,“使用哪些采樣”的答案通常是“使用好的重要性采樣。”
重要性重采樣
為得到好的重要性采樣,我們創造了名為重(chóng)采樣重要性采樣 (RIS) 技術,由 Talbot et al 最先提出。RIS 提升了樣本質量,就像降噪器提升了畫質一樣。ReSTIR 引入的時空重用突出了這一優勢,讓相鄰像素和先前幀能夠有效地指導去何處選擇質量更好的陰影光線。這使得成本低廉、易于定義的采樣分布適合用作快速 GPU 執行的輸入,實現了 RIS 和 ReSTIR 對質量的提升。
長期以來,過濾所依據的便是觀察附近像素是否具有相似顏色。時間抗鋸齒、圖像去噪和放大都使用此觀察來幫助填補缺失的細節。重要性重采樣技術讓此觀察更進一步,例如,附近的像素應該使用相似光源樣本。實際上,ReSTIR 篩選采樣分布(在照明之前)以選擇高質量的陰影光線。這大大減少了所需的光線預算。
從數學的角度來看,重采樣技術以開發者控制的任意方式重構了光照方程。您可以使用此控制方式來對計算進行重新排序,降低成本高昂的操作(如光線跟蹤)的發生頻率。
您還可以將此控制方式用于其他方面,例如重新排序計算,以減少整個照明過程中的訪存不一致和代碼分支的情況。諸如 ReSTIR 的重采樣的一個具有吸引力的特性是它在復雜程度波動較大的場景中使用恒定數量的光源樣本,提供了出色的可擴展性。然而,代碼和訪存分支也會在復雜性不斷增加的同時導致成本攀升,例如,隨駐留在 L1、L2 或全局內存中光源的變化而變化。RTXDI 引入了額外的重采樣來重新排序計算,可在光源類型和數量起伏較大的場景中令照明成本保持近乎不變。
集成注意事項
由于 RTXDI 充當質量放大器,改善了選定的陰影光線,因此可以通過各種方式集成到引擎中。
在簡單的形式中,RTXDI 取代了引擎的直接照明系統,包括與剔除和識別重要光源、陰影貼圖和環境光遮蔽相關的所有成本。在設計方面,其可以自然地將樣本局限到可見光源,并提供面光源投射的具有接觸硬化的軟陰影、點光源和平行光的硬陰影以及大型半球光源的環境光遮蔽。
當然,它可以在現有引擎功能的基礎上增加可擴展性。例如,給定一個大場景和一組潛在可見光源,RTXDI 可以只從已知可見的光源中選擇陰影光線。就質量而言,這通常要比標準的 RTXDI 更加出色,但會繼承了任何底層數據結構的限制。
您還可以控制利用哪些計算來改進采樣。例如,我們的原型使用完整材質模型,以便從附近像素中獲得效果出色的復用。然而,在某些情況下,進行完整材質的估值會導致開銷過高,例如多層或復合模型的情況。這時,可以使用近似的簡單材質來驅動重采樣。
結束語
RTXDI 封裝了一個簡單、穩定且功能強大的時空重要性重采樣實現,可支持含有大量光源的復雜、動態照明。它對您的引擎限制較小,既可以選擇替換現有照明解決方案,也可以在現有方案的基礎上進行構建。
這種光源采樣的統計方法消除了傳統光柵引擎中的諸多限制。藝術決策不應再圍繞有限的一組十幾個或更少的光源開展。所有光源都應得到平等對待!
有關更多信息,請參閱以下資源:
- 搶鮮體驗 RTXDI
- 通過數百萬光線追蹤光源渲染游戲(GTC 2020 秋季站)
- 實時渲染數百萬動態光源
- 全新 NVIDIA 路徑跟蹤突破性進展,以交互方式渲染 7000 個動態光源
- 基于實時光線追蹤和動態直接照明的時空樣本池重采樣
- 全局照明的重要性重采樣
?