路徑追蹤技術(shù)(Path tracing,PT)已經(jīng)是當(dāng)下工業(yè)中離線渲染使用的主流技術(shù),不管是商業(yè)渲染器如皮克斯的RenderMan,Solid Angle的Arnold等,還是迪士尼的in-house渲染器Hyperion以及Weta Digital的Manuka都是基于路徑追蹤技術(shù)。路徑追蹤算法非常簡單,它首先將光照方程表述為面積積分的形式,然后一束光線從光源經(jīng)過各個物體表面及內(nèi)部多次交互(反射,折射,散射)后進(jìn)入圖像平面的貢獻(xiàn)值(即輻射照度)被轉(zhuǎn)換為這些表面交互點(diǎn)形成的路徑的一個積分,其被積函數(shù)為這些表面的雙向散射系數(shù)(BSDF),頂點(diǎn)之間的積分變量變化(change of variables)以及頂點(diǎn)之間可見性的乘積。在統(tǒng)計中,積分可以很簡單地使用蒙特卡洛方法進(jìn)行估計,因此光照傳輸?shù)膯栴}就轉(zhuǎn)化為對場景進(jìn)行路徑采樣,然后對每條路徑的貢獻(xiàn)值進(jìn)行平均求和的蒙特卡洛積分計算。
盡管自基本的路徑追蹤算法被提出以來,各種增強(qiáng)改進(jìn)的方法被整合進(jìn)來,然而上述路徑追蹤技術(shù)的“基礎(chǔ)架構(gòu)”幾乎沒有多少實(shí)質(zhì)性的變化。對于任何行業(yè),工業(yè)中主流的技術(shù)一般不是當(dāng)下最先進(jìn)的技術(shù),而是最成熟可工業(yè)化的方案,當(dāng)前工業(yè)中的路徑追蹤技術(shù)優(yōu)化主要集中在優(yōu)化算法的執(zhí)行效率,主要是針對處理器硬件架構(gòu)進(jìn)行優(yōu)化,例如針對緩存系統(tǒng)的優(yōu)化,增強(qiáng)數(shù)據(jù)局部性和指令局部性,以及改進(jìn)光線連貫性(ray coherence)使其能夠利用SIMD指令進(jìn)行高效計算等,這方面比較突出的是迪士尼的Hyperion渲染器,一些渲染器的優(yōu)化更是幾乎能達(dá)到某些場景復(fù)雜度范圍內(nèi)實(shí)時渲染,例如Embree。
然而以上這些內(nèi)容卻不是本文關(guān)注的重點(diǎn)(上述內(nèi)容會在thegibook中詳細(xì)討論),本文我們要討論的是一些路徑追蹤算法基礎(chǔ)架構(gòu)層面的改進(jìn),這些算法還很少出現(xiàn)在當(dāng)前工業(yè)解決方案中,但是確實(shí)未來的重要發(fā)展趨勢。
傳統(tǒng)的路徑追蹤算法是一個單純的積分問題,因此可以使用蒙特卡洛方法來估計,然而蒙特卡洛方法的每個抽樣是獨(dú)立的,因此很難有效快速對一些比較困難的路徑進(jìn)行采樣,一些很難被采樣的路徑需要巨量的采樣數(shù)才能達(dá)到“令人滿意”的結(jié)果,這導(dǎo)致非常緩慢的收斂速度。盡管開始的收斂速度非??欤?倍采樣數(shù)量可以減少1/2的誤差),但是越到后面會花費(fèi)更多倍的時間。傳統(tǒng)的方差縮減技術(shù)如重要性采樣,分層采樣,擬蒙特卡洛方法(Quasi-Monte Carlo)仍然不能改變這個收斂速度。
要提升蒙特卡洛估計的收斂速度,直觀上,我們需要能夠辨識每個圖像的分布特征,然后在一些高頻變化區(qū)域增加采樣的密度。然而,傳統(tǒng)的蒙特卡洛方法中每個抽樣之間是獨(dú)立的,它并不能有效辨識這種頻率變化特征,盡管梅特波利斯光照傳輸(Metropolis light transport,MLT)通過采樣點(diǎn)之間的相關(guān)性能夠?qū)ふ乙恍├щy路徑,本質(zhì)上它仍然并不善于處理和分析頻率域特征。要想能夠辨識圖像的分布特征,我們需要了解每個路徑的局部特征,即是我們需要對路徑追蹤算法引入微分運(yùn)算。路徑的微分涉及路徑與附近局部范圍內(nèi)光線的差值,即圖像的局部特征,因此它引入了光線之間的相關(guān)性,可以從多個層面改善路徑追蹤算法的效率(也正是如此,我們認(rèn)為這是近幾年路徑追蹤技術(shù)領(lǐng)域的重大進(jìn)展)。
最近幾年路徑追蹤領(lǐng)域的一些重大進(jìn)展正是微分幾何(differential geometry)的引入,由于微分反應(yīng)的是流形(manifold)的局部變化,因此非常善于尋找圖像分布中的高頻部分,目前路徑追蹤算法中的微分運(yùn)用主要包括:以通過計算紋理過濾函數(shù)實(shí)現(xiàn)反走樣的光線/路徑微分(ray/path differential)和協(xié)方差追蹤技術(shù)(covariance tracing);以通過計算梯度圖像用于利用篩選泊松方程(Screened Poisson equation)重建目標(biāo)圖像的梯度域渲染(gradient-domain rendering);以及通過將微分幾何結(jié)合費(fèi)馬定理(Fermat principle)用來尋找鏡面/光澤路徑的流形探索(manifold exploration),半矢量空間光照傳輸(half vector space light transport)等技術(shù);此外,微分還被用于適配性采樣(adaptive sampling),成為重要的降噪技術(shù)(Denoising)。
以下我們就來從概念和思路上分析上述這些技術(shù),當(dāng)然我們可以提前知道的這些技術(shù)的一個重要共同點(diǎn)就是:這些微分計算通常不需要通過光線追蹤引入新的采樣點(diǎn),否則那樣的計算成本就很高,這些技術(shù)通常都是利用微分幾何和某些假設(shè)進(jìn)行單純的微分計算,這里主要的工具是一階泰勒展開式(first-order Taylor approximation)和頂點(diǎn)處的切線平面空間(tangent space),因此,這些新技術(shù)通常都可以很容易地集成于目前主流的路徑追蹤技術(shù)基礎(chǔ)架構(gòu)之上,更詳細(xì)的內(nèi)容請參考thegibook中相關(guān)章節(jié)。
接下來我們討論的每一種微分的運(yùn)用都涉及一個相對比較獨(dú)立的層面,在閱讀這些內(nèi)容的時候,你首先需要非常清晰的了解的是它用來解決什么問題,因此我會在每一節(jié)的開頭提出這個問題,然后讀者可以圍繞這個問題來閱讀每一小節(jié),即每一種技術(shù)。
光照傳輸?shù)木植款l率域分析
微分反應(yīng)的是圖像的局部特征,因此其在圖像渲染中最