還沒有太入門Shader部分,CG語言對我來說還是不好記憶,今天跟著網上的教程使用ShaderGraph制作海水的效果,覺得PBR Graph還是容易上手的,尤其對于我這樣的弱代碼人員,
首先看下本次的完成效果:

開始制作環節:
1. 打開hub管理器,新建專案,這里選擇輕量級渲染管線場景,并輸入名稱:

2. 在Hierarchy視窗依次拼接平面Plane:
3. Project里新建材質Material:

- 新建Shader:這里在Project里右擊Create - Shader - PBR Graph:并命名

***///**下面開始關鍵的步驟:繪制Graph: - 雙擊我們新建的Shader檔案,打開繪制界面:
然后找到PBR Master管理器,這是我們最后的輸出,這里我們要使用的是“Albedo”、“Normal”、“Smoothness”三個功能:

- 建立我們要使用的變數(這里的變數我們可以在外部調節):
a.兩個Color變數:命名ColorA、ColorB(設定喜歡的藍色作為海水的主色);
b.一個Texture2D變數,用來放置海水貼圖;
c. 三個Veter1型的數值變數,用來調節各強度,分別命名為:offsetSpeed(用來設定影片速度)、NormalStrength(作為法線強度)、Smooth(平滑度)、Tiling(貼圖的重復使用率):


- 在作業空白區域右擊新建節點,分別新建菲涅爾反射Fresnel Effect、線性差值Lerp節點,并將上步新建的ColorA與ColorB拖到作業區進行連接:

******///我們的UV貼圖有兩個相反方向的圖片移動效果,才能體現出水波的效果,因此我們也建立兩條管線:
補充:貼圖世界坐標(XYZW)與像素值(RGBA)對應UV關系:X-R-U,Y-G-V,Z-B,W-A; 我們的unity場景中海水面在X-Z平面上,因此 我們使用R B 對應到UV上, - 其中一條管線如下圖所示:

8.1 插入Position節點,將其使用Split節點分割為RGBA像素坐標上,注意分割后輸出的應該是R坐標與G坐標,并進行Combine結合(再轉化為R-G才能對應為U-V值),并輸入到Tiling And Offset節點上進行貼圖的重復應用;
8.2 影片要體現出“動”的效果,因此建立Time節點與方向Vector2節點,將Vector2節點的x值設定為-1(波紋方向),Time的Time(1)與Vector2使用Multiply節點相乘,再使用相乘節點乘一個我們之前設定的offsetSpeed變數用來調節幅度;并將結果輸入到上步Tiling And Offset節點的Offset埠上;

8.3 新建Sample Texture2D節點,Tiling And Offset 輸出乘以Tiling向量賦給UV埠,將Texture2D變數賦值給Texture,Tiling的輸出與變數相乘的結果輸入到UV節點,然后將得到的RGBA結果輸入新建的NormalStrength節點進行法線增強,Strength埠輸入我們之前建立的NormalStrength變數:

- 以相同的方式構建另一條貼圖管線,這里注意變換的方向應與上一步的方向相反:

- 兩條管線貼圖效果進行法線融合,并將最后結果給到Normal:

**********保存,關閉Graph
11.將建立好的Shader拖給我們建立的Water材質,并給材質附著貼圖,可以直接將下面的貼圖保存后拖到unity工程里:

- 此時左側可以觀察效果了:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/236123.html
標籤:其他
上一篇:后科技時代—賽博朋克2077
下一篇:類的建構式和解構式、默認建構式
