VXGI

技術

在繪圖領域中,正確的建構照明模型是運算上最困難的問題之一,藉由 Maxwell 架構,我們的目標是要讓 GPU 的能力大幅躍升,能以即時方式執行幾近照片般真實的照明計算。

在真實世界中,所有的物體都會同時受到直接光線 (直接來自某個光源並照亮某個物體的光線粒子) 和間接光線 (來自某個光源、照射至某個物體後又反射至另一個物體,因此照亮該物體的光線粒子)的照射。「全域照明 (GI)」此一專有名詞,是指建構此效果模型的照明系統。若缺乏間接照明,場景會看起來粗糙和缺乏真實感,然而,直接接收的光線在計算上容易許多,間接照明的計算則極為複雜且運算負荷頗重。


僅用直接照明渲染的場景。


同一場景採用全域照明 (GI),請注意間接光線及地板上的鏡面反射。

由於這種照明技術的運算所費不貲 (特別是針對細節程度極高的場景),因此 全域照明技術大部分是被用來渲染電影中複雜的電腦繪圖 (CG) 場景,且是採用離線式 GPU 渲染農場。然而,現今許多頗受歡迎的遊戲也已採用某些形式的全域照明技術,它們仰賴預先計算的照明來實現。之所以採用這些「預製」技術,是基於某些效能上的理由;然而,由於預期的照明效果需被預先計算,所以還得做些額外的藝術工作。這是因為預製光線並非是動態的,因此,當遊戲內部有所變動時,舉例來說,像是增加一個額外的光源,或是場景中的某件物體有所移動或是被摧毀了,這時要更新間接光源通常是很困難或不可能的;預製的間接照明可以針對場景中的靜態物體建構照明模型,但是並無法適當地運用在動畫角色或移動的物體上。

在 2011 年,NVIDIA 的工程師開發並演示了一種創新的方法,能在 GPU 上以一種即時的方式,動態地計算出快速、近似全域照明的形式。新的全域照明技術使用立體像素網格 (voxel grid) 儲存場景和照明資訊,並使用一種新的立體像素椎體 (voxel cone) 追蹤程序蒐集來自體素網格的間接照明。NVIDIA 的 Cyril Crassin 說明了這項技術請見他所寫以此為主題的論文,另外還有一部來自 GTC 2012 的影片請見此處。Epic 於2012年推出 ‘Elemental’ Unreal Engine 4 技術演示也採用了類似的技術。


Epic 的 UE4 'Elemental' 技術演示採用了立體像素椎體追蹤技術,打造出令人驚嘆不已的全域照明。

從那時開始,NVIDIA 就持續致力於發展此技術的下一世代 – 立體像素全域照明 (VXGI) – 在 Maxwell 架構中結合軟體演算法及特殊的硬體加速。

柯內爾盒子 (Cornel Box)

在 1984 年,康乃爾大學的研究人員開發出一個簡單的場景,用來實驗渲染繪圖。這個概念就是要保持場景的單純,如此才易於比對電腦生成影像和照片。

以上的影像是利用我們先進的 iray 渲染技術所產生,使用了在雲端平行運作的多顆 GPU 的處理能力,能以幾近即時的方式進行如同相片般逼真的渲染。此影像非常接近於柯內爾盒子 (cornel box) 在真實世界中看起來的樣子。

然而,立體像素全域照明技術 (VXGI) 的目標在於即時運作,而進行場景的全面光線追蹤會造成運算負擔過重,因此近似值是必需的。

以上的影像是以不透明立體像素顯現同一個場景。每一個立方體都是基本幾何的粗略顯示,我們能用以加速光線的計算。

發亮的立體像素視圖正是神奇之處。想像每一個立方體 (立體像素) 都是由場景中的直接光線所直接照明。我們可以使用現有非常快速的直接照明技術,來正確計算出打中立體像素的光線色彩及強度。它的創新之處在於,當進入下一個階段,這些被照亮的立體像素能被做為光源,可以產生間接照明。

這個影像裡的色彩讓人有些迷惑。先來看看牆壁的部分。原本是紅色的牆壁現在出現一種淡綠色的光芒,而綠牆則有淡紅色的光芒。之所以會如此,是因為每一道牆都會吸收一些由房間另一側所發散出的色彩。紅色的牆也會柔和地照亮最接近它的球和其他等等。一如預期,我們看到反射的光線,它是來自於被原本的直接光源所打中的表面。

當我們把所有的光線都加在一起,我們可以得到令人不可置信的逼真場景。其中的關鍵在於,利用立體像素全域照明技術,我們能以即時的方式做到這一切。