ISUX譯文 | The PBR Guide基于物理的渲染指引(下)

14天前發布

原創文章 / 多領域 / 資訊
騰訊ISUX 原創,如需商業用途或轉載請與騰訊ISUX聯系,謝謝配合。

It is ultra experience

萬物皆可PBR, 本手冊帶你知其然也知其所以然。



近日在研究3D-TO-H5工作流及學習PBR的過程中,發現Substance官方新版的《The PBR Guide》尚未有完整的中文翻譯,所以把心一橫,斗膽翻譯了一波,希望能拋磚引玉,讓大家更深入淺出地了解3D材質貼圖及PBR技術。


PBR,Physically-Based Rendering,意為基于物理的渲染,是一種能對光在物體表面的真實物理反應提供精確渲染的方法,也是近年來極其生猛的3D工業趨勢。


《The PBR Guide》是由Substance by Adobe,Demo Artist Team負責人Wes McDermott主筆,并由3D領域各路專家共同編制的PBR指引手冊。本書分為《Part1:物理現象淺析》《Part2:材質制作指南》兩大部分,從理論到實踐,深度解析PBR工作流。


文章內容硬核中又略帶苦澀,建議看官們分次服用。


The PBR Guide Part2原文地址:


https://academy.substance3d.com/courses/the-pbr-guide-part-2




——————————

1. 什么是PBR? 優勢與意義


上一章從理論的角度講述了PBR的原理,接下來將會從實操的層面來介紹如何制作PBR材質。


首先本章節會從藝術工作者的角度重新定義PBR,講述Metal/Roughness工作流、Specular/Glossiness工作流以及其中的差異。建議讀者們可以先通讀兩個工作流的原則來了解貼圖制作的全貌。


在這個指南中,我們會使用Substance的軟件系列來演示整套工作流,但是PBR貼圖和材質制作的原理其實在不同軟件中都是通用的。


PBR渲染是一個方法而非一個硬性的規則,雖然其中有很多特定的物理原則和規范,但是操作中并沒有唯一的真理,渲染效果可以由不同的手段來實現,貼圖的種類和工作流的使用方式也可以五花八門。GGX的BRDF是最常用的物理算法,但實際上基于不同渲染器及工作流,算法也會應而有異。另外,在不同的實現方式中,貼圖的名字可能也會有所不同,盡管它們對應的用法可能實際上是一樣的。


在這個部分,我們會討論兩個最常用的工作流:金屬/粗糙度工作流(Metal/Roughness)和鏡面反射/光澤度工作流(Specular/Glossiness),并使用Substance系列工具制作貼圖(能同時支持兩種工作流),其中包括了Substance Designer,Substance Painter和Substance B2M。對于兩種工作流來說,Substance PBR 默認著色器使用了GGX BRDF,沒有對粗糙度/光澤度進行重新映射。然而,如果你想定制自己的映射(Remapping),也可以在Substance系列軟件里輕松完成。


另外,Substance系列軟件支持對著色器進行定制,也就是說你可以調整Substance的設置來適應定制化過的渲染管道(Customized Pipeline)。


兩種工作流都有它們自己的優缺點,沒有哪個更優更劣,只有選擇最適合你貼圖表現的工具流才是正道。畢竟是內在的概念和原理使得貼圖表現更為精確,而非工作流本身。即使它們兩者最終可能都表現出了一樣的性狀,但內核卻有著不同的實現方式。



什么是PBR?


PBR(Physically Based Rendering)基于物理的渲染,是一種能對光在物體表面的真實物理反應提供更精確著色與渲染方法。在渲染管道中的不同環節,它也會被稱為物理著色(Physically Based Shading, PBS),PBS通常是指著色,而PBR通常是指渲染和光照。不過,兩個名詞其實都是指基于真實物理下精確渲染場景的過程。



PBR的優勢?


作為設計師,我們可以從藝術角度制作效率兩個維度去看待PBR的優勢:


1. PBR的方法論和算法都是基于物理精確的公式實現的,這讓我們在制作過程中無需反復猜度和測試很多材質的屬性,也讓我們更容易去制作一個更真實的場景。


2. 場景和模型在所有光線條件下都會表現得非常精確。


3. PBR提供了一個穩定的工作流,讓不同的藝術家在不同的項目之間都保持相對恒定的輸出模式。



PBR對藝術工作者的意義是什么?


隨著硬件及其渲染能力的提升,我們能越來越精確地模擬光的真實物理性質。作為藝術工作者此時就需要去理解每一個貼圖它描述和代表的是哪些屬性,會對模型造成哪些影響。


我們需要扔掉過往對漫反射貼圖(Diffuse)和鏡面反射貼圖(Specular)的認知,因為在傳統渲染工作流中,這兩個貼圖只是一個對光與材質比較粗糙的估算方法。


在PBR中,著色器負責執行符合能量守恒和BRDF物理定律的渲染工作,而藝術工作者則需要根據物理定律來創造貼圖。PBR很科學的一點就在于,它已經把很多材質的性質用物理的真實條件定義下來,設計師不需要再盲猜盲試它們的實現效果,從而可以將更多的時間投放在貼圖的創意和設計上。


雖然符合規范和制作正確的貼圖是很重要的事情,但是也并不意味著我們要放棄藝術性的直覺。3D設計師要時刻記住,是藝術的理解和角度真正賦予了材質生命,并在精雕細琢的細節和表達方式中體現了材質的故事。物理現象從來不是藝術家真正需要思考的核心,在物理的環境下工作并不意味著我們就不能創造出有風格的作品。


