基於物理渲染的基礎理論

本篇做爲理論的歸納介紹,並不涉及公式的部分
 
基於物理渲染的優勢
很容易就能夠做出真實和照片級的效果。
同一配置能夠適用於 在不一樣HDR光照環境下。
接口簡單而直觀,都是基於世界真實的參數。(如粗糙度,金屬度,等等)。
不須要美術去提供經驗性的"奇怪"參數和配置。
更容易去解決問題和擴展需求。
 
基於物理的渲染和傳統渲染區別
有着基於物理規則的光照模式
有着無處不在的fresnel效果
能量守恆「 energy conservation 」,物體平面的反射光沒法超過它所解接受的入射光
基於物理的材質,會分辨金屬和介電質,微平面的概念
線性空間的光照 ,支持gamma矯正的,HDR渲染和tonemap
 
光與物質的交互(light and matter)
光是是一種橫向傳播的電磁波,電磁波的波長範圍很是廣,但只有390~760nm之間的一段波譜是人眼可見到的,也就是在圖形學裏對渲染着色起做用的部分。另外由於光有波粒二象性的緣故,有時候咱們在圖形學裏也會把光作爲光子 (photon) 來處理。
 
當光投射到傳感器(眼睛,照相機等) 上時 ,顏色和亮度就會被吸取並感知,而光與物質交互後被感知的,就是物體的顏色。
 
物質對光的影響,能夠用折射率(refractive index )來描述,當由複數來表示折射率時,它的實部影響速度(相對於真空中的速度 ),虛部來影響光的衰減(被吸取),折射率會改變光的波長。
 
咱們先根據物質按照內部折射率是否均勻來進行分類:
 
均勻介質(Homogeneous Media)
內部密度相同的物質 ,意味着他有惟一的折射率,對應透明的均勻物質來說(如水,玻璃),光經過時,並不會改版光的顏色或強度,而當物質對某一種可見光譜有吸取率的時候,那麼,光就會隨着在物質內的傳播距離而逐漸被吸取,而光的方向並不發生改變,這就是光被吸取(absorption )。

光穿透玻璃和水時,方向,顏色和強度都不會發生
 
方向沒有變化,光但隨着距離會喪失強度(改版顏色),也就是光被吸取了。
 
