天天看點

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

1、建立一個PBR Graph

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

5、那麼如何讓Offset自動變化呢,我們可以使用内置的Time節點。 

建立Time節點并将Time(1)連接配接到Offset,這時候你會看到貼圖會自動滾動了。

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛
注意:這樣其實會讓Offset的X,Y同時滾動,由于貼圖在X軸上是重複的,是以看不出來

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

7、我們想通過一個參數來控制滾動的速度。 

1) 添加一個Vector1的參數,命名為Speed,預設值設定0.1. 

2) 将這個參數拖到圖中,建立一個Multiply(乘法)節點,然後将Time節點和Speed屬性節點相乘,Output拖到Offset,如下如所示。

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

8、我們還想能控制這個全息投影的顔色。 

1) 添加一個顔色的屬性 

2) 我們想讓貼圖中越黑色的部分顔色越深,白色的部分顔色越淺。 

将顔色屬性和Sample Texture 2D的輸出RGBA(4)相乘,這樣顔色會有一個漸變的效果。 

3) 将Multiply的Out拖到PBR Master節點的Albedo和Emission上

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

9、由于我們的貼圖是一張RGB的灰階圖,并沒有帶透明通道,是以我們需要自己來将透明通道做出來。 

我們可以使用RGB的任意一個通道作為alpha值。同時需要将PBR Master的Surface設定為Transparent。

注意不能使用A通道,因為貼圖本身并沒有alpha通道,是以alpha通道的值會全是1。
Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

Unity2018新功能搶鮮 | ShaderGraph實戰之全息效果 - &大飛

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

小結

本文通過全息效果的ShaderGraph,涵蓋了輸入屬性、多個節點的知識。 

後續會有更多的執行個體教程,關注洪流學堂公衆号第一時間擷取。

上一篇: gcd題目