《The Comprehensive PBR GUIDE》第一部分:基礎理論

光與物質的互動:基於物理渲染和着色的理論基礎

目錄
• 光線 - 2
• 吸取與散射(透明與半透明)- 3
• 漫反射,高光反射,微平面理論 - 4
• 顏色- 6
• BRDF(雙向反射分佈函數)- 6
• 能量守恆 - 7
• 菲涅爾效應,F0(零度角菲涅爾反射) - 7
• 導體和絕緣體 (金屬和非金屬) - 9
• 線性空間渲染 - 11
• 關鍵因素 - 11
• 參考- 12函數

光與物質和互動行爲
光是一種很是複雜的天然現象,可以同時展示出波動性質和粒子性質,迄今爲止已經有不少不一樣的模型被提出來解釋光的行爲。對於紋理藝術家來講,咱們關注的是最簡單的光線模型(也就是你們都明白的:光沿直線傳播)所描述的光與物體表面的互動。紋理藝術家的工做就是創造描述物體表面性質的紋理貼圖,因此天然知道光和物體互動的理論是很是重要的。
這篇導讀中,咱們會討論做爲基於物理渲染(PBR)的理論基礎的一些物理「常識」。首先咱們天然是從光線模型,這一PBR的核心因素入手。spa

光線是啥
光線模型基於一個衆所周知的真理:光線在相同的介質中的軌跡是絕對的直線,好比在空氣中就是如此。光線模型還告訴咱們光在物體表面的行爲是能夠預測的,包括在不透明物體表面的反射、在穿過不一樣介質界面的折射等。這就讓咱們可以完整的在虛擬世界中模擬一條光線的生命週期,從它的起點一直到它最後由於散射而衰竭變成熱量,咱們在計算機中均可以編寫相應的模型去計算。插件

擊中物體表面的光線叫作入射光線,如圖01所示的,而光線和物體表面法線所成的角叫作入射角。3d

圖片描述

當光線擊中表面時,通常有兩件事情可能會發生:blog

  1. 光線根據反射定律被表面徹底反射並被彈向一個徹底不一樣的角度,反射角度等於入射角度。生命週期

  2. 光線按折線形式由一種介質傳播到另外一種介質。這時光線被分紅折射和反射的兩部分。在物體表面,光線同時存在被反射和折射的可能性,其中折射的光線可能最終被介質吸取,固然,吸取衰竭的過程不會發生在物體表面。圖片

吸取與散射(透明和半透明)
當光線在各向異性的介質(也就是半透明物體)中傳播時,光線可能會被吸取或者散射:文檔

  1. 當光線在介質中被吸取時,光能量隨着它被轉換成其餘形式的能量而衰竭(一般是熱量),光的顏色(波長)也會根據介質的吸取特性而改變,但光線傳播的方向不變。工作流

  2. 當光線在介質中被散射時,光線傳播方向會隨機變化,其方向的變化幅度取決於介質的性質。散射會讓光的傳播方向隨機發生變化可是光線強度卻不變。一個生物體組織的耳朵是一個很好的散射例子。耳朵很薄(吸取效應很弱),因此咱們可以從耳朵背面看見散射的光線穿透過來(血紅色)。假如沒有散射而且吸取效應很弱的話,耳朵會看起來像像玻璃同樣透明。另外一個例子是游泳池,若是泳池的水足夠清澈,那麼你在其中游泳時能夠在水下看的很遠,這時咱們能夠認爲水是透明的。反之,若是是一池髒水,水中的污物粒子就會大大加重散射的效應,這時候水的透明度就會變得很是低。it

光線在介質中傳播的越遠,散射和吸取帶來的損失就會越多,所以,物體的厚度在光線的散射和吸取中扮演了重要角色,圖02用了一張厚度貼圖來在shader中表示物體厚度(用於計算散射強度)

圖片描述

漫反射與高光反射

高光反射用來描述的是咱們以前提到的光被物體表面反彈出去的想象,光線被物體表面反射到一個徹底不一樣的角度以後的現象。不管是漫反射仍是高光反射都聽從着描述完美鏡面反射現象的反射定律。然而,因爲物體表面每每並不能像完美鏡面同樣光滑,光線反射出去的方向每每是很是隨機的。而反射光線的隨機程度與物體表面的粗糙程度成正相關。漫反射與高光反射改變了光源發出的光的方向,但並不改變其強度。

