這幾天太熱,我搜資料的熱情都低了~~是要了親命了,真的。每天到車站簡直是一身汗,還能不能舒爽了!
今天我偷懶一把,我把Allegorithmic官方的中文指南轉給大家,我真的不知道是誰翻譯的,我也想發到手機上方便大家和我這種上班狗查看學習,所以謝謝翻譯的人士。今天先發第一部分,回頭我再發第二部分。我建議大家看完,看完后邊還有福利。
目錄
1.光線
2.吸收與散射(透明與半透明)
3.漫反射與鏡面反射
4.微面元理論
5.顏色
6.雙向反射分布函數
7.能量守恒
8.菲涅耳效應
9.角度為0° 處的菲涅耳反射率
10.導體與絕緣體(金屬與非金屬)
11.金屬
12.非金屬
13.線性空間渲染
14.關鍵點
15.參考文獻
1.光與物質:基于物理的渲染與著色理論
光與物質:基于物理的渲染與著色理論
光是一種復雜的現象,它同時展現出波與粒子兩種特性。于是,為了描述光的表現特性,人們建立了各種模型。
作為材質藝術家,我們感興趣的是光線模型(Light Ray Model)因為它描述了光與物質的交互作用。
對我們來說,理解光線如何與物質表面交互非常重要,因為我們的工作是創作描述物體表面的材質。
我們創作出的紋理與材質在虛擬世界中與光交互,對光線表現特效理解的越多,創作出的材質就會更好。
在這篇指南中,我們會討論物理理論,而基于物理的渲染(physically-based rendering)(PBR)模型正是建立在其上的。
我們從光線開始,逐步講解到PBR中的關鍵點。
2.光線
光線模型闡明,光線在均勻透明介質(如空氣)中的軌跡為直線。光線模型同時也闡明,當光傳播遇到表面時,例如遇到不透明物體或穿過不同介質如從空氣折射入水中,光的表現是可預測的。這樣,當光從一個起點傳播到某點最終轉換為其他形式例如熱時,我們可以將它的軌跡視覺化。
擊中一個表面的光線稱為入射光,而它擊中的角度稱為入射角,如圖所示。一條光線射入兩個不同介質間的平面交界面。
當光線擊中一個表面時,以下的兩件事情至少會發生一件,或同時發生:
1.光線在該表面上反射,并沿另一個方向傳播。它遵從反射定律,即反射角等于入射角(反射光)。
2.光線沿直線軌跡從一個介質傳播到另一個介質中(折射光)。
此時,我們可以說,光線分成了兩個方向:反射與折射。在該表面上,光線被反射或折射并最終由兩種介質之一所吸收。然而,吸收并不發生在該表面處。
3.吸收與散射(透明與半透明)
在不均勻的介質或半透明材質中傳播時,光會被吸收或散射:
1.吸收,隨著光轉化為其他形式的能量(通常轉化為熱能)光的強度衰減,并且依據不同波長的光被吸收的總量,光的顏色也發生改變,但光線的方向不變。
2.散射,光線的方向隨機變化,偏移量依材質而定。散射會隨機改變光的方向但光的強度不變。耳朵是一個很好的例子。耳朵很薄(光線吸收較少),于是你可以觀察到散射后的光線從耳朵背面貫穿而出。如果不發生散射并且吸收較少,光線可以直接穿過該表面如玻璃。舉個例子,當你在泳池游泳時,池水足夠干凈,你可以睜開雙眼并且在清澈的水中看到很遠的距離。然而,該泳池有一段時間沒有清理,池水變臟時,水中的灰塵粒子將會散射光線并因此使得水的清晰度降到很低。
光在這樣的介質/材質中傳播的越遠,被吸收以及/或者散射的就越多。因此,物體厚度在決定光被吸收或散射的多少上起很大作用。可以在shader(著色器)中使用一張厚度貼圖來描述物體厚度,如圖。
物體厚度在決定光被吸收或散射的多少上起很大作用
4.漫反射與鏡面反射
鏡面反射是直接從表面反射的光,正如我們在前面光線部分中討論過的。光線從該表面反射并沿另一方向傳播。它遵從反射定律,即在理想平面上反射角等于入射角。然而,重要的是,大部分表面并不規則,并且因此反射方向會依據表面的粗糙度隨機變化。這一現象會改變光的方向,但光的強度保持不變。
粗糙表面會呈現更大更暗的高光。光滑表面會保持鏡面反射聚焦程度,因而當從合適角度觀察時,表面會顯得更明亮或光強度更高。然而,在這兩種情況中反射光的總量相同,見圖
粗糙表面會呈現更大更暗的高光
漫反射是經過折射后的光。光線穿過一個介質到另一個介質并在物體內部散射許多次。隨后它再次被折射出該物體,返回到原先的介質中,而二次折射的位置與首次折射近似在同一個點,如圖。
漫反射材質吸收性非常強,這意味著當折射光在該材質內部傳播的足夠遠時,它很有可能被完全吸收。這表明當光線能夠從該材質中再次折射出來時,它可能并沒有離開入口點傳播很遠。這正是入口點與出口點間的距離可以被忽略不計的原因。
Lambertian(朗伯特)模型,即在傳統的著色觀念中經常使用的漫反射模型,并不將表面粗糙度考慮在內,但存在一些漫反射模型將它考慮在內,例如Oren-Nayar模型。同時具有高散射以及低吸收的材質有時被稱作“參與介質”或“半透明材質”。例如煙、牛奶、皮膚、翡翠以及大理石。
渲染后三種材質也許可以通過附加次表面散射模型來實現,在次表面散射模型中,光線入口點和出口點之間的差異不再被忽略。精確渲染一些變化劇烈,并且散射和吸收都很低的介質,如煙或霧,需要一些資源開銷更大的算法例如蒙特卡羅(Monte Carlo)模擬。
5.微面元理論 Microfacet Theory
理論上,漫反射和鏡面反射都依賴于光線相交處表面不規則的程度。雖然在實際中,粗糙度對于漫反射的影響更不可見,因為散射發生在材質內部。結果是,二次散射出的光線方向相當的獨立于與表面粗糙度以及入射角度。最常用的漫反射模型(Lambertian)完全將其忽略不計。
在這篇文檔中,我們將表面不規則度(surface irregularities)稱作表面粗糙度(surface roughness)。實際上,根據所使用PBR工作流程的不同,它常常被以各種名字代稱,例如粗糙度(roughness),光滑度(smoothness),光澤度(glossiness)或者微表面(microsurface),但是他們描述的是表面的同一個性質,即子紋理塊幾何細節。
這種表面不規則度,根據你所使用的工作流程,由粗糙度或光澤度貼圖來創建。一個基于物理的BRDF(雙向反射分布函數)建立在微面元理論至上,即假設一個表面,由更具細節的、方向變化的、小尺寸的平面表面組成,這些小平面稱作微表面。每一個小平面沿著一個方向反射光線,這個方向基于該小平面的法線方向,如圖。
表面法線恰好與光線方向和視角方向的半角向量相同的微表面會反射可見光。然而,并不是所有的微表面法線方向與半角向量相等處的微表面都會參與貢獻亮度,因為一些光線會被陰影遮擋(光線方向)或被幾何體遮蔽(視角方向),如圖所示。微觀層次的表面不規則度導致了光的漫反射。例如,模糊的反射是由光線散射造成的。光線并非平行反射,因
此我們觀察到的鏡面反射如圖06中所示是模糊的。
微觀層次的表面不規則度導致了光的漫反射
6.顏色
表面的顏色(即是說我們看到的顏色)由光源發射出的光波長、物體吸收的
光波長以及其他被反射(鏡面反射和漫反射)的光波長共同決定。最終得到的反射波長轉換為我們看到的顏色。例如,蘋果的外皮主要反射紅光。只有紅色波長的光被散射回到蘋果外皮外側,其他的光被其吸收了,如圖所示
Substance PBR shader使用 GGX 微面分布
蘋果也具有明亮的高光,高光顏色與光源相同,因為類似于蘋果外皮這樣的材質是非導體(絕緣體),鏡面反射幾乎與波長無關。因此,對于這種材質,鏡面反射不會被上色。在隨后的章節中,我們將會討論更多不同類型材質(金屬和絕緣體)。
7.雙向反射分布函數BRDF
雙向反射分布函數(Bidirectional ReflectanceDistribution Function)(BRDF)簡單來說是一個函數,描述一個表面的反射率屬性。在計算機圖形學中,
有各種不同的BRDF模型,其中一些在物理上并不真實可信。對于在物理上真實可信的BRDF模型,它必須能量守恒并且表現出互易率。
關于互易律,這里指的是Helmholtz互易原理,其中闡述了入射和出射光線可以被考慮為互相的逆轉,而不影響BRDF的結果。Substance PBR shader 中使用的BRDF模型基于迪士尼原則的反射率模型,而該模型基于GGX微面分布。GGX在鏡面反射分布方面提供了一種更好的解決方案,它在高光處的峰值更短,并且在衰減時具有更長的拖尾,即是說它看起來更加真實,如圖。
GGX在鏡面反射分布方面提供了一種更好的解決方案
8.能量守恒
在基于物理的渲染中,能量守恒在其中起關鍵作用。它闡述了一個表面重新發射出的光(反射以及散射)的總量小于它接收到的光的總量。換言之,從表面反射出的光,永遠不會比先前擊中該表面的光強度更高。作為藝術家,我們不
需要考慮如何去控制能量守恒。這是PBR一個非常好的方面,即能量守恒總是由shader所實現。它是基于物理的模型的一部分,并且它能夠讓我們更多的將注意力集中于藝術而不是物理上
9.菲涅耳效應
作為BRDF的一個系數,菲涅耳反射因素也在基于物理的渲染中起到關鍵作用。菲涅耳現象由法國物理學家奧古斯丁· 簡· 菲涅耳發現,其中闡述了從一個表面上觀察到的反射光的總量,與觀察該表面的視角相關。
例如,設想一個水池。如果垂直向下看,視線與水面垂直,你可以看到水底。以這種方式觀察水面即是從零度視角觀察,或者說是垂直入射,視角向量即是表面法線向量。隨后,如果你沿著切線入射方向觀察水池,視線更加平行于水面,你在水面上觀察到的鏡面反射強度會變得更高,并且你也許會無法觀察到水面以下的情況。
與傳統的著色流程不同,菲涅耳效應并不是我們在PBR中需要控制的因素。同樣,它是由PBR shader為我們控制的另一種物理層面。當從切線角度觀察表面時,所有平滑表面會變為近似于90度入射角時的100%反射面。對于粗糙表面,反射率會持續向鏡面反射增加,但不會達到100%的鏡面反射。
此時值得關注的就是每個微面的法線與光線方向的夾角,而不是宏觀面的法線與光線方向的夾角。因為光線被分散到各個方向,反射因而變得更加柔軟更昏暗。而最終在宏觀層面得到的結果則較為類似于所有微面的菲涅耳效應的平均值。
對于粗糙表面,反射率會持續向鏡面反射增加,但不會達到100%的鏡面反射
10.F0 (角度為0時的菲涅耳反射率)
當光直接垂直擊中一個表面(在角度為0處),有一部分比例的光被鏡面反射。使用一個表面的折射率(Index ofRefraction)(IOR),你可以推導出反射回去的光的總量,即為圖09中的F0(菲涅耳0)。而折射入表面光的總量則由1-F0表示.
對于大多數絕緣體,F0的范圍在0.02-0.05之間,而導體的F0則在0.5-1.0之間。因此,一個表面的反射率由其折射率決定,如圖中公式所示,該公式出自Sebastien Lagarde名為“Feedinga Physically-based Shading Model”的博客。
F0反射率是我們在創作紋理時所關心的內容。非金屬(電介質/緣體)有一個灰度值而金屬(導體)則會有一個彩色值。至于有關PBR,并且從藝術的角度解釋反射率,我們可以說對于普通光滑的絕緣體表面,F0會反射2%到5%之間的光量,并在切線角度反射100%,如圖所示。
絕緣體(非金屬)的反射率實際上并不發生激烈的變化。事實上,當由粗糙度來決定其變化時,數值的實際變化是很難看出的。然而,該數值在不同材質之間有一些區別。如圖,你可以看到一張圖表,展示了金屬與非金屬的F0值。
注意,非金屬的F0數值互相之間的區別并不大。寶石是一個例外,它有更高的數值。我們將在隨后討論F0與導體和絕緣體之間特定的相關關系。
11.導體與絕緣體(金屬與非金屬)
當為PBR創建材質時,我發現從金屬與非金屬的角度去思考問題非常有幫助。我簡單的問自己,該表面是否為金屬材質。如果它是,我就遵從一套指導方針,而如果它不是,我會遵從另一套。這是一套相當簡單的實現方式,而一些材質可能無法放入這兩個分類當中,例如準金屬,但是在一切創建材質的工作過程中,在金屬與非金屬之間討論問題,是一個很好的方式,把準金屬作為一個例外。為了設定創建材質的指導方針,我們首先必須理解我們想要創建的是什么。在PBR中,可以通過金屬(導體)和非金屬(絕緣體)這一屬性特征來得出我們的指導方針。
折射光被吸收,金屬的色相由其反射光決定,因此在貼圖中,我們不會給金屬賦予漫反射顏色.
金屬
金屬(導體)具有很好的導熱和導電性。簡單來說,導體金屬中的電場為零,當由電場和磁場組成的入射光波擊中表面時,它發生部分的反射,而所有折射光都被吸收。對于拋光金屬,其反射率值處在一個很高的范圍,70-100%之間,如圖所示
一些金屬吸收不同波長的光。例如,金吸收位于可見光光譜高頻一端的藍光,因而它最終展現出黃色。然而,由于折射光被吸收,金屬的色相由其反射光決定,因此在貼圖中,我們不會給金屬賦予漫反射顏色,例如,在鏡面反射/光澤度工作流程中,原始金屬在漫反射貼圖中為黑色,而反射率值在反射貼圖中被賦予有色彩的顏色值。對于金屬,反射率值會是RGB值并且可以具有色彩。因為我們在基于物理的模型中工作,我們需要使用真實世界中的測量值來繪制金屬反射率貼圖。
金屬在貼圖方面的另一個重要層面在于,金屬會腐蝕。這意味著在金屬的反射狀態中,天氣元素會占很重要的地位。例如金屬生銹,它會改變金屬的反射狀態,而被腐蝕的區域會作為絕緣體材質來處理,如圖。
在金屬的反射狀態中,天氣元素占很重要的地位
我在前面提到過,我總是問自己一個材質是否為金屬。然而,想要更精確一些,該問題應該也包括關于金屬的狀態,例如它是否有涂料,生銹或被泥土/油脂等覆蓋。如果不是原始金屬,材質會作為絕緣體來處理,并且會依據天氣在金屬和非金屬兩種材質間進行混合。
12.非金屬
非金屬(絕緣體/電介質)導電性很弱。折射光被散射以及/或吸收(常常再次從表面中顯現出來),因此它們比起金屬反射光的總量較少,并且我們會有反照率(albedo)顏色。我們在前面講到過,對于通常的絕緣體反射率會在2-5%之間,基于從折射率中計算出的F0值得到。這些值在線性空間內的范圍是0.017-0.067(sRGB中為40-75)如圖14所示。除了寶石是例外,大多數絕緣體的數值不會超過4%
與金屬相同,我們需要使用真實世界中的測量值,但是想要獲得不透明材質的折射率存在困難。然而,在大多數常見的絕緣體材質中,該數值并不會劇烈變化,因此我們在反射率值方面可以遵從一些指導方針,這些我們會在第二卷講到。
對于通常的絕緣體反射率會在2-5%之間,基于從折射率中計算出的F0值得到
13.線性空間渲染
線性空間渲染本身就可以占用一整篇文章來描述。因此,我們不會很深入的講這個問題。關鍵最需要知道的,就是計算發生在線性空間內。
簡單來說,線性空間渲染為光線提供了正確的數學計算。它會建立一個環境,在其中光能夠與其在真實世界中有同樣的表現。在線性空間中,gamma值為1.0。然而,為了能夠使它在人眼中看起來正確,線性gamma需要經過轉換。經
過gamma校正的空間(sRGB)能夠為顯示器顯示圖像提供補償。為了正確的顯示,圖像的數值經過了校正。
在計算顏色值以及對顏色值進行操作時,所有的計算都應該在線性空間中進行。一個簡單的理解方式是,如果圖像在渲染中會作為固有色或漫反射顯示,那么貼圖需要被設置為sRGB。在Substance中發生的是,如果一個圖像被標記為sRGB,為了進行計算,它會被轉換為線性空間,隨后在顯示時再次轉換為sRGB。然而,當在貼圖中存儲表示表面屬性的純數學值時,例如粗糙度(Roughness)貼圖或金屬性(metallic)貼圖,這些貼圖必須被設置為線性空間。
Substance為輸入自動處理線性/sRGB之間的轉換,為渲染視口的顯示計算gamma校正結果。作為藝術家,在Substance工作流程中你不需要考慮其內部的線性空間計算及其轉換。而當通過Substance集成插件使用Substance材質時,對于線性空間的轉換也是自動處理的。
然而,理解其中的處理過程非常重要,因為當Substance貼圖被導出作為位圖(bitmap)使用,而非作為Substance材質使用時,根據所使用的渲染器,你也許會需要手動處理這些轉換。需要了解的是,固有色/漫反射貼圖是sRGB而其余則是線性的。
當通過Substance集成插件使用Substance材質時,對于線性空間的轉換也是自動處理的
14.關鍵點
現在我們已經了解了基于物理的基本原理,這里總結一些PBR的關鍵點
1. 能量守恒。反射光線永遠不會比先前擊中該表面的光強度更高。能量守恒由shader負責處理。
2. 菲涅耳效應。BRDF由shader負責處理。F0反射率值變化較小,對于大多說常見的絕緣體來說在2%-5%之間。而金屬的F0值較高,處于70%-100%之間。
3. 鏡面反射強度由BRDF、粗糙度或光澤度貼圖、以及F0反射率值共同控制。
4. 光照計算發生在線性空間中。所有內置gamma校正值例如固有色或漫反射顏色的貼圖通常由shader轉換為線性,但是在使用游戲引擎或渲染器時,導入貼圖的時候你需要勾選合適的選項,檢查轉換是否被正確的完成。描述表面屬性的貼圖,如粗糙度,光澤度,金屬度以及高度需要設置為轉換為線性
15.參考文獻
1. Physically-Based Shading at Disney Brent Burley, Walt Disney Animation Studios.
https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf
2. Microfacet Models for Refraction through Rough Surfaces
http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf
3. Feeding a Physically-Based Shading Model by Sebastien Lagarde
http://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-mode/
4. An Introduction to BRDF Models by Dani?l Jimenez Kwast
http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf
For more information on Substance, please visit our website at
www.allegorithmic.com
好了福利來了:
英文原版pdf:
鏈接:http://pan.baidu.com/s/1kUWXzoV 密碼:pim5
中文版pdf:
鏈接:http://pan.baidu.com/s/1jH5Vetg 密碼:e8uf