非均勻物質(heterogeneous medium
非均勻物質 內部的折射率很是忽然的時候,這時就會發生散射 (Scattering) 現象,光會被分割爲多個方向,但光的總量並不會發生變化。
 
 
除了以上兩種交互外,   物質還可能由於其餘能量發出新的光,稱爲自發光」 emission 「。
 
光與物質交互的三種方式,吸取,散射,發光。
 
光與平面的交互(light and object surface)
上一個段落講點,光在密度不一樣的物質內傳遞的現象,而渲染中最爲典型的,是發生在物體表面時,關於光與空氣和物質之間的散射效果。
這個時候平面散射光會分爲兩部分:進入平面的部分(折射,在物體內部傳播中被吸取或散射),從平面出去的部分(反射)。
 
一個假設完美無限光學平坦的平面(簡稱光學平面)反射效果,平面兩側的空氣和物體有各自的折射率
 
但實際上,平面大多都不是光學平面(除了鏡子或鏡頭等),而是一種微幾何體( Microgeometry ),表面都會有一些比可見光波長要大的不規則凹凸,但又小到沒法覆蓋一個像素或者採樣點,因此,咱們就把這種非光學平面,理解爲一組微小光學平面的集合,而可見光的反射,其實是在平面各個點上輕微不一樣方向的反射集合,也就是後面會提到的微平面理論(Microsurface Theory )。
 
roughness
上面的平面相對平滑時,表面方向的變化也比較輕微,從而反射光的方向變化也較小,有了較清晰的反射。而下面的表面粗糙,表面方向的變化範圍也較普遍,反射光的方向變化也比較大,出現了模糊的反射。
 
兩個平面在微觀上的粗糙度(roughness)不一樣致使不一樣的反射效果
 
漫反射光與鏡面光(diffuse and specular)
這裏,咱們光和平面交互分爲兩個項目來描述,從平面直接反射 的部分稱爲鏡面反射光( Specular ),來源於拉丁語的「Mirror」,PS:鏡面光的顏色,一般就是燈光的顏色,只有照射在金屬上纔會改變顏色(實際是金屬吸取了特定波長的光),傳入到物體內部,而通過折射,被材質吸取(轉變爲熱能),或者內部進行散射,一些散射光最終會從新返回從平面折射出來 ,並被攝像機或眼睛所捕捉到,稱爲漫反射光(Diffuse)。漫反射光被物質吸取並散射後,會成爲不一樣波長的光,這也就給予了物體顏色,好比物體吸取了藍色之外的光,那物體就是藍色的,而由於散射的混亂比較均勻,從每一個方向看起來都是同樣,因此這點和鏡面光不同。也可使用這個名字albedo來描述。
 
非光學平面反射 Surface Reflectance 和折射散射 Subsurface  Reflectance 的宏觀視圖,造成了Diffuse和Specular。
 
金屬和非金屬材質

物體內部的折射光的做用,取決於物體內部的組成,內部組成的不一樣,能夠分爲,金屬(metal)導體,電介質(Dielectrics)絕緣體和半導體(Semiconductors ),由於半導體在渲染中出現的機會很少,在處理物體時簡單的分組爲金屬和非金屬就能夠了。金屬會吸取全部的折射光,並且一般會被絕緣體的反射率要高,一般的反射率要達到60%~90%,而絕緣體則是0%~20%,反射率高,就防止了入射光被吸或折射,這樣,金屬就有了」閃亮「的外觀。php

 
金屬的折射光能量都馬上被自由電子吸取
 
而非金屬(絕緣體),光會在內部進行吸取和散射活動,最後,一些折射光會經過散射,從新從入射平面反方向射出
非金屬的折射光會進行散射
 
導體的反射會跨越光譜,因此反射是有顏色的,雖然顏色反射在導體裏比較罕見的,但在一些平常的材質裏(金,銅,黃銅)仍是能夠看到這種效果,而絕緣體的反射一般是他們的原本顏色,由於金屬會吸取全部的穿透光,也就沒有任何漫反射(diffuse)部分,但金屬氧化的部分和一些表面殘留物仍是會散射少許的光。也是由於這些緣由,可使用「metalness」(金屬度)這種參數,雖然不是純粹的pbr,但更受美術的喜歡。
 
不一樣材質的漫反射顏色,金屬爲0.
 
次級表面散射(Subsurface Scattering)
從前面的圖中,能夠看到折射後的散射光從平面不一樣的點發射出來,和原始的入射點的距離也各不相同,能夠統稱爲次級表面散射光,根據散射出的距離和入射點像素的大小的關係,能夠分爲兩種狀況:
如左圖所示,當像素的尺寸大於入射到出射點的距離時,這個距離就能夠被忽略,能夠認爲這個平面散射出的光和入射光是在相同點上,也就是右圖的樣子,也就是咱們常說的漫反射。
 
當像素小於出射到入射距離時,每一個點的着色就會收到其餘光入射到其餘點的影響,也就是常說的「次級表面散射」技術,很重要的一點是,它和普通的漫反射着色是一種物理現象(都是折射光的次級表面散射),惟一不一樣的就是散射的距離與觀察點大小的關係,一個一般被認爲是「次級表面散射」的表現,當在較遠的距離觀察時,就能夠被認爲是漫反射着色(例如遠距離角色的皮膚),而「正規的漫反射着色」在很近距離觀察時,也會有次級表面散射的效果。
 
無處不在的Fresnel反射
Fresnel表現的是材質的反射率 和入射角(也就是光源入射向量和平面法線向量的夾角 )的對應關係,也就是說,入射光的角度越大,反射率也會越強,Fresnel反射項一般成爲F( )
 

以水面爲例,正常入射事只有3%的反射,而水平時則幾乎到100%。
 
PBR的一個改變,就是對 fresnel方程的修正上。這個會在下一篇有公式的章節作進一步解釋
對於因此的材質來講,當以掠射角觀察時,光滑物體接近「邊緣」的地方,會造成完美的鏡面,也就是說 特定的角度上, 「任何表面光滑的物質均可以成爲完美鏡面」。
除了金屬外,大部分的材質的反射和角度對應曲線或梯度的變化都不是很大
 
非金屬的反射係數,在邊緣處亮度更高
 
當入射角度爲0時,非金屬材質(2%~8%),水和液體是2%,磚塊8%,其餘有機材質和塑料是5%,半導體和晶體是15%~50% 金屬60%~90%
 
若是要達到真實的 fresnel,那麼美術對 fresnel的控制應該越少越好,須要提供一些參數值來使用,一般是光澤度(Gloss,或粗糙度 Roughness)和反射率。提供一個基礎反射率,來設置平面最小的反射值,讓 fresnel曲線從這個最小反射值開始,以知足不一樣角度的需求。
Surface Reflectance
前文已經提到了微幾何體,之因此有微平面的概念,由於從宏觀來看,在咱們渲染模型網格時,使用法線貼圖就能夠描述表面小的細節,但這樣仍然會有必定的缺失,不少真實世界的平面上,仍是有一些微小的凹陷,裂縫或突起,而用肉眼是很難看清楚的,小到連正常大小的法線貼圖也沒法來表現,雖然肉眼沒法看到,但這些微觀特徵,仍是對Diffuse和Specular產生了影響。
 
微平面的細節,對反射的影響更多,也就是Specular,由於粗糙的微平面會把反射光分散或者內部遮擋,因此有了下面兩個項目來描述這個現象
 
Normal Distribution Function
  由於微幾何體的因此平面的方向,並非均勻分佈的,若是是分佈比較均勻的光滑平面,那麼光就會在幾乎相同的方向反射,產生清晰的高光,若是粗糙表面則是模糊的高光.  有多少微平面點的法線更傾向宏觀平面的法線方向,咱們把這種平面法線方向分佈的統計,稱之爲microgeometry normal distribution function D() ,和fresenl方程不一樣的是,D()並無一個相似0~1的範圍,而是來幫助肯定微平面法線在某一個給定方向上的集中度。
 
  因此,D()決定了高光的鏡面反射高光的大小,亮度和形狀,一些D()會提供前面提到的相似"Roughness (粗糙度) "的參數(也能夠是 glossiness ),當粗糙度下降時,微幾何體平面的法線方向就會更集中在宏觀的平面法線方向上, D() 的值也會變高。除了指定粗糙度參數外,也能夠經過傳遞一張 Glossn map的方式提供更高的細節。
不一樣 Roughness的表現

左側Specular Map ,右側 gloss map
 
Geometry Function  
由於微幾何體的構造緣故,一些入射光的平面點被內部遮擋,成爲了內部陰影而沒法接受光照(也就不能反射光)。
  
shadowing現象
而有一些反射光被內部遮擋,他們的反射光沒法被觀察到,雖然有反射光能夠屢次反彈後再被視點觀察到,但在微平面理論裏能夠忽略不計了。
  
masking現象
 
這由於有這種現象,因此須要有一個 Geometry Function  G(), 來表明反射光的 可見度, 因此G()是在0~1之間的一個範圍值,在着色模型裏,有時會和其餘參數合併稱爲 V() (Visiblity)。和D()同樣,由於微平面有凹凸感,當它的粗糙度提升時,shadow和masking的現象也會增長,粗糙度高的平面會光滑平面更陰暗一些, G() 也要收到roughness參數的影響 另外G()也是下面要講的能量守恆的一個基礎,它使得反射光不會高於平面的入射光。
 
Energy Conservation 能量守恆
鏡面反射光(Specular)與漫反射光(Diffuse)是相互排斥的,由於離開表面的光總量不能他接受的入射光強,你的漫反射與鏡面反射綜合不能超過1

這意味着,若是你的但願材質有較高的鏡面反射效果(高反射率),就須要要去下降漫反射,能量守恆是PBR的一個重要的方法,可讓藝術家在設置反射率和反照率時(高光顏色和漫反射顏色)不會違法物理定律
同一個材質,從100%的漫反射到100%的鏡面反射轉化過程
 
能量守恆對高光部分的處理,也稱爲「Energy Preserving Specular」,一般是在渲染方程裏添加Normalization Factor來實現的能力守恆
是否使用 Normalization Factor的對比,左下面使用Factor的亮度更淡了一些,由於左上非能力守恆的模型反射了更多的光,而下面能力守恆的模型,高光變得更加明亮和集中。
 
當把微平面理論引入到着色系統後,那麼反射多少光,就要受到平面粗糙度的影響,渲染粗糙度較大的表面時,會得到較大範圍和模糊的反射光,而光滑表面的則更清晰。雖然材質都反射相同總量的光,但粗糙平面的會把把反射分散到不一樣的方向,而光滑平面則反射的更爲集中。好比你高光半徑提升了10倍,那麼暗度將提升100倍。
pbr_theory_micro_cons.png
Gloss的變化的反射效果, Normal Distribution Function(D() 也必須是能量守恆所的。

實際應用上漫反射較多並且粗糙的材質,會反射模糊和更廣闊的高光,比較光滑而反射率高的材質則反射更明亮和緊湊的高光
 
理論概述就先到這裏,本文也是從不少資料中整理而來,不能算是原創吧,資料太多,可能收集和描述的不夠全面,隨着後面章節的添加,這個部分應該還會作進一步的修改。
相關文章
相關標籤/搜索