舉個例子,迪士尼的物理折射模型(Physically-based Reflectance Model)雖然是一個可被當做規范的方法,但我們更應該把它當做一個藝術指導,而非一個嚴格的物理模型。設計師應該學會如何應用這些規范和原則而不是被他們所限制。




Metal/Roughness Workflow

——————————
2. 金屬/粗糙度工作流


金屬/粗糙度工作流(Metal/Roughness Workflow,下文簡稱M/R工作流)是由一系列的貼圖通道所定義的工作流,這些通道會被作為貼圖傳輸到PBR的著色采樣器中。這個工作流對應的貼圖包括Base Color(基礎色貼圖)、 Metallic(金屬貼圖)、 Roughness(粗糙度貼圖)(圖 17)。


在M/R工作流中,PBR著色器也同時使用Ambient Occlusion(環境光遮蔽/環境吸收/AO貼圖,下文統稱環境光遮蔽貼圖)、 Normal(法線貼圖)、Height(高度貼圖)來表現光影視差與置換位移的映射效果(圖 18)。



在此工作流中,金屬的反射值和非導體(電介質)的F0值都被記錄在Base Color貼圖中,在掠射角的反射效果(菲涅爾效應)則交由BRDF來處理。金屬貼圖在此工作流中就像Photoshop里的遮罩一樣,用于區分Base Color貼圖中金屬與非導體材質的區域。非導體的F0值并非人工制定,而是由著色器來處理。當著色器監測到金屬貼圖中的黑色區域時,它會認為這片區域在Base Color中的表現是非導體(電介質)材質,從而統一使用4%(0.04)的反射值。



在第一章中,我們也有提到過,4%這個值基本上可以涵蓋常見的非導體材質。需要注意的是所有的數值,包括非導體的F0、金屬的反射值、反照率顏色的亮度范圍都是從實際測量的數值中得來的。當本文談到單個貼圖時,也會探討哪些是基于測量數據制作的。


在能量守恒定律中也提到過,光從一個表面反射出去的量不會多于它入射在表面上的量。在渲染的實現層面,這個定律一般都由著色器強制執行。在Substance和M/R工作流也一樣,我們是不可能打破能量守恒定律的。由于漫反射色(Diffuse/Reflected Color)和鏡面反射(Specular)的平衡關系由金屬遮罩(Metallic Mask)來控制,所以渲染計算時不會出現反射色和鏡面反射加起來比入射光還多的情況(因為當極限情況下,金屬遮罩全白時,材質表現為全反射,此時反射光最多等于入射光)。




2.1. 非導體(電介質)的F0


對于大多數普通的非導體(電介質)材質來說,反射值都被設為0.04(線性空間),即4%的反射率。在M/R工作流中,這個值一般是著色器不可變更的。


不過在另一些M/R實現流程中,例如Substance系列軟件、Unreal Engine4就會有提供一些控件讓藝術家可以修改非導體(電介質)的F0值。在Substance中,這個輸出區間被標簽為“Specular Level”,由Metal/Roughness PBR著色器的材質采樣器提供。它代表了0.0-0.08這個區間在著色器中會被重新映射為0.0-1.0,而0.5就代表著4%的反射率(如圖20)。



如果你需要手動設置非導體的F0值,也可以使用Substance Designer里的Substance Graph/Specular Level Output來設定,又或者是Substance Painter里的Specular Level Channel來調整(圖21)。本文會在Specular/Glossiness工作流中繼續深入討論非導體(電介質)F0的屬性,因為在S/G工作流中,設計師可以對F0進行全面的控制。





——————————

2.2. 基礎色貼圖 Base Color


RGB貼圖-sRGB


Base Color貼圖是一個RGB貼圖,它能包含兩種類型的數據:非導體(電介質)的漫反射色/反照率顏色(Diffuse Reflected Color/Albedo)和金屬的反射值(如圖22)。導體的顏色代表著它本身反射的光的波長,這個原理我們在第一章有提到(不同的金屬反射不同的色光)。如果這個區域在金屬貼圖中被指示為金屬(金屬貼圖中為白色),那么這個反射值就會被顯示出來。



· 制圖指引


Base Color貼圖的色調一般看起來會比較平,它的對比度會低于傳統的Diffuse貼圖(傳統的Diffuse貼圖帶有光影信息),因為在貼圖中,如果數值太亮或太暗可能都會影響后續的光影渲染效果。物體在光影色調中的實際效果通常比我們印象中存在的樣子亮很多。可以試想一下,以碳作為最黑的物質,而雪作為最亮的物質。雖然碳的固有色看上去是黑的,但是它不是0.0的黑,同樣雪也不是1.0白。所以我們對于基礎色的選擇需要在一定的亮度范圍內,這樣物體在渲染環境中才能表現出較更明亮的高光和更深邃的陰影。


說到亮度范圍,這里通常是指非導體(電介質)材質反射的顏色。在圖23中,你可以看到污垢的色值超出正確亮度范圍的效果(紅色區域)。對于暗色值,盡量不要低于30-50 sRGB,嚴格控制下應該不低于50 sRGB。對于亮色值,貼圖中也不應該有色值高于240 sRGB。



Base Color貼圖中包含著非導體(電介質)材質的反射光信息,所以里面應該避免含有類似AO這種光照信息。但是有一種情況可以除外,當著色器不能只用AO通道來表現出我們預期的細節時,我們可以在Base Color中增加微觀遮蔽(Micro-occlusion)效果。然而,當Micro-occlusion被加到貼圖時,它仍然需要被亮度范圍所限制。