粗糙表面的反射呈現出更大範圍並且相對較暗的高光區域,而光滑表面的高光反射則更加集中和明亮。固然,兩種表面反射的光的總量是一致的,如圖03所示。

圖片描述

在徹底的漫反射現象中,光線其實已經被折射至物體內部,並在新的介質中經歷屢次散射,以後再次從物體內部折射而出,而折射出點和光線入射點每每距離很是接近,如圖04所示。

圖片描述

漫反射性質的物體每每對光線更加具備吸取性質,光線甚至頗有可能被其徹底吸取(在材質中走的夠遠的話)。這也就意味着漫反射出去的光線並無在物體材質中傳播多遠,所以入射點和出射點之間的距離才能夠忽略。傳統渲染着色模型中經常使用的Lambertian模型,並無將表面粗糙度考慮在其中,但新的漫反射模型好比Oren-Nayar就將物體粗糙度也做爲一個參數。

相對應的,擁有很高散射係數和相對較低的吸取率的物體材質就被稱爲「參於介質」或者更通俗的「半透明物體」。例如煙,牛奶,皮膚,玉石和大理石。渲染後三種物體能夠採用次表面散射的模型處理,當渲染這三種材質時入射點和出射點的距離就再也不可以被忽略。正確渲染高度各向異性和低散射吸取係數的物體好比煙和霧每每須要更加昂貴的方法,好比蒙特卡洛模擬。

微平面理論
理論上來講,不管是漫反射或者高光反射都與反射光線表面的粗糙和崎嶇程度有關係,對於漫反射表面來講,粗糙程度對反射的影響要小的不少由於光線每每在物體內部發生散射,結果就是漫反射表面的出射光線每每展示出一種與入射角和粗糙程度無關的隨機性。最經常使用的Lambertian模型就是基於這樣的現象創建的理論。

這篇文檔中,咱們把物體表面和光滑平面的差別和不規則程度:如凹凸不平。叫作粗糙度。實際上,它根據PBR工做流的不一樣又被稱爲粗糙度,光澤度,高光度等等。但它們都描述了物體表面次像素級別的同一種屬性。

在實際的PBR工做流中,這種物體表面的不規則性被一張粗糙度貼圖或者高光度貼圖來表示。微平面理論,一種把物體表面看作無數微觀尺度,但有着隨機朝向的理想反射鏡面來建模的理論,推導出了一個基於粗糙度的BRDF公式(見後文)來描述物體的反射。在這個理論中,每一個微平面都像完美鏡面同樣基於本身的法線把光線反射向同一個方向,如圖05.

圖片描述

對於每個微小平面來講,其表面法線嚴格朝向光線方向和視線方向的中間,然而並非全部的微小平面的法線與半角向量相同。如圖05所示,微小平面之間存在着陰影(對於光照方向來講)和遮擋(對於視線方向來講)。

物體表面在微觀層級的不規則性形成了光線的擴散。好比,模糊的反射就是由於被散射的光線,被反射的光線若是不是平行的,看上去就會和被模糊同樣。如圖06所示。

圖片描述

顏色
物體表面的顏色(也就是咱們的肉眼所看到的顏色),來自於光線的波長。光源發出的光線在通過物體的吸取後反射出來的光線(包括高光和漫反射)最後進入眼睛的光線的波長就是咱們看到的顏色。

例如:紅蘋果的皮最多反射的是紅色光線,只有紅光在散射後被彈出,而其餘波長的光線都被蘋果吸取了,如圖07.

圖片描述

蘋果表面同時還有和光源顏色同樣的高光。這是由於蘋果皮並不是導體,高光反射幾乎與光線波長無關。所以這樣物體的高光反射通常來講不會帶有物體自身的顏色,後續章節會討論不一樣種類物質之間反射的區別。

BRDF
雙向反射分佈函數(BRDF)是一個描述物體表面反射性質的函數。計算機圖形學中有不少BRDF模型是與實際物理無關。對於一個基於物理的BRDF模型(注:物理合理或者說基於物理的模型,並非物理精確的,而是知足若干項物理性質,能更好進行建模工做的模型),它必須是能量守恆而且是顯式可逆的,可逆性質,也就是光路的可逆性,是指入射光和出射光能夠被認爲是互相能夠代替而且不影響BRDF的值的性質。

