路徑追蹤技術(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)部多次交互(反射,折射,散射)后進入圖像平面的貢獻值(即輻射照度)被轉(zhuǎn)換為這些表面交互點形成的路徑的一個積分,其被積函數(shù)為這些表面的雙向散射系數(shù)(BSDF),頂點之間的積分變量變化(change of variables)以及頂點之間可見性的乘積。在統(tǒng)計中,積分可以很簡單地使用蒙特卡洛方法進行估計,因此光照傳輸?shù)膯栴}就轉(zhuǎn)化為對場景進行路徑采樣,然后對每條路徑的貢獻值進行平均求和的蒙特卡洛積分計算。

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

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

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

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

網(wǎng)友評論