當Base Color貼圖中的值是指金屬的反射值時,這些值應當采用真實世界中的測量值。這些值大概會有70-100%的鏡面反射,映射到sRGB大概為180-255。


在Substance PBR 應用的部分,我們會再討論能預設F0值的工具。而由Sebastien Lagarde制作的Metal/Roughness對照表同樣是一個很好的參考依據。



再回顧一下Base Color的幾個重點特性:


1. 貼圖中的顏色對于非金屬材質來說是它的反照率顏色(Albedo),對于金屬材質來說則是它的反射值(Reflectance value,所帶色相與其反射的波長有關)。


2. Base Color除了微觀遮蔽信息(Micro-occlusion)以外,不應該含有任何光照信息。


3. 暗色值在寬松條件下不應該低于30 sRGB,嚴格來說不應該低于50 sRGB。


4. 亮色值不應該高于240 sRGB。


5. 原始金屬的反射值一般都非常高,大概能達到70-100%的鏡面反射,映射到sRGB范圍大概是180-255。



本文稍后會介紹金屬的部分,由于Base Color中也包含了金屬的反射值,如果金屬的Base Color貼圖加入了污垢或者氧化的顏色,那么它們就會使得原來表示金屬反射值的數據低于原始金屬應有的范圍,此時這塊區域也不應再被認為是原始金屬。


所以金屬貼圖也務必包含污垢和氧化區域的信息,而且它們的數據必須更低(白色為原始金屬,所以非金屬應為灰階)來表示這塊區域不再是原始金屬。在圖25中,你可以看到,這塊生銹的金屬中非金屬(銹跡)的部分被設置為黑色。同樣,金屬貼圖并不是非黑(0.0)即白(1.0)的蒙層,污垢在金屬貼圖中表現為過渡的灰階,表示著其為程度不一的非導體(電介質)材質。


金屬貼圖的功能可以理解為一個遮罩,它告訴著色器應該如何去解讀Base Color貼圖中的RGB數據。





——————————

2.3. 金屬貼圖 Metallic


灰度貼圖-Linear


金屬貼圖是用于定義物體中哪個區域是原始金屬的貼圖。作為一個灰度貼圖,他的作用就類似于一個圖層遮罩,告訴著色器應該如何去解讀Base Color貼圖中的RGB數據。



金屬貼圖中并沒有包含直接被材質引用的真實世界的數據(如反照率顏色、反射值等),它只是比較簡單地對著色器描述Base Color中的哪個區域應該被解析成反照率顏色(非導體),哪個區域應該被描述成金屬的反射值。


在金屬貼圖中,0.0(純黑-0sRGB)代表了非金屬,而1.0(純白-255sRGB)代表了原始金屬。當金屬貼圖被用于定義原始金屬與非金屬時,一般都是二態的:純黑或純白,意味著材質除了原始金屬就是非金屬。在實現過程中,當著色器監測到金屬貼圖中的白色區域時,它會檢查 Base Color 貼圖中相應的位置來獲取金屬的反射值并進行渲染(如圖26)。



· 制圖指引


金屬表面有兩個和材質相關的重要屬性:第一,它們的反射值一般很高,會造成70-100%的鏡面反射。第二,有些金屬會被腐蝕。我們接下來會在制圖指引中單獨討論這兩個屬性。



原始金屬 Raw Metal


當金屬貼圖被賦值為0或1時,這就意味著這片區域是或不是原始金屬,而原始金屬就是指未被腐蝕、完美拋光的金屬狀態。作為一個通用的準則,原始金屬在金屬貼圖中的灰階范圍大概是235-255 sRGB之間。在這個區間里的金屬會在Base Color貼圖中會透傳為70-100%的反射值,而對應sR



腐蝕的或非導體(電介質)圖層 Corroded or Dielectric Layer


當設計師在做舊一個金屬材質時,需要考慮這個金屬材質是否被腐蝕,并考慮環境中諸如污垢和塵埃等因素。在這些情況下,金屬材質的局部就需要被當做是非導體(電介質)材質來看待。對于上漆的金屬也是一樣,如圖28所示,當漆層被劃開或撬掉時,會露出底部的原始金屬(金屬貼圖中顯示為白色),而有漆的部分仍舊是一個非導體圖層(金屬貼圖中顯示為黑色)。



金屬貼圖也可以用過渡的灰階來表示金屬與非金屬在貼圖中的混合狀態。如果在金屬貼圖中有灰色色值低于235 sRGB時,你需要手動降低Base Color中原始金屬的反射值。在圖29中我們可以看到,污垢層遮掩了一部分的金屬,而污垢實際上是非導體(電介質),如果金屬貼圖中,對應污垢的地方仍是白色,那么渲染時,著色器就會認為這個區域的Base Color是金屬的反射值。但是我們也知道,污垢的色彩值是遠遠低于拋光金屬70-100%的反射值的。此時,只有降低金屬貼圖中代表污垢的值,才能精確實現這種介乎于非導體與高反射金屬之間的混合材質。


污垢層的透明度決定了Base Color中的反射值能被降低多少。這里其實沒有硬性的規定。本質上你只是將一個高反射表面(導電材質)轉換成低反射表面(非導體材質),然而這中間的過渡情況是應情況而異的。