Substance shader採用的是迪斯尼提出的基於GGX微平面分佈的反射模型。GGX微平面分佈對高光反射作了一個很是棒的近似,它在高光峯值處有一個很小的尖峯,而且在衰竭時有「長尾」,看起來會很是真實,如圖08.

圖片描述

能量守恆

能量守恆在基於物理的渲染解決方案中扮演着相當重要的做用。它所表達的規律是從物體表面反射或者散射的光的總量老是小於表面接收到的光的總量,或者說被反射出去的光線強度永遠不會有入射光線那麼高。對於藝術家來講,咱們並不須要考慮去控制能量守恆的問題。這是由於能量守恆老是在PBR shader裏被考慮了。能量守恆是基於物理模型的一部分,讓咱們更多的集中注意力在藝術創造而不是物理。

菲涅爾效應

菲涅爾效應在基於物理渲染模型的BRDF中扮演着一個重要的因子。菲涅爾效應得名於觀測到這種現象的法國物理學家讓.奧古斯丁.菲涅爾。它表示的是你看到的反射光線的量與你和視角相關的現象。

一個很好的例子是一池清水,從水池上筆直看下去(也就是與法線成零度角的方向)的話,咱們可以一直看到池底。而若是從接近平行於水面的方向看去的話,水池表面的高光反射會變得很是強以致於你看不到池底。菲涅爾效應和能量守恆同樣是由PBR shader處理的。當從接近平行於表面的視線方向看過去時,全部光滑表面都會變得100%的反射性。

對於粗糙表面來講,在接近平行方向的高光反射也會加強但不夠達到100%的強度.爲什麼如此是由於影響菲涅爾效應的關鍵參數在於每一個微平面的法向量和入射光線的角度,而不是宏觀平面的法向量和入射光線的角度。所以咱們在宏觀層面看到的其實是微平面的菲涅爾效應的一個平均結果。

F0(0度角菲涅爾反射值)

當光線垂直打中物體表面(與法向量成零度角)時,有一部分光被直接反彈回去成爲高光。根據表面折射率(IOR值)咱們能夠推導出這個角度被反射的光的量,咱們稱之爲F0,如圖09.而剩餘被折射進物體的光就被稱做1-F0。

圖片描述

大多數絕緣體的F0範圍在0.02-0.05,導體的F0範圍則可高達0.5-1.0.推導F0的公式如圖10所示。

圖片描述

F0在咱們創造紋理的過程當中起着很重要的做用,非金屬的F0值會是一個灰度值(對全部波長的光同等反射)金屬的F0值則會是一個RGB值。實際應用中咱們能夠說大部分光滑絕緣物體表面的F0在2%-5%而在平視角度反射達到100%(圖09)。

絕緣體的菲涅爾反射值實際上每每變化不大,以致於每每很難觀察到。圖11展現了從非金屬到金屬的F0值的範圍變化。

圖片描述

注意除了寶石以外的大部分絕緣體的F0值相差並不大,後續咱們會討論導體和絕緣體之間的F0差別。

導體和絕緣體
當在創造PBR材質的時候,用金屬和非金屬的方式去思考分類物體是很是有用的。只要簡單的區分物體表面是金屬仍是非金屬,若是是,那麼按照一套規則去製做紋理,反之亦然。這種方面可能會存在例外由於有些物質不能進行簡單的區分,可是在大部分創做材質的狀況下,按照金屬和非金屬進行區別是一種有效的手段。根據PBR理論,咱們能夠推導出金屬和非金屬的屬性,並進一步推導出創造這兩類物質的紋理的準則。

金屬

金屬是熱和電的良導體。一個物理知識:金屬內部的電場強度老是0,所以當外來的電磁波擊中金屬時(好比光線),大部分光線會被反彈而剩餘的則被徹底吸取。所以,對於拋光金屬反射率每每能達到70%到100%。如圖12.

圖片描述

有些金屬對光線波長有着選擇性吸取,例如金會吸取高波長的光線好比藍光所以金看上去呈現黃色。因爲折射的光線都被吸取,所以金屬表面顏色所有來自於反射的光線,因此在製做中咱們不會給金屬賦予漫反射顏色貼圖,例如在specular/gloss(高光/光澤度)工做流中,純金屬的漫反射貼圖爲全黑,反射的高光顏色貼圖則爲金屬表面的顏色。對於金屬來講,反射貼圖包含RGB信息而且可被着色。每每在PBR工做流中,咱們會用實際測量的金屬反射RGB值在反射貼圖中。

