一、自然界材質(zhì)
要學(xué)會(huì)使用PBR首先需要了解什么是PBR,需要從真實(shí)世界的這些PBR材質(zhì)特有的屬性拆分開來去了解他們,這樣我們就需要了解光,物體表面材質(zhì)以及光是如何與材質(zhì)交互的。光包括了顏色,亮度,衰減,強(qiáng)度,形狀等主要屬性,真實(shí)的世界中永遠(yuǎn)是多光源并存的。那么自然界中的材質(zhì)是如何跟光交互的呢?燈光照射到物體表面后兩種情況,反射或繼續(xù)前行折射。折射后的光線被吸收(一般轉(zhuǎn)化為熱),或離散。光線被吸收的行為不是發(fā)生在表面,而是次表面,或者內(nèi)部反射不會(huì)帶出任何顏色。
吸收會(huì)使光線強(qiáng)度降低,吸收某一光譜的光線,余下的光線顏色變化,但方向不變,離散后方向改變,強(qiáng)度不變。這里對于絕緣體和導(dǎo)體,兩者與光的交互是完全不同的絕緣體,即非金屬的反射率普遍很低,一般在2%-8%左右,大部分光線進(jìn)行折射,折射后的光線或者被吸收,或者重新離散出來。這部分折射的光線吸收率和材質(zhì)的明度關(guān),暗的吸收多,亮的吸收少;離散后光線的顏色也取決于物體表面顏色;
對于導(dǎo)體,即金屬,反射率普遍很高,達(dá)到70%-100%,所以大部分光線會(huì)以鏡面反射的形式反彈回來。小部分光線折射后完全被吸收(光是一種粒子,被導(dǎo)體吸收)。
1、擴(kuò)散Diffusion與反射Reflection
擴(kuò)散與反射,也即是漫反射diffuse與鏡面反射specular,是描述光與物質(zhì)的相互作用經(jīng)常用到的兩個(gè)詞。大多數(shù)人應(yīng)該能基本了解他們的含義,但不一定能知道他們兩個(gè)在物理上的區(qū)別。
當(dāng)光線照射到物體表面上時(shí),光線會(huì)以和入射角度相同的反射角度從物體表面反彈出去(入射角度與反射角度都是光照方向與光照表面發(fā)現(xiàn)方向所成的夾角)。這和你朝墻上扔小球非常相似,你把一個(gè)球扔在地上或者墻壁上,小球會(huì)以相同的角度但是相反的方向彈開。如果一個(gè)表面足夠光滑,那么它將表現(xiàn)的像個(gè)鏡子一樣。“鏡面反射”這個(gè)詞便用來描述這個(gè)現(xiàn)象。
當(dāng)然了,并不是所有的光都被表面反射出來了。通常情況下會(huì)有一部分光線進(jìn)入到受照射物體的內(nèi)部。在受照射物體內(nèi),這部分光線會(huì)被物體本身吸收(通常會(huì)轉(zhuǎn)化為熱)或者在物體內(nèi)進(jìn)行散射,部分散射的光有可能會(huì)通過內(nèi)部的傳播最終又反射回表面,再次成為可以觀察到的光線。這個(gè)現(xiàn)象有很多叫法,Diffuse Light(漫反射光),Diffusion(擴(kuò)散光),Subsurface Scattering(子面散射、次表面散射),都說的是一個(gè)東西。
散射(Scattering)的光和被吸收(Absorption)的光的波長往往是不一樣的。當(dāng)受照射物體吸收了大部分的光,但是反射了藍(lán)色的光,那么這個(gè)物體看上去就是藍(lán)色的。散射往往是一致無序的,可以說它從各個(gè)方向上來看都是一樣的,這和鏡子完全不同。所以當(dāng)使用PBR的材質(zhì)球需要描述物體的擴(kuò)散與反射屬性時(shí),只需要輸入“固有色albedo”就好了,即用反射貼圖來描述從物體表面散射出的各種顏色。Diffuse color有時(shí)也被用作它的同義詞。
2、半透明與透明
在某些情況下擴(kuò)散現(xiàn)象(Diffusion)會(huì)更加復(fù)雜,比如皮膚和蠟燭這些有著更廣泛的擴(kuò)散距離的材料。這時(shí)僅僅一張固有色貼圖Albedo是不夠的,整個(gè)著色系統(tǒng)必須考慮到被照射物體的形狀與厚度。如果被照射物體足夠的薄,那么往往能夠從物體背面看到散射出來的光,并被稱為半透明。如果被照射物體內(nèi)的擴(kuò)散程度很低(比如玻璃),那么光的散射幾乎是不可見的,你可以從物體的這一面看到另一面的整個(gè)畫面。這一現(xiàn)象和典型的“接近物體受照射表面”的擴(kuò)散現(xiàn)象有非常大的區(qū)別,這時(shí)候就需要去專門的調(diào)整并去模擬這種物理屬性。
3、能量守恒
講到這里我們足以得出一個(gè)重要的結(jié)論,那就是擴(kuò)散與反射是完全獨(dú)立的。這是因?yàn)楣庠跀U(kuò)散之前必須先進(jìn)入物體內(nèi)部(也就是沒有被物體表面反射)。這在光的投射現(xiàn)象里被稱為“能量守恒”,這也就意味著離開表面的光的亮度是不可能高于最初所照射光線的亮度的。
4、金屬
基于以下幾個(gè)原因,導(dǎo)體,特別是金屬,具有很特殊的材質(zhì)效果。
首先,導(dǎo)體相對于絕緣體具有更強(qiáng)的反射。導(dǎo)體的反射率在60%~90%之間,而絕緣體則低得多,只有0%~20%。這些金屬的高反射率意味著大多數(shù)的照射光線都不能進(jìn)入物體內(nèi)部進(jìn)行散射,這就意味著金屬看上去非常的閃。
其次,導(dǎo)體的反射光在可見光譜上會(huì)發(fā)生變化,也就是說反射光被上色了。這種反射的顏色雖然就算在導(dǎo)體中也算很罕見,但這種材料在日常生活中也是能看到(比如黃金,紅銅和黃銅)。一般來說,絕緣體并不會(huì)出現(xiàn)這種現(xiàn)象,他們的反射是沒有色彩影響的。
最后,導(dǎo)體通常是吸收光,而不是讓光散射。這意味著理論上來講,導(dǎo)體不會(huì)表現(xiàn)出任何散射現(xiàn)象。然而在現(xiàn)實(shí)中,金屬表面上的氧化物和殘留物會(huì)顯現(xiàn)一些少量的散射光。
正是因?yàn)榻饘倥c其他物質(zhì)的二元性,使得一些渲染系統(tǒng)采用直接輸入“金屬度metalness”的方法來控制一個(gè)材料是否是金屬。而不是僅僅去分別指定固有色albedo和反射率reflectivity。有時(shí)在創(chuàng)建材質(zhì),這會(huì)是首選的簡單方法,但PBR并不是都要這么做。
5、菲涅爾
在計(jì)算機(jī)繪圖中,菲涅爾指的是在不同入射角度時(shí)所出現(xiàn)的不同的反射率。具體的說,光的入射角度越大,反射率越高(如果水質(zhì)夠清晰,當(dāng)你垂直的看水面時(shí),是看不到自己的臉的,只能看到水底。而當(dāng)你的目光和水面接近水平時(shí),就看不到水底,反而可以看到湖面對岸上的樹之類的倒影)。這意味著開了菲涅爾的物體,渲染出來的物體的邊緣會(huì)有明亮的反射。大多數(shù)人都應(yīng)該很熟悉這個(gè)概念,它在計(jì)算機(jī)繪圖中不是個(gè)新詞。但是PBR在菲涅爾方程上做了一些很重要的修正。
首先,對所有的材質(zhì)來說,當(dāng)以接近水平的角度來觀察光滑物體的邊緣時(shí),會(huì)出現(xiàn)近乎完美的鏡面。是的,真的,任何物體都可以作為鏡子,只要它是光滑的,并且以正確的角度觀察。直覺上會(huì)覺得這不科學(xué),但是這很科學(xué)。
第二點(diǎn),對于不同材質(zhì)來說,入射角度對應(yīng)的曲率或者是梯度并沒有明顯的區(qū)別。金屬是最特別的,但也沒特別到哪里去。(說實(shí)話這段翻譯我沒太明白,看下面的圖可以發(fā)現(xiàn)不同材質(zhì)在0°入射角時(shí)的反射率差別最大,而在90°時(shí)都無限接近了100%,所以差別還是蠻大的。不過反射率在靠近0°時(shí)爬升的很慢,這時(shí)確實(shí)是沒什么太大變化。
6、微表面
上面所說的反射與擴(kuò)散都是由表面的方向所決定的。在較大的尺度下(可以理解為宏觀條件下),這是由被渲染表面的形狀決定,當(dāng)然也可以使用normal map來描述一些小細(xì)節(jié)。只要有了這些信息,任何渲染系統(tǒng)都能將擴(kuò)散和反射表現(xiàn)的相當(dāng)不錯(cuò)。
然而我們?nèi)匀缓雎粤艘粋€(gè)地方?,F(xiàn)實(shí)當(dāng)中大多數(shù)物體的表面都會(huì)有非常微小的缺陷:微小的凹槽,裂縫,幾乎肉眼不可見的凸起,以及在正常情況下過于細(xì)小以至于難以使用normal map去表現(xiàn)的細(xì)節(jié)。盡管這些微觀的細(xì)節(jié)幾乎是肉眼觀察不到的,但是他們?nèi)匀挥绊懼獾臄U(kuò)散和反射。
微表處的細(xì)節(jié)對反射的影響最容易被觀察到(次表面的散射不太會(huì)被影響到,所以這里就不說了)。在上圖中,當(dāng)平行光照射到粗糙表面時(shí)會(huì)分散開來,也即是每條光線都照射到了物體表面上朝向不同的部分。用小球和墻壁來說:球仍然會(huì)反彈但反彈的角度變得不可預(yù)知??傊矬w表面越粗糙,反射光看上去越“模糊”。
不幸的是,分別去計(jì)算每一個(gè)微小表面所對應(yīng)的光照情況是不可能的。那怎么辦?如果我們放棄去直接計(jì)算每個(gè)微表面的光照和反射情況,而是直接給出一個(gè)粗糙度的數(shù)值,那我們可以寫出一個(gè)相當(dāng)準(zhǔn)確的shader并得到非常相似的最終效果。這個(gè)數(shù)值通常被稱為“光澤度”,“平滑度”,或“粗糙度”。它可以被特定的制作為一張貼圖并賦予給材質(zhì)。
微表面的細(xì)節(jié)對于任何材質(zhì)都是個(gè)非常重要的特質(zhì),就像真實(shí)世界中就有著各種各樣的微表面。光澤度貼圖并不是一個(gè)新概念,但因?yàn)槲⒈砻娴募?xì)節(jié)對光照的反射具有如此重要的影響,所以它在PBR中占據(jù)了一個(gè)關(guān)鍵位置。很快我們就將看到PBR著色系統(tǒng)在微表面方面的改進(jìn)。
二、PBR材質(zhì)系統(tǒng)
UE4的PBR材質(zhì)系統(tǒng)中引入了各種BRDF理論模型。BRDF 雙向反射分布函數(shù)(Bidirectional Reflectance Distribution Function)是建立在光學(xué)物理與計(jì)算機(jī)圖形學(xué)的基礎(chǔ)上的用于描述光反射現(xiàn)象的數(shù)學(xué)模型。BRDF描述了入射光線經(jīng)過某個(gè)表面反射后在各個(gè)出射方向上的分布,即場景中的光照射到材質(zhì)表面反射到視點(diǎn)的反射特征。在光學(xué)物理中,BRDF模型通過積分的形式來描述物體上一無窮小點(diǎn)對入射光線的吸收和反射情況,等于反射方向的光亮度和沿入射方向的入射光輝度之比,在理論上可以描述現(xiàn)實(shí)中絕大多數(shù)的光學(xué)現(xiàn)象,其模型如下:
BRDF模型還需遵循能量守恒定律,即入射光的能量等于出射光的總能量:
BRDF中的渲染方程計(jì)算了環(huán)境光照明下的反射光的光亮度,它可以寫成不同角度下的入射光光亮度乘以BRDF的積分:
為了便于使用,BRDF模型被組織成了多種參數(shù)化的指數(shù)模型,可以分為三類:經(jīng)驗(yàn)?zāi)P汀⒒谖锢淼哪P?、?shù)據(jù)模型等,下面介紹幾種常用的BRDF模型:
1、Lambertain漫反射模型
Lambertain漫反射模型是計(jì)算機(jī)圖形學(xué)中最基本的反射模型,它模擬了入射光線被均勻地反射到各個(gè)方向(各向同性)的情況,也就是說沿不同方向的BRDF是一個(gè)常數(shù),那么就有:
反射率 等于反射光輝度與入射光輝度之比,即
Lambertain模型能夠很好地表示包含純粹漫反射現(xiàn)象的物體材質(zhì)(例如:紙張),但不能表示鏡面反射效果,而鏡面反射效果對于金屬材質(zhì)的表現(xiàn)十分重要。
2、Phong光照模型
Phong光照模型在Lambertain漫反射模型的基礎(chǔ)上添加了鏡面反射項(xiàng),來表達(dá)鏡面反射效果:
Phong模型不滿足可逆性。
盡管Pong模型缺乏物理解釋,但由于簡潔和高效的特性而被廣泛應(yīng)用于計(jì)算機(jī)圖形學(xué)的反射模型中。
3、Fresnel模型
Fresnel模型是建立在光學(xué)物理的基礎(chǔ)上的數(shù)學(xué)模型,其建立在表面由眾多微表面組成的細(xì)節(jié)幾何結(jié)構(gòu)上。從微觀角度來說,微觀尺度的表面幾何是通過一組微平面集合來組成的。在真實(shí)的物理環(huán)境下,我們發(fā)現(xiàn)光的單向反射性會(huì)在擦地角處附近增大,(例如:在以垂直角度向下看水面幾乎不存在反射,而以平行角度看水面時(shí)則存在明顯的反射現(xiàn)象)。在此基礎(chǔ)上,我們從麥克斯韋電磁波方程組中得到菲涅爾公式,從而計(jì)算出入射光的反射量:
其中,F(xiàn)表示菲涅爾反射率。
4、Cook-Torrance模型
Cook-Torrance模型是計(jì)算機(jī)圖形學(xué)中應(yīng)用最早的BRDF物理模型,是應(yīng)用物理學(xué)家Torrance-Sparrow模型的一個(gè)應(yīng)用版本。Cook-Torrance模型中把物體看成無數(shù)個(gè)微平面,并假定微平面是由V型凹槽組成的,凹槽中滿足鏡面反射。該模型結(jié)合了Lambertain模型的漫反射項(xiàng)與微平面反射的鏡面反射項(xiàng),公式為:
其中,D表示微平面法向分布函數(shù),G表示幾何衰減因子,s和d表示鏡面反射和漫反射系數(shù)。
5、Ward模型
Ward模型介紹了一種更一般的表面法向表達(dá)方式,即通過橢圓體這種潤徐各向異性反射的形式來表達(dá)。該模型將菲涅爾因子和幾何衰減因子替換成了一個(gè)用于保證分布在整個(gè)半球內(nèi)積分的簡單歸一化項(xiàng),由于沒有考慮菲涅爾因子與幾何衰減因子,使得該模型更像是一種經(jīng)驗(yàn)?zāi)P汀?/span>
6、波動(dòng)光學(xué)模型
波動(dòng)光學(xué)模型以波動(dòng)光學(xué)為基礎(chǔ),假設(shè)物體表面的微平面大小與光的波長相當(dāng)。雖然波動(dòng)光學(xué)模型有很強(qiáng)的描述能力,能夠很好地表示真實(shí)感物體材質(zhì),但由于該模型本身過于復(fù)雜而限制了它的應(yīng)用。
7、數(shù)據(jù)驅(qū)動(dòng)模型
數(shù)據(jù)驅(qū)動(dòng)模型是將一個(gè)大的材質(zhì)集合的BRDF記錄為高維向量,并通過降維的方法從這些數(shù)據(jù)中計(jì)算出一個(gè)低維模型。數(shù)據(jù)驅(qū)動(dòng)模型對材質(zhì)屬性沒有假設(shè)限定,使用起來更靈活,但由于數(shù)據(jù)量大,還需要通過數(shù)據(jù)降維的方法來壓縮數(shù)據(jù)。
三、UE4中的PBR材質(zhì)
UE4引擎的PBR材質(zhì)系統(tǒng)中引入了各種BRDF函數(shù)理論模型,來盡量逼近模擬自然界的物理現(xiàn)象,PBR材質(zhì)的編輯指的是用戶通過修改現(xiàn)有的BRDF模型從而得到新的BRDF模型。如果是解析形式的BRDF模型,那么通過修改其參數(shù),就能實(shí)現(xiàn)BRDF的編輯。也可以在shader里選擇默認(rèn)模型,最終需要效率和效果的一個(gè)最佳結(jié)合點(diǎn)。
在UE4材質(zhì)里面,每一個(gè)input都有著各自的特性,他們的組合成為了一個(gè)個(gè)不同屬性的物理材質(zhì)??梢詫?shí)現(xiàn)鋼,塑料,鐵,玻璃,油漆等材質(zhì)類型,打磨過的,拋光,磨砂等材質(zhì)表面處理,生銹的,刮擦的,磕碰的,臟的,油膩的,油漆剝落的,積灰的,嶄新的等材質(zhì)表現(xiàn)細(xì)節(jié)。
PBR其實(shí)并不是一個(gè)邏輯復(fù)雜的過程,它更像一杯由各種數(shù)學(xué)公式組成的雞尾酒。比如說要描繪正確的高光過程,一個(gè)實(shí)用的PBR實(shí)例就是將施利克的菲涅耳系數(shù)與基于施利克-史密斯的視覺函數(shù)來進(jìn)行組合。通過將復(fù)數(shù)的描述物理過程和結(jié)果的算法進(jìn)行組合,PBR最終能夠具備賦予像素正確顏色的能力。
其實(shí)在漫長的圖形技術(shù)進(jìn)化過程中,PBR所做的工作一直在被程序員們進(jìn)行著,從光錐陰影到softshadow,再到最近日趨火熱的AO過程,這些技術(shù)進(jìn)步其實(shí)都是對算法模型的改進(jìn)。但相對而言,傳統(tǒng)的做法往往集中在某個(gè)特定的有針對性的領(lǐng)域,比如說陰影當(dāng)中,或者往往只考慮了像素的處理,所以并不能解決所有問題。PBR除了為整個(gè)渲染過程搭建了一個(gè)能夠整合的框架,令更多像素細(xì)節(jié)能夠有機(jī)會(huì)在改進(jìn)算法和物理模型的作用下呈現(xiàn)更正確的顏色之外,最重要的改進(jìn)還在于建立了更加完備的、分辨率更高同時(shí)能夠與經(jīng)過PBR修飾的光影效果更正確互動(dòng)的材質(zhì)庫。
以上!
文章摘自網(wǎng)絡(luò)!
|