使用Substance工具能夠很好地展示磨損效果,而且這些效果不僅影響單個通道的貼圖,也會延伸到其他通道上。在 Substance Designer 和 Substance Painter 中,你可以通過Substance效果生成器來調整參數,它會自動地對效果進行跨通道的調整。


舉個例子,在Substance Designer中可以使用Material Color Blend節點對效果進行跨通道的應用(例如污垢效果)。在Material Color Blend中,也可以透過調整金屬值(Metallic Value)來控制污垢在金屬上的效果(圖30)。





我們再來回顧一下金屬貼圖的幾個要點:


1. 金屬被氧化、腐蝕、上漆、覆塵后,這些區域需要被當做非導體(電介質)材質來看待。


2. 在金屬貼圖中,純黑(0.0)代表了非金屬,純白(1.0)代表了金屬,我們可以用過渡的灰階來表示不同程度氧化和污垢。


3. 如果金屬貼圖中有值低于235 sRGB,那么在Base Color中對應區域的反射值也應該降低。




——————————

2.4. 粗糙度貼圖 Roughness


灰度貼圖-Linear


粗糙度貼圖用于描述造成一個表面的不規則度,這種不規則度會造成光的漫射(如圖31)。正如我們在第一章中所說,光會基于表面的粗糙度進行方向隨機的反射。雖然這個現象中光的方向被改變,但是光的強度是恒定的。越粗糙的表面會擁有越大越暗的高光,而越光滑的表現就越能將鏡面反射聚攏,讓高光看上去更亮更強。盡管這兩者實際上都是反射了強度一樣的光。



在粗糙度貼圖中,純黑(0.0)代表了平滑表面而純白(1.0)代表了粗糙表面。粗糙度貼圖可以說是最有創造力的貼圖,因為它允許藝術工作者從視覺上定義這個表面的特性,你可以從一個表面的材質成色和狀態來講述它的故事。它正處在什么環境中?它是被呵護的還會被糟蹋的材質?它有沒有被暴露在自然環境之中?一個表面的狀態可以透露出它所在的環境、場景以及你希望創造的世界觀。


粗糙度是一個非常主觀的領域。作為一個藝術設計者應該放開手去嘗試。而法線貼圖往往也是粗糙度的一個很好的切入點,因為法線貼圖往往也包含著很多關鍵的表面細節,而這些細節也常常在粗糙度貼圖中復現。



· 制圖指引


發揮你的創意,說出貼圖的視覺故事。





——————————

2.5. 分辨率與紋素密度 Resolution and Texel Density


M/R工作流的其中一個副作用就在于會產生白邊效應(如圖32)。這個情況在Specular/Glossiness工作流中也會發生。然而在S/G工作流中,效果不會那么明顯,因為白邊會變為黑邊。(如圖33)



這樣的邊緣效應是由于材質的插值造成的,在非導體(電介質)材料與明亮金屬這種強對比的過渡邊界處尤為明顯(如圖34)。在M/R工作流中,Base Color里包含了非常亮的金屬反射值,其中又插入了非金屬漫反射色的數值,所以產生了白邊。在S/G工作流中,Diffuse貼圖中因為原始金屬并沒有漫射色,所以呈現為黑色。而這些代表金屬的黑色值又在材質交界處被插入了非金屬的漫射色,所以邊緣也呈現出黑色。




貼圖文檔的分辨率與紋素密度對邊緣效應也有著直接的影響。舉個例子,如果你用硬筆刷來繪制金屬與非金屬的交界,在低像素的文檔中,這個交界的像素依然會被軟化,從而加劇這個邊緣效應。而低分辨率的問題也有可能是由UV的比例造成的,如果模型的UV在導入前沒有被等比放大到一定程度(局部UV的面積太小,即使它在高清紋理中,它的紋素密度未必會足夠高),它就無法提供足夠的紋素密度來滿足這個貼圖的分辨率,邊緣效應也會比較明顯。所以最好的減輕邊緣效應的方法,還是需要前期就給UV提供足夠的紋素密度(如圖35)。



在圖35中,兩組紋理都是用了2K分辨率,但是右邊的UV比例由于布局時就偏小,所以它的紋素密度也非常低。



· 制圖指引


紋素密度與分辨率直接影響了M/R工作流中的白邊效應。如果希望減輕這個現象,就需要在前期保證UV展開時的布局和面積,保證它能提供足夠的紋素密度,來對應材質制作文檔的分辨率。




——————————

2.6. 金屬/粗糙度工作流的優劣勢


優勢


1. 在M/R工作流中,由于非導體(電介質)的F0都是規定好的,所以設計師在對非導體F0賦值時不易出錯。


2. 紋理的緩存壓力更小,因為金屬貼圖和粗糙度貼圖都是灰度貼圖。


3. 目前來說是兼容性最廣的工作流。



劣勢


1. 非導體(電介質)F0的值固定為4%,無法調整。然而,在大多是實現流程中都有控制器可以直接復寫這個值,所以也不能算硬傷。


2. 白色邊緣問題較明顯,尤其在低分辨率的情況下問題突出。




Specular/Glossiness Workflow

——————————

3. 鏡面反射/光澤度工作流


和M/R工作流一樣,鏡面反射/光澤度工作流(Specular/Glossiness Workflow, 下文簡稱S/G Workflow)也是透過一系列通道貼圖來進行定義的。這些S/G工作流獨有的貼圖分別是Diffuse(漫反射貼圖)、Specular(鏡面反射貼圖)、Glossiness(光澤度貼圖)。


