Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果


上次我們講了ShaderGraph的配置,創建,編輯和在材質球上的使用,這節課我們通過一個實例來看一下如何用ShaderGraph快速創建一個全息效果。

全息效果

這種全息效果是通過貼圖的Offset隨時間滾動產生的,來看下在ShaderGraph中如何制作吧。

1、創建一個PBR Graph

2、我們會用到一張全息的紋理貼圖

下載此貼圖使用

3、創建一個Sample Texture 2D的Node,節點的Texture屬性選擇剛才下載的貼圖

4、要讓這張貼圖滾動起來,要使用到Tiling And Offset節點,創建一個這個節點。將Tiling And Offset節點的Output和Sample Texture 2D的UV屬性連接起來。現在你如果修改Tiling And Offset節點的Offset的Y值,就會看到貼圖能向下滾動了!

Tiling And Offset節點

5、那么如何讓Offset自動變化呢,我們可以使用內置的Time節點。 
創建Time節點並將Time(1)連接到Offset,這時候你會看到貼圖會自動滾動了。

注意:這樣其實會讓Offset的X,Y同時滾動,由於貼圖在X軸上是重復的,所以看不出來

6、這時候如果將Sample Texture 2D的輸出RGBA(4)連接到PBR Master的節點Emission(自發光)上,就能看到效果了

第一次效果

但是這效果顯然還不能達到我們的理想的效果。

7、我們想通過一個參數來控制滾動的速度。 
1) 添加一個Vector1的參數,命名為Speed,默認值設置0.1. 
2) 將這個參數拖到圖中,創建一個Multiply(乘法)節點,然后將Time節點和Speed屬性節點相乘,Output拖到Offset,如下如所示。

可以看到滾動的速度變慢了

8、我們還想能控制這個全息投影的顏色。 
1) 添加一個顏色的屬性 
2) 我們想讓貼圖中越黑色的部分顏色越深,白色的部分顏色越淺。 
將顏色屬性和Sample Texture 2D的輸出RGBA(4)相乘,這樣顏色會有一個漸變的效果。 
3) 將Multiply的Out拖到PBR Master節點的Albedo和Emission上

9、由於我們的貼圖是一張RGB的灰度圖,並沒有帶透明通道,所以我們需要自己來將透明通道做出來。 
我們可以使用RGB的任意一個通道作為alpha值。同時需要將PBR Master的Surface設置為Transparent。

注意不能使用A通道,因為貼圖本身並沒有alpha通道,所以alpha通道的值會全是1。

10、最后我們還可以讓這個全息效果更好一點:目前的效果比最開始的效果條紋會細一些,可以通過添加一個One Minus節點來解決(One Minus的作用的:輸出結果為1-輸入)

這樣我們就大功告成了!就是文章開頭的那個效果。

小結

本文通過全息效果的ShaderGraph,涵蓋了輸入屬性、多個節點的知識。 
后續會有更多的實例教程,關注洪流學堂公眾號第一時間獲取。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM