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值,就會看到貼圖能向下滾動了!
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,涵蓋了輸入屬性、多個節點的知識。
後續會有更多的執行個體教程,關注洪流學堂公衆号第一時間擷取。