雖然S/G工作流使用了我們比較熟悉的名詞,如Diffuse和Specular,但是需要注意區分的是,這些貼圖對應的真實屬性和他們的傳統含義并不完全一致。Substance里用的叫法是Diffuse(漫反射),但是在某些實現流程中也被叫做Albedo(反照率顏色)。


除此之外,之前也提到過在兩套工作流里,PBR著色器都可以用到AO貼圖、法線貼圖和高度貼圖來表現光影視差與置換位移的映射效果。


在這個工作流里,金屬的反射值和非金屬的F0值被放置在鏡面反射貼圖(Specular)中,而且將有兩張RGB通道的貼圖:Diffuse Color(Albedo)和鏡面反射貼圖(Specular)。在鏡面反射貼圖中,你可以對非導體材質的F0值進行控制。


正如我們在M/R工作流中提到過的一樣,PBR著色器自動遵循能量守恒定律。而在S/G工作流里這顯得更為重要,因為在鏡面反射貼圖中,設計師可以對非導體(電介質)的F0值進行控制。這就意味著,那張貼圖很可能被人為賦予錯誤的值。舉個例子,一個純白的漫反射(1.0)和一個純白(1.0)的鏡面反射值加起來表示的反射光線就多于它原來接受的光線,而這就打破了能量守恒定律。結果就是,當我們這么制作材質時,材質數據就無法產生真正合理的效果。


如你所見,貼圖中呈現的數據和M/R工作流是一樣的,只是數據被放在了不同的貼圖,所以仍會遵循一樣的制圖規范,差異就在于我們應該如何制作這些S/G工作流的貼圖。


之前也提到過,非導體(電介質)的F0值、金屬的反射值、反照率顏色的亮度范圍,這些都是真實測量的數據。接下來當講到每個貼圖種類時,會更具體地講述基于測量數據的貼圖該如何制圖。但和M/R工作流重復的內容則不再贅述,本段會更集中地比對兩套工作流的差異。




——————————

3.1. 漫反射貼圖 Diffuse


RGB貼圖-sRGB


正如M/R工作流中的Base Color貼圖,漫反射貼圖包含了反照率顏色。然而它卻不包含任何反射值。



· 制圖指引


由于漫反射貼圖中只包含反照率顏色(Albedo),所以那些指示原始金屬的區域會被標記為黑色(0.0),因為金屬不會有任何漫反射色彩(如圖37)。如果金屬受到了氧化或腐蝕,則該區域會帶有一定的顏色,而且也不會被判定為原始金屬。除此之外,污垢、上漆等在原始金屬上增加了一層非導體(電介質)材質圖層,在漫反射貼圖中都是一樣的處理。



所以Diffuse在色調上的制圖指引和M/R工作流中的Base Color幾乎是一樣的,區別就在于如果貼圖需要展示原始金屬,那么該區域就是為零的值(顯示為純黑,0.0),而且不會受到暗度范圍的約束。


1. 漫反射貼圖中的顏色表示的是非金屬的反照率顏色,而純黑(0.0)代表的是原始金屬。


2. Base Color除了微觀遮蔽(Micro-occlusion)外不應該帶有其他光照信息。


3. 除了表示金屬的純黑(0.0)外,暗色值最多不應該低于30 sRGB,嚴格上說,不應該低于50 sRGB。


4. 亮色值不應該亮過240 sRGB。




——————————

3.2. 鏡面反射貼圖 Specular


RGB貼圖-sRGB


鏡面反射貼圖是用于定義金屬反射值和非導體(電介質)F0值的貼圖(如圖38)。由于鏡面反射貼圖是RGB貼圖,所以非導體材質可以賦予不同的F0值。而在M/R工作流中,非導體(電介質)的F0值是被寫死的4%,而且也只能透過軟件中的“Specular Level”通道來調整。正如我們在M/R工作流中提到的一樣,F0值需要從真實世界的測量中獲得,而這個F0值一般來說都會是比較暗的值。對于金屬而言,由于不同的金屬會吸收不同光的波長,所以他會反射出不同的顏色。在鏡面反射貼圖中,金屬和非導體的F0值都被寫在了RGB通道當中。



· 制圖指引


由于鏡面反射貼圖包含了金屬和非金屬的F0值,所以我們也會分別描述他們的制圖規則。



原始金屬:


原始金屬的F0值應該是基于真實世界測量的數據來設定。如果金屬產生了氧化或者有些覆蓋層被定義為非金屬時,這個金屬區域的反射值就要降低。而在S/G工作流中,污垢和氧化層在漫反射貼圖中的色值會變亮,而在鏡面反射貼圖中的色值會變低(如圖39)。圖39中展示了原始金屬上存在污垢層,而這片污垢在鏡面反射貼圖中就使用了正確的非導體(電介質)F0值(在這個案例中使用了4%)。



非導體(電介質):


非金屬的F0值同樣也被記錄在鏡面反射貼圖中。在這里,雖然你可以自由地調整非導體(電介質)的F0值,但是務必要使用正確的值。正如我們在第一章提到的,非金屬(絕緣體/非導體/電介質)是較差的電導體。由于光被折射或被吸收(或者穿透表面再次發射),所以這些材料會比金屬反射的光少得多。基于折射率(IOR)的運算,大部分非導體的F0值會在2-5%左右,而寶石是一個特例。在線性空間中的換算,大部分非導體的F0值大概是0.02-0.05左右。



在sRGB中,我們會使用40-75 sRGB的范圍,對應線性空間中0.02-0.05(2-5%)的區間。


