路徑追蹤技術(Path tracing,PT)已經(jīng)是當下工業(yè)中離線渲染使用的主流技術,不管是商業(yè)渲染器如皮克斯的RenderMan,Solid Angle的Arnold等,還是迪士尼的in-house渲染器Hyperion以及Weta Digital的Manuka都是基于路徑追蹤技術。路徑追蹤算法非常簡單,它首先將光照方程表述為面積積分的形式,然后一束光線從光源經(jīng)過各個物體表面及內(nèi)部多次交互(反射,折射,散射)后進入圖像平面的貢獻值(即輻射照度)被轉(zhuǎn)換為這些表面交互點形成的路徑的一個積分,其被積函數(shù)為這些表面的雙向散射系數(shù)(BSDF),頂點之間的積分變量變化(change of variables)以及頂點之間可見性的乘積。在統(tǒng)計中,積分可以很簡單地使用蒙特卡洛方法進行估計,因此光照傳輸?shù)膯栴}就轉(zhuǎn)化為對場景進行路徑采樣,然后對每條路徑的貢獻值進行平均求和的蒙特卡洛積分計算。

盡管自基本的路徑追蹤算法被提出以來,各種增強改進的方法被整合進來,然而上述路徑追蹤技術的“基礎架構”幾乎沒有多少實質(zhì)性的變化。對于任何行業(yè),工業(yè)中主流的技術一般不是當下最先進的技術,而是最成熟可工業(yè)化的方案,當前工業(yè)中的路徑追蹤技術優(yōu)化主要集中在優(yōu)化算法的執(zhí)行效率,主要是針對處理器硬件架構進行優(yōu)化,例如針對緩存系統(tǒng)的優(yōu)化,增強數(shù)據(jù)局部性和指令局部性,以及改進光線連貫性(ray coherence)使其能夠利用SIMD指令進行高效計算等,這方面比較突出的是迪士尼的Hyperion渲染器,一些渲染器的優(yōu)化更是幾乎能達到某些場景復雜度范圍內(nèi)實時渲染,例如Embree。

然而以上這些內(nèi)容卻不是本文關注的重點(上述內(nèi)容會在thegibook中詳細討論),本文我們要討論的是一些路徑追蹤算法基礎架構層面的改進,這些算法還很少出現(xiàn)在當前工業(yè)解決方案中,但是確實未來的重要發(fā)展趨勢。

傳統(tǒng)的路徑追蹤算法是一個單純的積分問題,因此可以使用蒙特卡洛方法來估計,然而蒙特卡洛方法的每個抽樣是獨立的,因此很難有效快速對一些比較困難的路徑進行采樣,一些很難被采樣的路徑需要巨量的采樣數(shù)才能達到“令人滿意”的結(jié)果,這導致非常緩慢的收斂速度。盡管開始的收斂速度非??欤?倍采樣數(shù)量可以減少1/2的誤差),但是越到后面會花費更多倍的時間。傳統(tǒng)的方差縮減技術如重要性采樣,分層采樣,擬蒙特卡洛方法(Quasi-Monte Carlo)仍然不能改變這個收斂速度。

要提升蒙特卡洛估計的收斂速度,直觀上,我們需要能夠辨識每個圖像的分布特征,然后在一些高頻變化區(qū)域增加采樣的密度。然而,傳統(tǒng)的蒙特卡洛方法中每個抽樣之間是獨立的,它并不能有效辨識這種頻率變化特征,盡管梅特波利斯光照傳輸(Metropolis light transport,MLT)通過采樣點之間的相關性能夠?qū)ふ乙恍├щy路徑,本質(zhì)上它仍然并不善于處理和分析頻率域特征。要想能夠辨識圖像的分布特征,我們需要了解每個路徑的局部特征,即是我們需要對路徑追蹤算法引入微分運算。路徑的微分涉及路徑與附近局部范圍內(nèi)光線的差值,即圖像的局部特征,因此它引入了光線之間的相關性,可以從多個層面改善路徑追蹤算法的效率(也正是如此,我們認為這是近幾年路徑追蹤技術領域的重大進展)。

