本文轉自Unity Connect博主 櫻花兔
借助這默認的HDRP Shader,小伙伴們可以輕松地在HDRP中創建逼真的物理材質。它包括一些效果選項,例如次表面散射,虹彩,頂點或像素位移等各種表現效果。
今天呢,主要分享一下HDRP自帶的三種Shader Types:
Shader types(著色器類型)
Lit(默認著色器):基礎的PBR著色器,可改變材質類型,來實現任何想要的材質感覺。
Layered Lit(分層著色器):通過一張Mask圖,可將Lit材質最多分成四個通道,并賦予不同的Lit材質(需要材質類型相同)。
LitTessellation(曲面細分著色器):通過一張Hight map可改變Lit賦予后的表面,所生成的表面就會表現出高度貼圖中所編碼的高度信息。
要創建新的Lit Material,在引擎的導航欄中找到Asset窗口,右鍵單擊該窗口,然后選擇Create> Material。這會將新的材質添加到Unity項目的Asset文件夾中。當你在HDRP中創建新材質時,默認情況下它們將使用Lit Shader。想要換成其他的呢,它們呢,都在“ 著色器”下拉菜單中“ HDRP/ ”下。
對了,有別的問題的話,可以看下我之前寫的文章哦~
HDRP的貼圖通道細節可以看這里:廁所工程HDRP后期Volume介紹可以看這里:VolumeSurface types(表面類型)
Tyes的HDRP手冊文檔:Types
Opaque(不透明):用于制作沒有光穿透的完全固態的材料。
Transparent(透明):用于制作光可以穿透的半透明材料,例如透明的塑料或玻璃。選擇“Transparent”可在“ Surface Options”部分以及“ Transparency Inputs”部分中顯示更多屬性。
Material types(材質類型)
Types的HDRP手冊文檔:Types
Standard(標準):用于制作基礎的金屬著色器工作流程的材料,這是默認的“ 材料類型”。
Anisotropy(各向異性):用來制作那些在不同角度觀察高光會產生變化的材料。當您從不同角度查看“材質”時,各向異性表面的高光會改變外觀。
Iridescence(彩虹色):用來制作那些在不同角度觀察顏色會產生變化的材料。
Specular Color(鏡面顏色):用來制作那些想要擁有特定顏色高光的材料或者是純鏡面著色的材料。
Subsurface Scattering(次表面散射):用來制作那些可模擬光交互和散射的半透明材料。
Translucent(半透明):用來制作那些半透明的材料,與次表面散射材料相比,半透明材料不會模糊透射通過該材料的光。
在制作之前呢,我們先來了解一下菲涅爾效應(Fresnel effect),因為它是作為基于物理的渲染理念中的核心理念之一。菲涅爾效應 Fresnel Effect基于物理的渲染的核心理念之一是采用基于真實世界測量的材質光學參數。
由于光由電磁波組成,因此,物質的光學特性與其導電特性密切相關。我們通常把導電性較差的材質,如煤、人工晶體、琥珀、陶瓷等稱為絕緣體。而把導電性比較好的金屬如金、銀、銅、鐵、錫、鋁等稱為導體。以及將導電性質介于導體和絕緣體之間的材質稱為半導體。
即根據導電特性,可將現實生活中的物質分為三個主要光學類別:
金屬(metals)
電介質(dielectrics)
半導體(semiconductors)
菲涅爾效應,表示的是看到的光線的反射率與視角相關的現象,由法國物理學家奧古斯丁.菲涅爾率先發現。其具體表現是在掠射角(與法線呈接近90度)下光的反射率會增加。而上述的反射率,便被稱為菲涅爾反射率。如下圖。
需要注意的是,我們在宏觀層面看到的菲涅爾效應實際上是微觀層面微平面菲涅爾效應的平均值。
也就是說,影響菲涅爾效應的關鍵參數在于每個微平面的法向量和入射光線的角度,而不是宏觀平面的法向量和入射光線的角度。即:
當從接近平行于表面的視線方向進行觀察,所有光滑表面都會變得100%的反射性。
對于粗糙表面來說,在接近平行方向的高光反射也會增強,但不夠達到100%的強度。
不同材質的菲涅爾效應的強弱是不同的,導體(如金屬)的菲涅爾效應一般很弱,主要是因為導體本身的反射率就已經很強。就拿鋁來說,其反射率在所有角度下幾乎都保持86%以上,隨角度變化很小,而絕緣體材質的菲涅爾效應就很明顯,比如折射率為1.5的玻璃,在表面法向量方向的反射率僅為4%,但當視線與表面法向量夾角很大的時候,反射率可以接近100%,這一現象也導致了金屬與非金屬外觀上的不同。
當光線垂直(以0度角)撞擊表面時,該光線被反射(Reflected)為鏡面反射光的比率被稱為F0。即F0為0度角入射時的菲涅爾反射率。而折射(refracted)到表面中的光量則為為1-F0。如下圖。
對于光滑的電介質表面,在0度角入射(F0)將反射2-5%的光,在掠射角入射下將反射100%的光。
大多數常見電介質的F0范圍為0.02-0.05(線性值)。對于導體,F0范圍為0.5-1.0。
為了方便創作呢,可參考如下的PBR材質F0反射率速查圖表,其中分別對常見材質的線性值,sRGB值和參考顏色進行了列舉。
好了,現在呢,我們了解了基礎的表面類型和材質類型,以及物理的材質解析之后呢,就可以開始制作了,這里呢,我做了幾個材質的示例,供大家參考一下~
木板
金屬
拋光金屬
皮膚
透明塑料
泥土沙石
電鍍
布料
絨毛
分層材質
分層Planar
— 木板 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“Lit”
電介質具有相當低的F0值 - 通常為0.06或更低。在垂直入射時的這種低反射率使得菲涅爾效應對于電介質尤其明顯。電介質的光學性質在可見光譜上很少變化很大,導致無色反射率值。
這個木頭材質的屬性如下:首先木頭的Surface types是Opaque的,然后呢,它的Material types就選默認的Standard。
— 金屬 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LitTessellation”
金屬具有高的F0值 - 幾乎總是0.5或更高。一些金屬具有在可見光譜范圍內變化的光學性質,導致了這些金屬有色的菲涅爾反射率。
這個鐵球為了將它表面細節體現的更加可信,我將它設為了曲面細分的Lit,這個金屬材質的屬性如下:首先它的Surface types是Opaque的,然后呢,它的Material types就選默認的Standard,如果選擇了曲面細分的shader的話,會在Shader面板中多出一條Tessellation Options,來設置曲面細分的細節,這里就先不多做介紹了。
然后在Surface Inputs會多一項Height Map的接口,以及細分高度參數的設置。
— 拋光金屬 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“Lit”
這個拋光材質的屬性如下:首先它的Surface types是Opaque的,然后呢,它的Material types選擇到Specular Color。
為了呈現出鏡面拋光的感覺呢,我將Smoothness值調整到了1,如果是Specular Color的材質類型的話,會在shader的Surface Inputs中多出一行Specular的貼圖設置以及顏色設置。
拋光金屬會立即吸收任何透射光,因此它們不會出現任何次表面散射或透明感。
— 皮膚 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LitTessellation”
這個皮膚材質的屬性如下:首先它的Surface types是Opaque的,然后呢,它的Material types選擇到Subsurface Scattering。
之后會在Surface Inputs會多一項Diffusion Profile(擴散曲線)的配置文件調用接口,如果你想創建Diffusion Profile,可以在Assets > Create > Rendering > Diffusion Profile,需要使用的話,可以添加到HDRP配置文件中的Diffusion Profile List里面。
然后還有Subsurface Mask貼圖以及參數接口,以及Thickness(厚度)參數接口。
— 透明塑料 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“Lit”
這個塑料材質的屬性如下:首先它的Surface types是Transparent的,然后呢,它的Material types選擇到Translucent,Translucent下的Lit Shader會生成一組Refraction Inputs設置,并將它之下的Refraction Model開啟,并將模型設置成為Sphere(球體),當開啟Refraction之后,Smoothness貼圖就將能控制這個透明材質的可見度。
— 泥土沙石 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LitTessellation”
這個石頭材質的屬性如下:首先石頭的Surface types是Opaque的,然后呢,它的Material types就選默認的Standard,石頭的設置和木材是一樣的,不過為了獲得更加豐富的細節,用Hight Map將埋在土里的小石子逼真的刻畫出來。
— 電鍍 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LitTessellation”
這個電鍍材質的屬性如下:首先它的Surface types是Transparent的,然后呢,它的Material types選擇到Iridescence,Iridescence下的Lit Shader會生成一組Iridescence設置,彩虹色的遮罩貼圖和參數調節,還有就是彩虹色的遮罩厚度和參數調節。
— 布料 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“Lit”
這個布料材質的屬性如下:首先它的Surface types是Opaque的,然后呢,它的Material types選擇到Anisotropy,Anisotropy下的Lit Shader會在Surface Inputs下生成一個Tangent Map(切線貼圖)的接口以及Anisotropy參數設置條以及Anisotropy貼圖接口。
— 絨毛 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LitTessellation”
這個絨毛材質的屬性如下:首先它的Surface types是Opaque的,然后呢,它的Material types選擇到Anisotropy,然后通過Hight Map的曲面細分,讓材質有絨毛的感覺~。
— 分層材質 —
上傳視頻封面
?
好的標題可以獲得更多的推薦及關注者
在“ 著色器”下拉菜單中,選擇“ HDRP”>“LayeredLit”
在使用LayeredLit之后,會比Lit多一行Layer相關的設置,可以在Layer Mask上添加一張有RGBA通道的Mask貼圖,將Layer Count設置成四個通道,這樣,Layer List就會出現4個材質的接口,你可以直接拖入已經設置好的材質(修改這些材質的參數并不會影響原有的這些材質),或者直接在下面四個Layer里面設置也可以的。
這是我在使用的這張MASK貼圖,顯示在PS中的通道視圖,這樣看就很清晰明白了,白色代表每一個通道的顯示區域,把所有的白色部分組合在一起時候,就能成為一張完整的貼圖。HDRP 在Main Layer之上按順序渲染第1層,第2層和第3 層,通過Layering Options里的Opacity也可以讓層級之間的材質相互混合。
— 分層Planar—
這是Layered Lit的拓展功能,將Base UV Mapping設置為Planar,將貼圖的World Scale設置保持和地形或者其他Object的貼圖一致,這樣的話,比如,在做室外場景的時候,有樹根或者石塊什么的,插在地形上面的情況時,就能和地形Terrain完美的結合了。
好了,這次的Lit Shader的基本功能介紹就到這里啦~
原文鏈接:https://connect.unity.com/p/hdrp-pbr-lit-shader-yi-ji-chu-yong-fa-pian?app=true
發現更多干貨資源,歡迎戳上方鏈接,下載Unity官方app!