如果你無法知道某個材質的折射率,可以假設它的F0為4%(0.04是塑料的反射值),而寶石的反射值較高,在線性空間中大概是0.05-0.17(如圖40所示)。在金屬的工作流中,當你使用Specular Level調整時,著色器會被映射到0.0-0.08(線性空間),此時0就代表空氣的反射率。


來回顧一下鏡面反射貼圖的重點特性:


1. 鏡面反射貼圖包含了非導體(電介質)的F0值和原始金屬的反射值。


2. 非導體(電介質)反射的光比金屬少。普遍非導體的反射值為2-5%,在sRGB中,這個值大概在40-75之間,這個區間和0.02-0.05的線性空間范圍是重疊的。


3. 普通寶石的反射值范圍在0.05-0.17(線性空間)。


4. 普通液體的反射值范圍在0.02-0.04(線性空間)。


5. 而原始金屬的反射值則可以高達70-100%的鏡面反射,映射到sRGB約為180-255 sRGB。


6. 如果你無法找到某個材質的折射率(IOR),那么你可以先假設它的F0為4%(0.04為塑料反射值)。





——————————
3.3 光澤度貼圖 Glossiness


灰度貼圖-Linear


光澤度貼圖適用于描述表面不平整度的貼圖,表面不平整會造成光的散射(如圖41)。在這個貼圖中,純黑(0.0)代表的是粗糙表面,而純白(1.0)代表了平滑表面。這和M/R工作流里的粗糙度貼圖是完全相反的,但是在設計側卻有著類似的制圖原則。


· 制圖指引


盡可能地表現你的創造力,來顯示這個表面的故事。




——————————

3.4. 分辨率與紋素密度 Resolution and Texel Density


之前我們也有提到過兩個工作流中會出現的邊緣效應,在M/R工作流中,由于邊緣顯色為白色(金屬的高反射值)所以會更加明顯。在S/G工作流中,漫反射貼圖的中的原始金屬并沒有漫反射色,所以顯示黑色,而這些黑色值的邊緣會插入非金屬的漫反射色,所以就形成了如圖42所示的黑邊。



再次強調,文件本身的分辨率和貼圖的紋素密度對邊緣效應有著直接的影響。而表面所對應的UV本身的布局和大小也會對紋素密度造成影響,原理和之前在M/R工作流中提到的是一樣的,就不再贅述。



· 制圖指引


紋素密度與分辨率直接影響了S/G工作流中的黑邊效應。如果希望減輕這個現象,就需要在前期保證UV展開時的布局和面積,讓它能提供足夠的紋素密度,來對應材質制作文檔的分辨率。




——————————

3.5. 鏡面反射/光澤度工作流的優劣勢


優勢


1. 邊緣效應不會那么明顯。


2. 可以在鏡面反射貼圖中對非導體(電介質)材質的F0值自由調整。



劣勢


1. 由于在S/G工作流的鏡面反射貼圖中,非導體(電介質)材質的F0值是可以自由調整的,所以也會導致設計師容易輸入錯誤的值。而這些錯誤的值被著色器誤讀后可能會打破能量守恒定律,從而造成不正確的渲染效果。


2. 由于新增了一張RGB通道的鏡面反射貼圖,所以對性能消耗會更大。


3. S/G工作流有些名詞和傳統的工作流太相似,但是實質所對應的數據可能是不一樣的,因此會導致設計師容易誤解或誤操作。這種情況下就要求設計師有更好的PBR理論知識,例如了解非導體(電介質)的正確F0值,金屬在漫反射色下表現為純黑,以及在著色器沒有自動校正情況下,能量守恒相關的基礎知識。




——————————

4. 通用貼圖:適用于兩套工作流


4.1. 環境光遮蔽/環境光吸收貼圖 Ambient Occlusion



AO貼圖用于定義一個表面上的每個點在環境光下的暴露程度,它通常被用在后制效果中(加重夾角、交界面的陰影細節等)。AO貼圖只會影響漫反射而不會遮蔽鏡面反射的表現。在某些引擎(如Unreal Engine4)中會擁有一些選項,讓屏幕空間的反射(Screen Space Reflection)去模擬本地反射(Local Reflections)。而最好的反射處理就是使用AO貼圖與屏幕空間的反射進行混合。


在Substance PBR著色器中,環境光(由環境貼圖生成)會和AO貼圖進行疊加。AO貼圖由PBR著色器中的材質采樣器提供,而且并不是一個必要的貼圖通道(圖44)。AO貼圖不應該被烘焙在材質貼圖中,因為它在著色器中只會在自己獨有的通道里作用。



· 制圖指引


在SP或SD里,AO貼圖既可以從一個模型里烘焙出來,也可以利用內置的烘焙工具制作,或從法線貼圖里進行轉換。而且在SP和SD里,你都可以利用HBAO節點或者濾鏡,并通過高度的輸入值來生成基于水平視角的AO貼圖,它的效果和光線跟蹤烘焙出來的效果是非常相似的(如圖45)。





——————————

4.2. 高度貼圖 Height


高度貼圖通常被用作渲染置換(Displacement)效果,它可以用作視差映射,來給紋理增加更明顯的深度,而且比起法線和凹凸貼圖更加真實。Substance中用的是均勻視差映射算法(Relief Mapping Parallex Algorithm)。高度同樣不是一個必要的貼圖通道,而且它也是由PBR著色器里的紋理采樣器提供的。在SD中,你可以使用視差遮蔽(Parallax Occulusion)或者細分鑲嵌式著色器(Tessellation Shader)。在SP中,則可使用置換通道(Displacement Channel)來執行視差遮蔽。