最近幾年路徑追蹤領域的一些重大進展正是微分幾何(differential geometry)的引入,由于微分反應的是流形(manifold)的局部變化,因此非常善于尋找圖像分布中的高頻部分,目前路徑追蹤算法中的微分運用主要包括:以通過計算紋理過濾函數(shù)實現(xiàn)反走樣的光線/路徑微分(ray/path differential)和協(xié)方差追蹤技術(covariance tracing);以通過計算梯度圖像用于利用篩選泊松方程(Screened Poisson equation)重建目標圖像的梯度域渲染(gradient-domain rendering);以及通過將微分幾何結(jié)合費馬定理(Fermat principle)用來尋找鏡面/光澤路徑的流形探索(manifold exploration),半矢量空間光照傳輸(half vector space light transport)等技術;此外,微分還被用于適配性采樣(adaptive sampling),成為重要的降噪技術(Denoising)。

以下我們就來從概念和思路上分析上述這些技術,當然我們可以提前知道的這些技術的一個重要共同點就是:這些微分計算通常不需要通過光線追蹤引入新的采樣點,否則那樣的計算成本就很高,這些技術通常都是利用微分幾何和某些假設進行單純的微分計算,這里主要的工具是一階泰勒展開式(first-order Taylor approximation)和頂點處的切線平面空間(tangent space),因此,這些新技術通常都可以很容易地集成于目前主流的路徑追蹤技術基礎架構之上,更詳細的內(nèi)容請參考thegibook中相關章節(jié)。

接下來我們討論的每一種微分的運用都涉及一個相對比較獨立的層面,在閱讀這些內(nèi)容的時候,你首先需要非常清晰的了解的是它用來解決什么問題,因此我會在每一節(jié)的開頭提出這個問題,然后讀者可以圍繞這個問題來閱讀每一小節(jié),即每一種技術。

光照傳輸?shù)木植款l率域分析

微分反應的是圖像的局部特征,因此其在圖像渲染中最直觀的運用就是用于反走樣(anti-aliasing)。光線追蹤算法中由于采用不足導致的走樣問題可以分為兩大類:對路徑空間(path space)的采樣不足和對紋理空間(texture space)的采樣不足,本質(zhì)上這都是由于路徑采樣的不足導致的,但是它們通常使用不同的方法來解決。一個像素區(qū)域內(nèi)的光線從屏幕空間發(fā)射出去之后,隨著光線在表面的各種交互這個面積可能會無限擴散,所以單純增加路徑采樣的數(shù)量可能也很難彌補紋理走樣(texture aliasing)的問題。所以它們分別對應路徑追蹤算法中兩個比較獨立的反走樣技術:路徑空間采樣不足主要對應于降噪技術,紋理空間采樣不足對應于紋理過濾技術。

目前降噪技術主要的思路是針對圖像的分布特征進行適配性采樣以及適配性重建,前者對應于在圖像的高頻區(qū)域放置更高的路徑采樣密度;后者對應于根據(jù)圖像特征對不同的區(qū)域使用不同的重建過濾器(reconstruction filter)。對路徑進行適配性采樣的方法可以分為兩類:第一種直接對光照傳輸方程進行分析,稱為先驗方法(a priori method);而第二種只對屏幕空間的圖像進行分析,稱為后驗方法(a posteriori method)即是說與路徑采樣的方法無關。

光照傳輸?shù)木植款l率域分析可以用于紋理過濾以及作為降噪技術中的先驗方法。以下我們討論局部頻率域分析的方法和思路。

路徑的局部頻率域分析雖然不是源自光線微分(ray differential)技術,但是跟它有很大的聯(lián)系。光線微分技術的核心思路是隨著光線的傳播跟蹤該光線對應的頻率區(qū)域一個像素的大小,這稱為光線的足跡(footprint),如下圖所示,在路徑追蹤算法中追蹤每條路徑的時候,同時沿屏幕空間x和y方向分別發(fā)射一條一個像素大小的偏移路徑,然后對每條基礎路徑同時跟蹤兩條偏移路徑。路徑在每個頂點處的足跡大小則可以通過積分計算出來。當然光線微分技術并沒有完全利用微分幾何的知識,因為它假設偏移路徑和基礎路徑在每個路徑頂點處位于同于平面-即該頂點的正切平面(tangent space)上,所以光線微分的計算大大簡化了。

