Unity Shader Graph 實驗室

Unity2018 Shader Graph 實驗室

Tips:
-- 在shader forge和amplyfy Shader節點圖形化shader編程的誘惑下,unity官方終於在2018版本也推出了而自己shader節點可視化編程工具Shaderr Graph。本篇文章是對Shader Graph一些效果的嘗試,建議學習shader的朋友也嘗試下這些工具,對shader的理解會更加直觀
-- 效果中自發光光暈是使用的PostProcess中bloom,須自行添加
-- 圖看不清,右擊在標籤頁中打開
-- 想要自發光更炫,Color屬性節點開啓HDR模式

目錄

  1. bilibili小電視
  2. 光劍
  3. 火焰卡牌

1.Bilibili小電視([]~( ̄▽ ̄)~*

效果

 

enter description here

BILIBILI

 

節點圖

 

節點圖

節點圖

 

效果說明

該效果主要分爲三個部分:

  1. 紅色部分,通過一個紋理與一個顏色相乘來作爲其基礎效果。
  2. 紫色部分,邊緣高光,通過一個菲涅爾節點和顏色相乘賦給自發光。
  3. 黃色部分,隨時間的扭曲和剔除,通過Step階梯點和Twirl扭曲節點實現,Noise節點輔助產生扭曲條紋狀效果。

節點說明

名稱說明
Fresnel 菲涅爾反射,簡單來說就是表面與視角越是平行,則高光效果越明顯 (Unity就不能出個中文文檔嗎,哭enter description herehttp://api.unrealengine.com/CHN/Engine/Rendering/Materials/HowTo/Fresnel/index.html
Step 如果輸入In大於等於輸入Edge,返回1,否則返回0
Twirl 將類似於黑洞的旋轉扭曲效果應用於輸入的UV。扭曲效果的中心參考點由輸入參數Center決定,效果的整體強度由輸入參數Strength決定。輸入Offset可用於偏移結果的各個通道。
Position 獲取mesh的頂點或片段的位置。可選的空間有Object, View, World, Tangent。(我們使用該位置爲世界座標下的位置,作爲Twirl的中心點位置)
Time 可以獲取Unity中的時間值。

2.光劍(願原力與你同在QAQ)

效果

 

enter description here

sword

 

節點圖

 

enter description here

enter description here

 

效果說明

該效果主要分爲三個部分:

  1. 紅色部分,通過Positon的object即模型座標下的Y方向Step來獲得溶解效果。
  2. 紫色部分,通過Noise,時間節點作用於UV與模型Position相加,給與模型沿着Y軸抖動的效果。
  3. 黃色部分,一個簡單的自發光。

節點說明

名稱說明
Position 區別於上次,這次我們使用的Object座標下,即模型空間下獲取模型自身的頂點位置屬性
Split 分割,將一個多維向量分割成多個1維的數值。如果輸入的向量小於4維,不夠的維度會使用默認值分別是 (0, 0, 0, 1)。
Gradient Noise 漸變噪點,基於輸入的UV生成一個漸變噪點圖(Perlin噪點)。Scale可以控制噪點圖的大小。
Tiling And Offset 平鋪和偏移,這個功能我們會經常用到,一般只要有貼圖的材質上都會有Tiling And Offset。將輸入參數UV的值,通過Tiling和Offset改變平鋪和偏移。

3.地獄之門(願火焰進化一切)

效果

 

enter description here

Fire

 

節點圖

 

火焰

火焰

 

效果說明

UV偏移與發光不在贅述,該效果的要點是邊緣部分的與原來顏色疊加,這樣火焰enter description here的邊緣亮度更高,下過更好。這裏我們主要通過不同Step後的圖作差值來獲取邊緣。
黃色:紋理取樣
藍色:遮罩
紅色:UV偏移

節點說明

名稱說明
One Minus 1減去,因爲紋理像素對應 0~1,所以可以使用該節點做取反操作
Add 相加,這裏我們通過相加來混合邊緣顏色和原有顏色,也在cutoff剔除的時候加了些,防止將邊緣部分剔除
Subtract 相減,我們通過兩個不同Step截取後的圖相減,從而獲得他們的插值部分,即人爲獲取一定邊緣部分

4.火焰卡牌(快進來坐吧,酒館裏可熱鬧了)

效果

 

enter description here

MaskCard

 

節點圖

 

節點圖

節點圖

 

效果說明

像卡牌中流動的效果和前面用到的一樣,都是通過控制UV和噪聲圖來達到的。諸如流水,岩漿,魂魄,霧靄都可以通過這樣的方式實現。這個效果比較簡單,如果通過多層通道控制遮罩效果,每個遮罩下有不同的特效,我們就可以做出看起來炫酷的效果了。

節點說明

這個效果實現比較簡單,需要說明的如若需要多個遮罩效果,可以放在一張圖的不同通道下做遮罩。R,G,B,A四層可以做四個遮罩圖,這樣更能節省資源。然後通過Mask節點來提取不同的遮罩,在控制不同遮罩的效果,我們就能做出更加炫酷的特效。

5.序列幀動畫(一切盡在卡牌中)

效果

 

序列圖

AniNum

 

 

效果

AniFram

 

節點圖

 

節點圖

aniframe

 

效果說明

該效果主要實現了序列幀動畫,想通過animatior的方式將分割好的序列幀圖片播放一樣。可以實現讀數,火焰,翻頁一些效果。

節點說明

名稱說明
Ceilling 返回大於或等於輸入值的最小整數。(floor:返回小於或等於輸入值的最小整數;round:返回最接近輸入值的整數)
Flipbook 將UV分割成若干份width列,height行,通過Tile作爲索引來控制UV偏移,實現類似翻頁等效果

6.血瓶(🤫喝完這杯,還有三杯(。・∀・)ノ゙嗨)

效果

 

enter description here

bloodpot

 

節點圖

 

enter description here

bloodpot

 

 

enter description here

b01

 

 

enter description here

b02

 

效果說明

該效果模擬血瓶的樣式,主要分爲玻璃瓶和瓶內液體兩個部分。瓶內液體分別使用泰森多邊形Voronoi節點和simplenoise節點製作出上方的波浪和下方粘稠液體的效果。玻璃瓶則是使用Elipse節點和distance節點繪製出環形的效果實現,其中的高亮⚪點也是通過Elipse縮放偏移後達到的。

節點說明

程序化圖像節點可參考: 程序化節點

名稱說明
Voronoi 維諾圖,分型細胞細胞一樣的效果,可以模擬波浪,晶體塊等效果。(參考
Elipse 圓形,可設置UV方向徑向寬度做出橢圓等
Distance 距離,熱度圖等效果中可以用到
Remap 將輸入值映射到另一範圍(該效果中通過重新映射distance模擬出了瓶體漸變效果)
SimpleNoise 簡單噪聲圖
Spherize 球面UV(儘管使用該材質的網格是片,通過球面UV還是模擬出了液體在球體玻璃中扭曲的效果)

 

7.星系(我的能量,無窮無盡)

效果

 

節點圖

 

 

 

 

節點說明

這裏通過worldpositon-cameraposition來獲取視線向量,並傳給samplecubemap的viewdir來讓cubemap

名稱說明
Position 獲取mesh的頂點或片段的位置。可選的空間有Object, View, World, Tangent
Camera 獲取和相機相關的信息,如位置,方向,切平面等
Sample Cubemap 根據輸入參數View Direction和Normal進行cubemap採樣。可以設置LOD作爲LOD採樣級別。
   

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章