· 制圖指引


和AO貼圖一樣,高度貼圖在SP和SD中既可以從一個模型里烘焙出來,也可以利用內置的烘焙工具從法線貼圖里進行轉換。在SD中可以使用節點從法線貼圖里轉換出高度貼圖(圖47)。而在SP中,你可以直接繪制高度的細節(圖48)。



為了節省性能,在實時渲染器中使用高度貼圖時,我們應該減少貼圖中的高頻細節。高度貼圖設計時更傾向于呈現置換體(用于置換幾何體面形態的形狀)的整體輪廓。一個比較推薦的實操方式是,用模糊/精度較低的高度貼圖來塑造置換體的外形,并且減低它的高頻細節。然后,再用法線貼圖來提供高頻細節,而高度貼圖只置換了整體輪廓。如果你在光線跟蹤渲染器(Raytrace Renderer)里使用高度貼圖實現置換效果時,高頻細節就不可缺失了。






——————————

4.3. 法線貼圖 Normal


法線貼圖可用于模擬表面的細節。貼圖中的RGB通道分別對應的是表面上不同部位法線的X、Y、Z坐標。它可以用作保存高模的細節,并且映射到低模中去。在Substance工具系列中,你可以烘焙法線貼圖也可以從高度貼圖里轉換法線貼圖。


· 制圖指引


在SP或SD中,可以利用內置的烘焙工具從模型中烘焙法線貼圖。在SD中,你可以利用法線點將高度轉換成法線貼圖(如圖50)。而在SP中,你也可以直接在3D視圖中直接繪制法線數據(如圖51)。





——————————

5. Substance PBR 貼圖繪制工具


在這個章節里,我們將介紹幾個可以制作PBR貼圖的工具,以及如何設置正確的反射值。這些工具都是對應這本指南中提到的概念和原則進行設計的。




5.1 Substance Designer


PBR 基礎材質 (PBR Base Material)


SD中有一個支持創建PBR完整基礎材質的節點,可以在Material Filter/PBR Utilities里找到(圖52)。它同時支持M/R工作流與S/G工作流,并且為原始金屬材質提供了通用的預設。如果你需要創建非金屬材質,SD也允許用戶對反照率顏色(Albedo)進行設置。對于不同的工作流,Roughness和Glossiness兩個通道的控制器可能有所不同,并且伴隨著一系列對應的可控制項。你可以在對應通道里使用貼圖并查看其效果,如Base Color、法線或者高度貼圖。


非導體(電介質)F0值


這個節點可以用作輸出常見非導體材質的F0通用值(圖53),它位于Material Filters/PBR Utilities中。你可以在預設中選擇,也可以手動輸入。這個節點有一個折射率(IOR)的輸入框可供設定,它會根據這個折射率來計算F0的數值。它是專門為非導體材質所設的,并且可以在S/G工作流中使用。



金屬反射值


金屬節點可以用作輸出常見原始金屬的反射值,它位于SD Library的Material Filters/PBR Utilities中。同樣的,你可以從預設里面選擇合適的金屬反射。



PBR 金屬/粗糙度 校驗  


在M/R工作流中,這個節點用于檢查Base Color和Metal Maps里的錯誤數值。它位于Material Filters/PBR Utilities。這個節點會輸出一個從紅>黃>綠的熱力圖,紅色區域顯示的就是錯誤的數值區,而黃色和綠色區域則是正確的。金屬情況下,它會檢查被金屬貼圖中示意為金屬的區域,在Base Color中對應的F0值是否正確(大于235 sRGB),熱力圖會顯示哪些地方的F0范圍過低。對于Albedo貼圖來說,它則會驗證非導體的亮度范圍是否正確。




PBR 安全色 / PBR Safe Color


這個節點會修正Base Color和Diffuse貼圖中的值(如圖56所示),它會保證電介質的亮度值落在正確的范圍內。這個節點位于Material Filters/PBR Utilities。



貼圖轉換 Conversion


這個節點可以將M/R工作流中的貼圖轉換到適應不同渲染器的貼圖,同樣可以在Material Filters/PBR Utilities中找到。目前可支持以下渲染器:


Vray(GGX), Corona, Corona 1.6, Redshift 1.x°, Arnold 4(aiSurface)°, Arnold 4(aiStandard)°, Renderman(pxrSurface)


值得注意的是,Arnold 5和Redshift 2.x 目前可支持 Base Color/Metallic/Roughness工作流直出的貼圖。




——————————

5.2 Substance Painter


PBR 金屬/粗糙度校驗(濾鏡) PBR Metal/Roughness Validate(filter)


在M/R工作流中,這個濾鏡用于檢查Base Color和Metal Maps里的錯誤數值(如圖57)。它是一個免費的濾鏡,你可以在Substance Share中下載。



這個濾鏡也會輸出一個從紅>黃>綠的熱力圖,紅色區域顯示的就是錯誤的數值區,而黃色和綠色區域則是正確的。對于金屬材質來說,它會檢查被金屬貼圖示意為金屬的區域,在Base Color中對應的F0值是否正確(大于235 sRGB),熱力圖會顯示哪些地方的F0范圍過低。對于Albedo貼圖來說,它則會驗證非導體的亮度范圍是否正確。