由于假設偏移路徑和基礎路徑和表面的交點位于同一平面,上述光線微分技術僅適用于鏡面表面(specular surface),路徑微分(path differential)在此基礎上將光線微分擴展到了光澤面(glossy surface)和漫反射表面(diffuse surface),它雖然有比較理論的推導,但是實踐上主要使用經(jīng)驗方法,即根據(jù)表面的粗糙度用來縮放足跡的大小以支持光澤面和漫反射表面。

上述的光線/路徑微分技術實際上是光線的一種局部特征,傳統(tǒng)的路徑追蹤算法中每條光線之間的獨立的,所以不能夠分辨這種局部特征。然而上述方法還是有很多缺點,例如光線經(jīng)過多次傳播之后可能形狀非常不規(guī)則,而兩條偏移路徑計算的四邊形無法表達這種形狀;其次偏移路徑可能被阻擋,而光線/路徑微分是忽略這種阻擋的;為了更好的追蹤光線的局部特征,我們需要更完整的對光線的傳輸過程進行分析。

目前對光線進行局部分析的方法的思路主要是將光線的局部特征表示為一個空間-方向分布(spatial-angular distribution)的局部光照場(local light field),如下圖所示,黃色的中心光線表示基礎光線,周圍的一些具有不同位置和方法分布的光線是一些虛擬光線,它們共同構成一個局部的空間-方向分布。例如對于攝像機光線,它的局部光照場的分布就是一個像素范圍大小的一個過濾器,該過濾器對于每個不同方向和位置處的光線都具有一個不同的權重值,這個過濾器就反映了攝像機路徑的局部特征;對于光源路徑,如果是面積光,則局部光照場的方向為固定值,而位置分布于面積光源的各個位置。

有了局部光照場的描述,剩下的事情就是計算該光照場隨著中心光線的傳輸。早期的思路是將光線在傳輸過程中的各種交互過程看做一個操作函數(shù),例如光線的直線傳輸(transfer),反射,折射,陰影遮擋等,如下圖所示,然后在局部光照場函數(shù)的頻率空間進行交互,這樣就可以跟蹤局部光照場隨中心光線的傳播過程。

上述的傅里葉分析過程計算成本相對較高,為了簡化局部光照場的傳輸,協(xié)方差追蹤(covariance tracing)技術考慮可以將一個4D的空間-方向分布近似為一個橢圓形高斯分布(elliptical Gaussian filter),如下圖所示,然后該分布可以使用該4D光照場的協(xié)方差來表示,所以局部光照場可以用其協(xié)方差矩陣(covariance matrix)來表示。然后這些對局部光照場的傳播操作數(shù)就轉(zhuǎn)變?yōu)榫仃嚥僮?,最后在計算足跡的時候再從協(xié)方差計算出該4D局部光照場的尺寸,這就可以用來替代上述的光線/路徑微分技術用來實現(xiàn)紋理過濾。

協(xié)方差追蹤不僅用于紋理過濾中計算局部光照場足跡的大小,還被用于適配性采樣,如果我們從光源路徑方向追蹤光源的空間-方向分布至屏幕空間,則我們可以在屏幕空間分析圖像的頻率分布,進而可以用于適配性采樣,如下圖所示。下圖的局部光照場是一個5D空間,它還包含了時間維度,因此可以用于計算運動模糊(motion blur)效果,在該圖中,首先從光源發(fā)出光線經(jīng)過一次表面交互(即直接光)之后投射一個橢圓形分布到屏幕空間,然后根據(jù)這些分布就可以計算出圖像的頻率分布,這些分布特征被用于適配性采樣。

除了協(xié)方差追蹤,光照傳輸?shù)木植款l率域分析還包括其他一些方法,但是目前協(xié)方差追蹤是更簡單和高效的一種技術。當然協(xié)方差追蹤的限制是它將局部光照場近似為一個橢圓形的分布,實際的局部光照場分布特征可能還需要更負責的形狀表述,這也是未來的優(yōu)化方向。

下一篇我們將討論梯度域渲染和流形探索或者半矢量空間光照傳輸。