PBR的定義和工具
基於物理的渲染過程(Physically-Based Rendering,簡稱PBR),是指使用真實的渲染/光照模型以及測量得到的表面值來準確地表示真實世界中的材質。簡單來說,PBR是一種用於更精確的描述光如何與物體表面互動的著色和渲染技術。
PBR的優勢
(1)方法論和算法基於精確的計算公式,免除創作表面的猜想過程。次世代製作流程及部分工具
Part II. 基礎理論
漫反射和反射 Diffusion &Reflection漫反射或反照率(diffuse&albedo)指光線被物體吸收後,再散射出來的那一部分光線。漫反射就是diffuse,可以理解為固有色。反射(reflection)指被物體直接反彈的那一部分光線。
反照率(albedo)和diffuse(固有色,漫反射顏色)有時候是同義詞。
下圖分別描述了「Diffuse Light」, 「Diffusion」, 「Subsurface Scattering」(次表面散射,SSS)。
吸收和散射出來的光,就是漫射光,這些光線定義了物體的顏色。例如:一個物體吸收了大部分的光,但是散射出藍光,那麼這個物體的顏色就是藍的。
散射光往往是很均勻的混亂,它可以說是從各個方向出現相同或者平均的,跟鏡面反射(specular) 是完全不同的。在著色器中,我們定義漫射光只需要一個輸入值:反照率(albedo),描述物體的顏色,就是吸收了其它色光後散射出物體表面的光的那一部分。
反照率(albedo)和diffuse(固有色,漫反射顏色)有時候是同義詞。
能量守恆
漫反射和反射保持能量守恆,總光量不變。漫反射越強,反射光越弱;反之,反射光越強,漫反射越弱。比如一個全反射鏡面,它幾乎沒有漫反射(固有色為0或1)。
在反射率不變的情況下,Gloss(光澤度)越高,反射越清晰,光線越匯聚(小的高光點);反之,反射越模糊,光線越發散(發散的高光點)。但光量維持能量守恆,總量不變。
作為美術,我們沒有必要擔心如何控制能量守恆。這是基於物理渲染的最好的一個方面,能量守恆通過著色器(shader)來強制保證。它是基於物理模型的一部分,這樣我們就可以花更多的時間在如何製作出好的效果上而不是關注於物理實現上。
Reflection(反射)和diffusion(漫射)是相互排斥,能量守恆(總量不變)的。
漫反射(diffuse)著色前,必須要先減去反射光(reflection),這意味著高反射的物體(金屬,鏡面)將顯示為幾乎沒有漫射光,僅僅是因為幾乎沒有光線穿透表面然後被散射出來。反過來也是如此:如果一個物體擁有明亮的漫反射光,它不會產生很強的高光和反射。
如下圖所示:隨著reflection反射的提高,物體表面的漫反射效果越來越弱,呈現的現象就是灰色的球體越來越暗。
能量守恆是PBR著色技術的重要特性,它可以避免數字藝術家,在處理反射值(reflectivity)和漫射值(albedo)的工作上,不小心去違反和歪曲物理規律(大部分情況下都是糟糕的,除非是故意製作出反真實的藝術效果),比如讓高反射的物體擁有很明亮的顏色,產生糟糕的曝光過度;或者讓一片布料產生強烈的高光反射。
菲涅爾 Fresnel
菲涅爾指在不同的觀察角度下,看到的不同反射率。
菲涅爾屬性在模型切線角度,如果物體是完全光澤的話,呈現鏡面反射,不管是非金屬還是金屬。
菲涅爾屬性一般是自動計算的,不需要手工調節,在PBR shading系統中,在處理菲涅爾參數時幾乎是完全自動的; 它取決一些其他預先設置的材料性能,如光澤度和反射率。
微表面 Microsurface
微表面對反射有強烈的影響,微表面用「光澤」Gloss,「光滑」Glossness或「粗糙度」Roughness來表示。
所有的PBR技術都基於微平面理論。這項理論認為,達到微觀尺度之後任何平面都可以用被稱為微平面(Microfacets)的細小鏡面來進行描繪。根據平面粗糙程度的不同,這些細小鏡面的取向排列可以相當不一致:
一個平面越是粗糙,這個平面上的微平面的排列就越混亂。這些微小鏡面這樣無序取向排列的影響就是,當我們特指鏡面光/鏡面反射時,入射光線更趨向於向完全不同的方向發散(Scatter)開來,進而產生出分布範圍更廣泛的鏡面反射。而與之相反的是,對於一個光滑的平面,光線大體上會更趨向於向同一個方向反射,造成更小更銳利的反射:
表面微細節對反射有非常大的影響(次表面散射SSS則沒有大的影響,並且將不進一步討論)。表面變得越粗糙,反射光就會越發散或出現「模糊」。
不幸的是,如果在三維模型上實現真實的表面微細節,那幾乎是不可能,也不效率的。那麼,我們該怎麼辦?事實證明,我們可以編寫產生類似結果的準確的著色器來模擬這一效果。這就是通常被稱為「光澤」Gloss,「光滑」Glossness或「粗糙度」Roughness的東西, 它可以作為一張紋理貼圖來賦予材質。
不同金屬的表現示例
反射高光,在粗糙表面顯得更發散和暗淡,相反,在光滑表面則顯得更小,更清晰明亮!
金屬 Metals
物質可以被分為金屬(導體)或非金屬(絕緣體),金屬比非金屬的基本反射率要高,但是金屬和金屬之間它們的反射率趨於相等,同樣,各種非金屬物質的反射率也趨於相等。
折射光線被吸收,金屬的顏色來自於反射的光線,因此在我們的貼圖中,金屬沒有漫反射顏色。(鏡面反射(Specular)工作流)。
金屬工作流
Base color:(RGB-sRGB)
包含信息:絕緣體,反射顏色。金屬,反射率。最亮色不應超越240RGB。最暗色應在30-50RBG之間。
Base color不要包含其他光照信息,比如 amblient occlusion。
金屬反射率應該在70%-100%之間。也就是RGB 180-255,油漆和氧化的部分應該按照絕緣體處理。
Matallic map:(Grayscale-Linear)
Roughness map:(Grayscale-Linear)
Specular工作流
為何鏡面反射工作流容易出錯呢,因為Specular包含了全部的絕緣體F0信息,1.0的Diffuse和 1.0的Specular將會使得反射折射能量大於輸入能量,這違背了能量守恆定律。也就是說在繪製貼圖時,你無法預覽結果。
Diffuse:(RGB-sRGB)
包含albedo color,但是不包含任何反射率信息。
純金屬為黑色,因為純金屬沒有顏色,油漆和鏽跡是需要帶有顏色的。
基礎顏色應不包含光照信息,除了micro-occlusion
黑色不應低於30-50sRGB 亮色不應高於240sRGB
Specular:(RGB-sRGB)
灰度值,表示非金屬F0
RGB值,表示金屬吸收的不同波長的光線
這種貼圖允許使用不同的F0值來表現非金屬。
Glossiness
兩套系統的優缺點
(詳見資料包內補充文檔)
Part IV. 官網案例分享