另外一個金屬的重要特性是金屬能夠被腐蝕,所以意味着天氣因素在金屬反射狀態中扮演着一個重要的做用,以腐蝕的金屬做爲例子,腐蝕會改變金屬的反射性質,所以被腐蝕區域在製做中會被當作絕緣物質看待(圖13)。

圖片描述

一樣,被塗漆的金屬也會被當作絕緣物質看待。更準確的來講,被腐蝕的金屬也是因爲外層被塗上了一層絕緣物質的塗層(鐵鏽之類)。所以被天氣影響的金屬物質每每是導體和絕緣體的混合。

非金屬

非金屬是電的差導體或者絕緣體,光線在物體內部會同時存在散射和吸取現象(經常在散射後再次彈出物體表面)所以非金屬反射的光的總量大大小於金屬物質,所以非金屬物質會有一張Albedo貼圖來表示其自己的顏色(Albedo:反照率,表示物體反射和漫反射加起來對光線的反射程度),一般的絕緣體的零度角反射值F0只有2%-5%。這個值在PBR製做過程當中的線性範圍是0.017-0.067(40-75 sRGB值),如圖14所示。除了寶石以外的大部分絕緣體不會超過4%。

圖片描述

和金屬同樣,咱們須要去測量各類物質的反射值,然而不透明物體的折射率是很難測量的。好在各個非金屬物質之間的數值差距是不大的,所以咱們能用不多的幾條準則去肯定反射值。

線性空間渲染(線性工做流)
線性空間渲染是一個很是大的話題,咱們不會深刻講解。重要的點在於全部的計算都須要在線性空間發生。

線性空間渲染保證了對於光照的計算的正確性,由於它保證了光線在計算機中的行爲與在天然中的行爲一致。
線性空間也就意味着gamma = 1.0。固然,爲了人眼觀看的正確,線性空間最後會被gamma矯正(人眼對光強度的感覺不是線性的,超過必定亮度範圍以後人眼的亮度感覺會明顯減弱)。gamma空間(sRGB)是圖像最後在電腦屏幕上顯示的空間,gamma空間中的RGB值都被調整過。
當計算顏色值或對顏色進行操做時,全部的操做也必須在線性空間進行。一個簡單的標準就是,若是一張圖須要最後在渲染窗口輸出,好比顏色貼圖,漫反射顏色貼圖,那麼它就必須被設置爲sRGB格式。在substance軟件中若是一個貼圖被標記爲sRGB,它在計算中會被自動轉換爲線性空間(digamma)並在顯示時再轉回來。然而,若是你在貼圖中存儲的是物體表面屬性好比粗糙度之類,那麼這些圖的值必須是線性空間的。

Substance處理了線性空間到sRGB的自動轉換,在viewport輸出的結果會被自動進行gamma矯正。對於藝術家來講,不用擔憂對於線性工做流的集成工做,全部線性空間的轉換工做都在substance的插件中完成了。

固然,理解這個過程的原理是很重要的,當用substance導出bitmap而不是substance material 時,你須要本身手動處理線性空間和sRGB的轉換。你須要知道基本的顏色/漫反射貼圖是sRGB格式剩下的貼圖必須是線性格式。

關鍵因素

如今咱們能夠總結一下PBR的核心思想和關鍵因素:

  1. 能量守恆。反射的光線絕對不會比入射光線亮,這個過程由shader控制

  2. 菲涅爾。BRDF由shader控制,F0反射值對於大多數非金屬的範圍是2%-5%,對於金屬則高達70%-100%。

  3. 高光強度由BRDF控制,受粗糙/高光貼圖和F0反射值影響。

  4. 光照計算必須在線性空間完成,shader中輸入的gamma過的圖好比漫反射貼圖須要被轉成線性空間,在具體操做時須要根據不一樣引擎和渲染器的不一樣作不一樣的操做。而描述物體表面屬性的貼圖如粗糙度,高光圖,金屬貼圖等等必須保證是線性空間。

相關文章
相關標籤/搜索