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

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

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

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

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

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式