在SP中使用時,可以將濾鏡導入到你的項目中,或者將這個濾鏡直接拷貝到濾鏡文件夾中常備。




——————————
5.3 Substance 輸出與渲染


從Substance Source中獲取的Substance材質都可以支持M/R工作流和S/G工作流。他們的輸出內容都可以用在PBR實時著色器中,例如Unreal Engine 4或者Unity。而 Base Color/Metallic/Roughness相關輸出也可以被應用在可以支持金屬工作流的光線追蹤渲染器中(Raytraced Renders),如Arnold。而S/G相關的貼圖只能用于實時著色器。對于不同的渲染器,你可能可以直接使用BaseColor/Metallic/Roughness貼圖,又或者需要對它們進行轉換。


然而對于某些渲染器來說,從Substance Source中下載的定制化或自由創作的材質或資源可能并不具備符合PBR的標準輸出,因為他們可能只包含了Base Color/Metallic/Roughness的貼圖。所以在應用材質前我們需要充分理解當前導入材質所攜帶的貼圖類型及輸入數據,以及當前使用的渲染器能接受哪種貼圖類型或輸入數據,這樣才能對輸入源進行對應的轉換,并且最終正確應用和輸出Substance材質。


舉個例子,在Arnold 5中,你可以直接使用M/R工作流的輸出貼圖。然而在Vray材質中,你需要對M/R的輸出貼圖進行轉換,使其生成反射貼圖和1/IOR貼圖。Substance Painter支持若干第三方渲染器配置(如圖58),可根據后續對應的渲染器進行輸出。


Substance協作插件可以將Substance材質的輸出物直接轉換到特定渲染器可使用的格式。舉個例子,3ds Max的Substance協作插件有各類預設,可以與Arnold、Vray、Corona打通。使用這些預設會自動將Substance輸出貼圖進行轉換,并可直接應用在這些渲染器中。



想了解更多關于Substance Painter和Substance Designer的操作,可以參考Substance Integrations的官網渲染文檔。




——————————

6. 附錄


在創建材質的初期,當我們需要對材質進行判別時,將表面材質拆分為金屬與非金屬兩個類目來理解會更加直觀有效。從下面兩個表格中,我們可以快速查閱上文提到的兩套工作流的材質制作指南。




6.1 反射值


圖62展示了在M/R工作流中,非導體(電介質)材質的F0值范圍與次世代PBR著色器之間的關系。比起金屬材質,非導體材質會反射更少量的光。普遍非導體材質的F0值會在2-5%之間,對應的是RGB范圍為40-75,與0.02-0.05線性范圍重合。



在圖63中,你可以同時比較非導體的F0值和金屬的反射值。對于金屬材質來說,它們的反射范圍是70-100%,對應180-255 sRGB。sRGB與Linear空間之間的換算使用的是gamma2.2的近似值,具體可以參考第一章中的細節描述。



6.2 正確/錯誤貼圖比較


圖64顯示了在M/R工作流中,正確與錯誤貼圖的示范案例。污垢在金屬貼圖中被示意為原始金屬,而且Base Color中原始金屬所對應的反射值被設定得太低,會導致這部分區域最終無法反射出金屬應有的70-100%范圍。



對PBR原理感興趣的同學請回頭空降噢:


《The PBR Guide Part1 - 物理現象淺析》


——————————

本文僅供學習參考之用,原文及圖片版權歸屬Substance及其母公司Adobe所有。


參考文獻:


[1] McDermott, W. (2018). The PBR Guide. [PDF] Available from: https://academy.substance3d.com/courses/the-pbr-guide-part-1 [Accessed 12 November 2019]


[2] Burley, B. (2012). Physically-Based Shading at Disney. [PDF] Available from:https:/disney-animation.s3.amazonaws.com/library/s2012_ pbs_disney_brdf_notes_v2.pdf [Accessed 5 July 2016].


[3] Kwast, D. An Introduction to BRDF Models. [PDF] Available from:http://hmi.ewi.utwente.nl/verslagen/capita-selecta/CS-Jimenez-Kwast-Daniel.pdf [Accessed 5 July 2016].


[4] Lagarde, S. (2014). ‘Dontnod Physically Based Rendering Chart for Unreal Engine,’ Sebastien Lagarde, blog post, April 14, 2014. Available from:https://seblagarde.wordpress.com/2014/04/14/dontnod-physically-based-rendering-chart-for-unreal-engine-4/ [Accessed 5 July 2016].


[5] Lagarde, S. (2011). ‘Feeding a Physically-Based Shading Model’, Sebastien Lagarde, blog post, August 17, 2011. Available from:https://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-mode/. [Accessed 5 July 2016].


[6] Walter, B., Marschner, S., Li., H. and Torrance, K. (2007).Microfacet Models for Refraction through Rough Surfaces. [PDF] Eurographics Symposium on Rendering, 2007. Available from: https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf [Accessed 5 July 2016].


[7] Epic Games. (2004-2017). ‘Using Refraction’, Epic Games, UE4 Documentation, 2017. Available from:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/HowTo/Refraction/. [Accessed 5 July 2016]


[8] 游戲引擎中基于物理渲染的基礎部分(2). Available from: https://www.bilibili.com/read/cv346602/






感謝閱讀,以上內容均由騰訊ISUX團隊原創設計,以及騰訊ISUX版權所有,轉載請注明出處,違者必究,謝謝您的合作。


88
- 4位站酷推薦設計師推薦 -

    文章信息

    • 文章標簽

    沒有新消息



    tlc同乐城体育