前言
在Unity HDRP 世界裡面可以快速地使用Lit Shader製作玻璃材質,但是要做出真實世界裡面的玻璃效果還是需要一些小技巧,這邊會實驗利用Lit Shader 以及 StackLit Shader Graph 所製作出來的玻璃測試效果給大家看一下兩者的差別,如果需要玻璃材質的可以依照自己的需求來製作玻璃效果。
Solution A – HDRP/Lit Shader
- 首先可以點選右鍵新增Material 建立一個HDRP/Lit 的Shader ,建立完成最重要的就是先要把surface Type 改成為Transparent ,因為玻璃材質是透明的所以一定記得要改成 Transparent 。接著改一下Base color的顏色,通常玻璃的話都是設定為全黑並將Alpha調整為0,看起來就是透明的樣貌了,然後再Smoothess的部分盡量調高,我這邊是調到接近1 。

調整完以後就可以看到我們的玻璃材質看起來是一個相當透明的Material

2. 接著我們嘗試調整一些讓玻璃更真實的參數,首先將Material Tyepe 改為iridescence (虹彩效果),接著我們修改iridescence的Mask 以及Thickness map 參數調整到你覺得不會太誇張的效果。


3. 然後我們來玩看看Refraction Medol的效果,首先我們玩一下box model ,這邊可以依照真實的數據來調製refraction, 依照玻璃的效果我這邊先用1.5 ,另外如果想要讓玻璃有厚度的話可以勾選double side

以下為index的數據供大家參考

調整完以後我們可以在後面放一個物件看看折射以及反射出來的效果是否為自己所期許的。

4. 今天如果我們的玻璃是非常有份量的厚度,則我們的 Refraction Medol的效果,則可以使用Shapre效果,並可以調整index of refraction ,調整後可以發現數據越高感覺厚度越厚,而且可以在這邊改變Transmittance color 讓玻璃可以改變顏色。

大家可以在上面調整一下看看哪種效果是你需要的,這種Lit Shader是可以快速且不用貼圖即可製作出來的乾淨玻璃材質,對於製作場景來說是相當方便的一個Shader。


Solution B – Shader Graph /StackLit
1. 首先建立一個StackLit 的Shader Graph,且為了之後參數上調整方便,我們需要做很多個property以利之後不用再回到shader graph裡面調整參數。
剛建立好的StackLit 要做一些設定,一開始最重要的Surface Type 一定要換成Transparent(透明),接著勾選Iridescence(虹彩) 以及 Geometric Specular AA( 鏡面反射 )兩個選項。

2. 設定好以後我們就開始建立node,首先建立一個colorNode並設為property,這時候可以先將顏色設定為黑色並將Alpha調低並串到Master的Color,接著建立一個Split Node將剛剛的Color Node串到In並將分裂出來的A Channel串到Master的Alpha。

接著我們來建立該有的 property Node ,以下的node皆用Vector 1

Property
Color – Color Default:Black Alpha:80
Dielectric IOR -Vector 1 Default:2.5 Min:0 Max:2.5 Mode:Slider
Metallic Intensity -Vector 1 Default:0.145 Min:0 Max:1 Mode:Slider
Smoothness intensity -Vector 1 Default:1 Min:0 Max:1 Mode:Slider
Occlusion intensity -Vector 1 Default:1 Min:0 Max:1 Mode:Slider
Iridescence Mask -Vector 1 Default:0.8 Min:0 Max:1 Mode:Slider
Iridescence Thickness -Vector 1 Default:0.18 Min:0 Max:1 Mode:Slider
Specular AA Scren Space Variance -Vector 1 Default:0.1 Min:0 Max:1 Mode:Slider
Specular AA Threshold -Vector 1 Default:0.2 Min:0 Max:1 Mode:Slider

全部建立好以後就依照名字連連看即可,串連好以後記得按下Save asset 並回到Scene新建一顆材質球,並選擇剛剛建立好的shader graph

接著就可以依照自己所需要的材質需求進行調整Material了

調整好以後拿另外兩個Lit的玻璃材質做比較,StackLit的感覺更多細節

小結
Lit的方式可以快速地製作玻璃材質,也可以搭配Painter Texture製作出有紋理或是髒汙的材質效果,但是因為在3.3版本後Lit玻璃材質常常會出現問題,如果有需要給軟體使用的玻璃材質建議還是使用Shader Graph 製作,目前測試沒有問題。
參考資料:https://youtu.be/XTnobfLSTV0