More DETAILS! PBR的下一个发展在哪里?
最近幾年圖形學社區(qū)對PBR的關(guān)注非常高,也許是由于Disney以及一些游戲引擎大廠的助推,也許是因為它可以被輕松集成進實時渲染的游戲引擎當中,也許是因為許多人發(fā)現(xiàn)現(xiàn)在只需要調(diào)幾個參數(shù)就能實現(xiàn)具有非常精細細節(jié)的表面著色了。反正現(xiàn)在網(wǎng)絡(luò)上隨便一篇PBR的文章都可以引來大量的關(guān)注,不管你有沒有講清楚,也不管我有沒有看明白(當然沒有調(diào)侃誰的意思啦,它們大部分都還不錯,而且這篇文章跟他們大部分討論的內(nèi)容都不一樣)。
那么PBR是否已經(jīng)足夠完美,如果不是,那么它有哪些方面的缺點及限制,以及針對這些不足,它的下一步發(fā)展應(yīng)該是什么?這些問題就是本文會聚焦的內(nèi)容。對于一個知識點,解釋它的基本思路和概念也許并不是最難的,最難的是你知道它的限制和不足在哪里,這部分的理解往往會比它的基本概念要困難一些,你必須更深刻地理解這種知識才能洞悉它的缺點,然后你便清楚它的下一步發(fā)展應(yīng)該是什么。因此,本文其實不僅會討論PBR的下一步發(fā)展,這里對PBR不足的一些分析也許能夠讓你更深刻地理解它的概念。不信?往下讀一讀試試!
本文主要分為三個部分,第一部分簡要介紹PBR的基本概念,第二部分則分析PBR存在的問題,然后我們結(jié)合一些研究成果探討PBR的下一步發(fā)展。
PBR基本概念
這里,我們從兩個方面介紹PBR的基本概念:首先介紹它處于渲染中的什么流程或者說哪個環(huán)節(jié),或者說它在整個渲染中具有什么樣的作用;然后介紹它的基本原理和思路。在圖形渲染中,如果架構(gòu)抽象的比較好的,我們可以將整個渲染流程劃分為四個相對比較獨立的部分:
- 光源表述(lighting):例如是點光源,面積光源或者其它形式的(例如將網(wǎng)格用作一個)光源,是使用輻射強度還是直接使用輻射亮度來表述光源發(fā)出的光照。
- 光照傳輸(light transport):就是光在場景中是怎么傳輸?shù)?#xff0c;例如離線渲染中的光線追蹤算法,它能模擬比較真實的光子傳輸行為,就是說能覆蓋全部光子傳輸路徑(或空間),但是在實時渲染中使用的一些近似方法也是表述光照傳輸?shù)?#xff0c;雖然它可能省略掉了一些不重要的路徑,但是這仍然是一種光照傳輸算法。光柵化的整個過程也是模擬了直接光照的傳輸。
- 著色模型(shading):就是光與表面相交時發(fā)生的光學交互,比如反射和折射等,所有著色相關(guān)的數(shù)據(jù)匯總成一個材質(zhì)對象,每個物體表面都需要一個材質(zhì)對象,以便決定光在經(jīng)過物體表面時應(yīng)該如何對物體表面進行著色。
- 攝像機模型(camera):比如投影方式,對景深效果的實現(xiàn)方式,是否支持全景繪制,是否支持對時間采樣實現(xiàn)運動模糊等。
其中,光源表述和攝像機模型是相對比較簡單的,最耗時間的是光照傳輸,因為它要執(zhí)行光線與場景的相交計算,復(fù)雜的著色模型也可能比較耗時,但著色模型的最重要作用是決定物體表面所能表述細節(jié)(details)的能力。
在術(shù)語上,PBR英文全稱為Physically based rendering,它是指能夠?qū)崿F(xiàn)接近物理真實的整個渲染算法或過程。但是由于光照的傳輸算法通常是固定且內(nèi)置于渲染引擎的(或者說已經(jīng)具有比較穩(wěn)定成熟的算法,例如離線渲染領(lǐng)域的路徑追蹤算法,或者實時渲染領(lǐng)域里的光柵化+其它全局光照算法),剩下對基于物理的渲染算法影響最大的其實是表面的著色(材質(zhì))模型。因此,人們通常在討論或描述PBR時,更多的是指其使用的著色模型?;谖锢淼闹P透鼫蚀_的稱呼應(yīng)該是Physically based shading,但是通常并沒有PBS的稱謂。
那么物理材質(zhì)是指什么,“材質(zhì)”其實就是光在與某個特定表面交互時需要的所有光學交互計算的數(shù)據(jù),例如法線,紋理,BRDF等,也就是說,材質(zhì)定義了最終表面接受光照后的視覺結(jié)果。對于物體表面視覺特征的定義,根據(jù)尺寸粒度可以劃分為三級:
- 基于網(wǎng)格頂點的表述,這種就是只對網(wǎng)格頂點的著色進行描述,然后中間的表面像素則通過插值來計算。
- 基于像素的紋理貼圖,這就是最常見的各種貼圖,它們能表述像素級別的視覺特征。
- 基于微觀粒子的微面元表述,這就是我們這里所關(guān)心的物理著色。
上述前兩種視覺表述是比較常見的,也是早期使用的一些技術(shù)。然而這兩種表述遠遠不能描述物體表面的視覺特征,這是因為一個像素的尺寸遠遠大于物體表面上微觀粒子的尺寸,如下圖所示,圖像空間中間的黃色方塊表示一個像素,下面灰色褶皺部分則是該像素對應(yīng)的實際微觀結(jié)構(gòu),而光實際上是作用在這些微觀結(jié)構(gòu)上的,所以基于像素的著色模型(如直接貼圖)反應(yīng)不出真實物體表面的微觀細節(jié),所以這些技術(shù)都可以稱為不是基于物理的材質(zhì)。
物體表面微觀結(jié)構(gòu)的尺度遠遠小于一個像素的尺度
?
那么,要怎么表述這么微小的微觀結(jié)構(gòu)的光學交互行為呢?顯然我們不可能像紋理那樣對每個微觀粒子使用一個紋素進行表述,那樣我們的計算機內(nèi)存將遠遠不夠存儲這種級別的紋理,所以人們提出了Microfacet BRDF理論,它使用一個法線概率分布函數(shù),來模擬微觀粒子的法線分布特征,這樣就能夠表述物體表面的微觀特征,從而接近物理真實,所以稱為基于物理的材質(zhì)表述。
Microfacet BRDF表現(xiàn)出來的視覺特征是什么呢?那就是對于每個固定方向的入射光,我們可以有多個對該入射光的觀察方向;或者反過來說,對于某個固定的觀察方向,我們可以從一個像素觀察到來自多個方向的入射光照。如果沒有Microfacet BRDF,一個像素只被當做一個平面,對于固定的觀察/入射方向,它只對應(yīng)一個入射/觀察方向。在Microfacet BRDF中,我們所能觀察入射方向的方向范圍,被參數(shù)化為一個粗糙度參數(shù),如下圖所示。這種著色模型使得我們能夠表現(xiàn)比像素更小尺寸的表面細節(jié)。
反射光的范圍大小取決于物體表面的粗糙度,物體表面越粗糙,它越能接收更大范圍的光照
?
在渲染中,我們有許多模型來近似真實物體的微觀法線分布,例如Normalized Blinn-Phong,Beckmann,GGX模型等等,這些模型具有不同的近似度和計算復(fù)雜度。由于這些模型都是對真實物理特征的近似,因此它們很可能不會遵循真實的物理分布,因此正性(positivity),互換性(reciprocity)以及能量守恒(energy conservation)被用來衡量一個BRDF模型是否是基于物理真實的,注意它們不是BRDF的屬性哦,而是對BRDF是否滿足物理真實的要求,因為你根據(jù)一些測量數(shù)據(jù)提出一個近似的BRDF模型很可能不是物理真實的,這些條件只是用來檢驗BRDF模型的物理真實性。
? DreamWorks Animation 2017
?
頂點和像素級別的紋理可以存儲在一張紋理圖片中,這種基于物理的材質(zhì)表述怎么存儲呢?前面已經(jīng)說過這個級別的表述是無法精確定義和存儲的,所以我們將這個概率密度分布直接寫進shader中,因為shader也是材質(zhì)的一部分。
這也是為什么近幾年實時渲染的游戲品質(zhì)有了很大提升,實時渲染與離線渲染的最大不同在于光照的傳輸過程,實時渲染省略或者近似了很多路徑,但是在光與表面的交互上,它只涉及一個公式的計算,并不會對性能造成太大影響,所以可以很容易地集成進來。不過實踐中,實時渲染使用的概率密度分布函數(shù)要比影視中使用的計算量要簡單一些,這只是在質(zhì)量上稍有差異,但是不影響它表述微觀粒子視覺特征的能力。
PBR的限制
有了上述Microfacet BRDF理論,物理著色的世界是否就完美了呢?換句話說你是否就能夠通過幾個神奇的參數(shù)表述任意細節(jié)的物理材質(zhì)呢?
如果你仔細觀察通過上述那些Microfacet BRDF模型渲染出的圖像,你會發(fā)現(xiàn)雖然它們能夠表述粗糙度,但是它們都太過平滑或者說模糊,例如下邊右邊的圖。
右圖:傳統(tǒng)的Microfacet BRDF模型太過于平滑(圖片來自【10】)傳統(tǒng)的Microfacet BRDF模型渲染不出上圖中左圖那種劃痕的效果。這是為什么,這是因為出于計算效率,傳統(tǒng)的Microfacet BRDF模型都是對真實BRDF分布的一個粗略近似,這些近似往往都非常平滑,如下圖所示,右圖表示一個比較真實的BRDF分布,而左圖表示一個傳統(tǒng)的Microfacet BRDF模型,左圖可以看做是對右圖的一個(非常)平滑的結(jié)果,這是因為我們需要計算效率足夠高的著色計算,復(fù)雜的BRDF分布會大大增加采樣的計算時間。這種平滑的結(jié)果使得傳統(tǒng)的Microfacet BRDF模型只能渲染出一定距離范圍之外的表面著色,你可以理解為距離越遠著色越模糊,當然這里實際上不是指實際物體離攝像機的距離,而是說這種模型永遠只能渲染出類似于超出這個距離的表面粗糙度,即使拉近攝像機的距離,它們看起來仍然是很平滑的,因為它們所使用的BRDF已經(jīng)被嚴重的平滑了,也就是上面右圖中的效果,那些更細微的細節(jié)被下面左圖這樣類似的BRDF分布給平滑掉了。
左:傳統(tǒng)的Microfacet BRDF模型:右:真實的BRDF分布(圖片來自【5】)所以這里可以總結(jié)出傳統(tǒng)的Microfacet BRDF模型具有哪些不足。首先,傳統(tǒng)的Microfacet BRDF太過平滑,不能表現(xiàn)小于一個像素的幾何級的細節(jié),這些細節(jié)的尺寸介于像素和微觀粒子之間,如文章封面左圖中的劃痕,后面會分析更多例子。
其次,物理材質(zhì)的著色計算“表述”在像素著色器(shader)中,而物體表面的宏觀結(jié)構(gòu)往往通過網(wǎng)格頂點或者像素級別的法線貼圖來表述,這兩種幾何表述是分離的,并且隨著表面離攝像機距離的改變,一個像素的尺寸和一個紋理中的紋素的尺寸之間的相對關(guān)系發(fā)生著變化,當物體表面離攝像機足夠遠時,實際上物體的宏觀法線貼圖或幾何結(jié)構(gòu)其實變成了該像素的“微觀結(jié)構(gòu)”,然而,通常法線貼圖或幾何結(jié)構(gòu)與BRDF都是獨立的,例如法線貼圖首先被過濾到最模糊的級別,然后用于Microfacet BRDF的計算,這就使得artifacts非常嚴重,例如下圖中三種不同的距離下,近處的水波細節(jié)在遠距離下產(chǎn)生較大的artifacts。
或者如下圖中,光盤上的劃痕,在遠距離下直接被模糊掉了。
在遠距離下,由于幾何級的法線數(shù)據(jù)首先被過濾,然后作用與BRDF,因此這種細節(jié)丟失,物體表面的細節(jié)隨著距離攝像機的距離改變而改變(圖片來自【13】)PBR的下一步發(fā)展在哪里?
上述的描述其實可以總結(jié)為兩個方面:
- 傳統(tǒng)Microfacet BRDF對微觀結(jié)構(gòu)的表述精確度不足
- 傳統(tǒng)的Microfacet BRDF與宏觀的(如法線)貼圖或幾何結(jié)構(gòu)不相容,或者說不能相互協(xié)調(diào)工作
這是兩個獨立的問題,例如單提高BRDF的精確度不能解決第二個問題,因為對于遠處的物體,我們需要將幾何級的結(jié)構(gòu)視作像素的微觀結(jié)構(gòu)(例如微面元),否則我們需要很高的采樣才能消除artifact,而這對于遠處的物體較高的采樣顯然是比較浪費的;其次,讓宏觀的幾何結(jié)構(gòu)與BRDF相協(xié)調(diào)對于近處物體的細節(jié)表述是沒有什么意義的。當然如下所述,如果高分辨率的法線貼圖被視作幾何結(jié)構(gòu),那么第二個問題的確能改善第一個問題。
首先,對于微觀結(jié)構(gòu)的表述,出于計算效率的考慮,目前我們還不可能使用非常復(fù)雜的Microfacet BRDF近似模型,因為比較精確的模型可能需要上百倍的計算時間。當前的研究主要是集中于使用高分辨率的法線貼圖(或者其它一些特殊的高分辨率幾何結(jié)構(gòu))來表述這種介于像素和微觀粒子之間的幾何結(jié)構(gòu),然后將每個像素對應(yīng)的這種幾何級的數(shù)據(jù)與BRDF相融合,得出一種能夠適應(yīng)這些幾何結(jié)構(gòu)的Microfacet BRDF模型。這種模型能夠表述更微觀的幾何細節(jié),例如下圖所示,光盤和地板上那種細節(jié)在傳統(tǒng)的BRDF上是表現(xiàn)不出來的,因為它們會完全被平滑掉。
Microfacet BRDF與高分辨率貼圖結(jié)合產(chǎn)生更多細節(jié)(圖片來自【10】)通過結(jié)合傳統(tǒng)的Microfacet BRDF模型與貼圖,兩種著色技術(shù)被結(jié)合起來,使得我們不必使用更復(fù)雜的Microfacet BRDF模型就可以表述更精細的微觀結(jié)構(gòu)。
除了將高分辨率的貼圖融入進Microfacet BRDF模型中,對于遠處的表面,我們還需要能夠直接將宏觀的表面幾何結(jié)構(gòu)融入進Microfacet BRDF模型中,即這些宏觀幾何結(jié)構(gòu)成為一個像素中的微面元本身。
在傳統(tǒng)的Microfacet BRDF模型中,針對每一個像素,我們首先根據(jù)法線貼圖或其它方式得到一個當前像素的法線,然后代入進Microfacet BRDF模型中計算出射光照。然而我們說過,Microfacet BRDF模型發(fā)生于像素尺寸,而法線采樣發(fā)生于紋理尺寸,這兩個尺寸通常是不對等且隨著表面到攝像機的距離變化而變化的,例如對于比較近的表面,假如像素與紋理尺寸是一比一的,那么這個法線采樣會比較準確,它可以直接被用于Microfacet BRDF模型中進行計算;然后對于遠處的表面,一個像素尺寸可能等于多個紋素尺寸,這時對法線貼圖的直接采用就會導(dǎo)致比較大的方差,我們需要花很多的樣本才能把這些方差平均下來,因此傳統(tǒng)的做法就是首先對法線貼圖進行過濾,也就是從一個Mipmap中得到對應(yīng)距離的法線值。這種做法雖然使用平滑的偏差帶來了方差的減小,但是它又平滑了這種幾何級的細節(jié),所以我們?nèi)匀恍枰浅8叩牟蓸勇蕘硖钛a這些細節(jié)。
所以,如果我們能夠?qū)缀渭壍暮暧^結(jié)構(gòu)也融入到Microfacet BRDF中,對于遠距離的表面,宏觀的幾何結(jié)構(gòu)直接集成于Microfacet BRDF中,就能夠使用比較少的樣本來得到遠處表面的細節(jié),例如下圖中,使用傳統(tǒng)的Microfacet BRDF,左圖使用100個樣本可以得到比較精細的細節(jié),但是中圖使用一個樣本則比較模糊,因為較遠的地方法線貼圖的采樣被過濾了,右圖將幾何結(jié)構(gòu)融入Microfacet BRDF中,可以使用較少的樣本得到遠處的幾何細節(jié)。
左圖:傳統(tǒng)的Microfacet BRDF,使用每像素100個樣本;中圖:傳統(tǒng)的Microfacet BRDF,每像素一個樣本;右圖:將幾何結(jié)構(gòu)融入Microfacet BRDF中,每像素一個樣本(圖片來自【4】) 能夠?qū)缀渭壍馁N圖數(shù)據(jù)和Microfacet BRDF融合,許多的表面都可以得到更精細的表述。圖片來自【13】
當然,由于bump map或normal map都是對法線的fake,它們并不改變物體表面的幾何結(jié)構(gòu),僅僅是直接給著色器傳遞一個假的的法線值,這個法線值可能導(dǎo)致物體表面的表面幾何分布并不是一致的(consistent),因此這就破話了Microfacet BRDF的對稱性和能量守恒。例如下圖所示,由于表面的真實幾何結(jié)構(gòu)沒有發(fā)生變化,然而著色使用了一個假的法線,因此使得一部分的方向被丟失,例如對于下圖而言,左邊半球與幾何平面交叉的部分(紅色箭頭所示)和右圖半球面下方的方向(紅色箭頭所示)都是不能被采樣的,這造成了光照的泄露和丟失。
圖片來自【11】?
因此,開發(fā)更高效的Microfacet BRDF模型,使其能夠與在bump/normal map的配合下能夠呈現(xiàn)更真實的著色,也是Microfacet BRDF發(fā)展的話題,以下是Unity labs的一種解決方案。
圖片來自【11】總結(jié)
出于性能考慮,當前傳統(tǒng)的Microfacet BRDF都采用比較模糊近似模型,這使得介于像素和微觀粒子之間的微觀結(jié)構(gòu)被忽略。而實踐上我們也不可能采用表述更精確的Microfacet BRDF模型,因為這往往需要較大的數(shù)據(jù)存儲(例如一些基于數(shù)據(jù)驅(qū)動的Microfacet BRDF模型)或者較大的計算時間,不過實際上可能人眼也不可能分辨太過微觀的細節(jié),因此結(jié)合傳統(tǒng)的(bump/Displacement/normal map等)貼圖技術(shù),通過高分辨率的貼圖來展現(xiàn)比像素更微觀的細節(jié),并讓這些貼圖所表述的相對宏觀的幾何結(jié)構(gòu)融入到Microfacet BRDF模型中,便成為比較簡潔而有效的方法。此外,除了貼圖級別的宏觀幾何結(jié)構(gòu),遠處更大尺寸的如頂點級別的幾何結(jié)構(gòu)也是需要與Microfacet BRDF模型進行融合的。
對于理解Microfacet BRDF模型,表面表述的尺寸是一個非常關(guān)鍵的因素,仔細去理解每種尺寸下著色模型的選擇,以及它們之間怎么聯(lián)合起來對總的表面進行著色,這是讓你透徹理解著色的關(guān)鍵。
?
?
參考引用或相關(guān)補充資源:
[1] 2010 LEAN Mapping
[2] 2013 Linear Efficient Antialiased Displacement and Re ectance Mapping
[3] 2014 Discrete Stochastic Microfacet Models
[4] 2014 Geometry into Shading
[5] 2014 Rendering Glints on High-resolution Normal-mapped Specular Surfaces
[6] 2014 Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs
[7] 2015 Multiple-Scattering Microfacet BSDFs with the Smith Model
[8] 2015 Skin Microstructure Deformation with Displacement Map Convolution
[9] 2016 Multi-Scale Rendering of Scratched Materials using a Structured SV-BRDF Model
[10] 2016 Position-Normal Distributions for Efficient Rendering of Specular Microstructure
[11] 2017 Microfacet-based Normal Mapping for Robust Monte Carlo Path Tracing
[12] 2017 Pixar's Foundation for Materials
[13] Racing for Realism
轉(zhuǎn)載于:https://www.cnblogs.com/hielvis/p/8111531.html
總結(jié)
以上是生活随笔為你收集整理的More DETAILS! PBR的下一个发展在哪里?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: composer 更改为中国镜像
- 下一篇: js 两个方法