Unity 之 ShaderGraph 模擬“吃雞”海面效果入門級教程
- 前言
- 一,效果展示
- 1.1 模擬海面
- 1.2 夜晚海面
- 1.3 風平浪靜
- 1.4 波光粼粼
- 二,原理介紹
- 三,實作效果
- 3.1 準備作業
- 3.2 顏色部分
- 3.3 表面光澤
- 3.4 法線部分
- 四,使用示例
- 4.1 應用實體
- 4.2 模擬海面
- 4.3 引數分享
- 五,完整圖示
前言
若你的工程還沒有進行基礎配置,請查看我的博文Unity 之 ShaderGraph入門使用詳解,按照步驟操作完成配置即可,還能順便學習一下基礎操作流程哦~
本文手把手教你制作“吃雞”水面效果,入門級教程,還不快動手試試?有經驗的童鞋可以直接跳到最后一步,按照圖示搭建即可,
一,效果展示
老規矩,直接上效果圖:
1.1 模擬海面

1.2 夜晚海面

1.3 風平浪靜

1.4 波光粼粼

沒學習Shader Graph之前:我靠😱 !這效果有點牛啊,那個大佬寫的?
學習了Shader Graph之后:我去😒 !就這?豈不是有手就行?
PS:四種效果是用一個Shader實作的,文末有引數設定,完成后一定要自己除錯下引數,沒準你可調節出更好的效果哦~
二,原理介紹
通過兩種不同速度,不同方向的頂點偏移,達成水面波動的效果,然后將兩種法線貼圖進行融合,主要節點:Positon,Tiling And Offset,NormalStrength,NormalBlend:

然后通過顏色,表面光澤等屬性調整完成海面效果,
三,實作效果
3.1 準備作業
在Project面板右鍵 --> Create --> Shader --> PBRGraph(我這里命名為“WaterPBRGraph”),然后雙擊打開編輯器面板:

準備作業完成,整體實作步驟分為三部分,1.顏色控制,2.法線,3.表面光澤,下面一個個實作:
3.2 顏色部分
創建兩個Color顏色節點(設定為公開屬性,分別命名為”MainColor“和"Color"),然后創建Lero將兩個顏色進行差值計算,創建Fresnel Effect菲涅爾節點作為差值,連接關系如下圖:

3.3 表面光澤
創建一個Vercotr1節點,并設定為公開屬性,命名為“Smoothess”,將其和主節點的Smoothess相連即可:

預覽圖如下:

3.4 法線部分
-
重組頂點
我們需要通過模型的X,Z軸的頂點的進行偏移模擬水面的波動,所以需要通過對Position節點進行Split拆分,然后使用Combine節點進行重新組合:

PS:(X,Y,Z,W) 與 (R,G,B,A) 一一對應, -
設定動態偏移
通過Time節點和Vecror2節點(X=-1,Y=0)的相乘Multiply得到一個動態的Vector2,由于我們需要從外部控制速度,所以將前面Multiply節點的結果,再與Vector1節點相乘(宣告為公開屬性,命名為“Speed”,默認值1),最后將結果連接到Tiling And Offset,如下圖:

-
復制動態偏移
在原理介紹的時候我們說了,需要兩個不同的動態偏移,所以,將2步驟創建的所有節點全選,然后快捷鍵C,V復制出來一份,然后將Vecror2節點的輸入修改為(X=1,Y=0.3)

-
頂點偏移連接
將1步驟中拆分計算后的頂點Combine輸出連接到兩個Tiling And Offset的UV上:

-
控制Tiling
創建一個Vector1節點(宣告為公開屬性,命名為“Tiling”,默認值0)創建兩個Multiply乘法節點,兩個Tiling控制連接如下:

-
創建貼圖
我們使用一張貼圖兩個移動,所以創建一個Texture 2D Asset(宣告為公開屬性,命名為“MainTexture”),兩個Sample Texture 2D(將Type修改為Normal法線),然后將它們和計算過的UV連接起來:

-
控制法線強度
創建Vector1節點(宣告為公開屬性,命名為“Strength”,默認值0),創建兩個Normal Strenght法線強度節點:

-
融合法線
創建Normal Blend法線融合節點將兩個Normal Strenght節點融合起來,并連接到主節點“Normal”上:

至此全部實作步驟完成,記得"Save Asset"保存一下,
四,使用示例
4.1 應用實體
創建材質球使用剛剛保存的Shader,然后創建一個“Panel”應用材質球,并將其引數調整如下(法線貼圖在文末),即可看到效果:

4.2 模擬海面
為了模擬海面效果(開篇圖示)我復制了N個“Panel”,并將攝像機位置調整到看海的角度(小技巧:在Hierarchy面板選中攝像機,按下”Ctrl+Shitft+F“,這樣Game視圖就和Scene視圖顯示一致了)

4.3 引數分享
- 白天海面和夜晚海面:
- MainColor:(0,186,255,0)
- Color:白天白色(0,0,0,0),黑天黑色(255,255,255,0)
- Smoothess:1.2
- Speed:0.5
- Tilling:0.08
- Strength:0.6
PS:白天和夜晚的效果除了顏色不同之外還差一個平行光,白天的需要復制一個平行光,旋轉下除錯一下,即可達到開篇圖一效果
- 波光粼粼
- MainColor:(0,186,255,0)
- Color:(255,255,255,0)
- Smoothess:1.2
- Speed:0.5
- Tilling:0.08
- Strength:-4.0

- 風平浪靜
- MainColor:(0,186,255,0)
- Color:(0,0,0,0)
- Smoothess:0.65
- Speed:0.6
- Tilling:0.08
- Strength:0.1

五,完整圖示

用到的法線貼圖分享(網上找到的)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289952.html
標籤:其他
