Unity2018 Shader Graph 實驗室
Tips:
-- 在shader forge和amplyfy Shader節點圖形化shader編程的誘惑下,unity官方終於在2018版本也推出了而自己shader節點可視化編程工具Shaderr Graph。本篇文章是對Shader Graph一些效果的嘗試,建議學習shader的朋友也嘗試下這些工具,對shader的理解會更加直觀
-- 效果中自發光光暈是使用的PostProcess中bloom,須自行添加
-- 圖看不清,右擊在標簽頁中打開
-- 想要自發光更炫,Color屬性節點開啟HDR模式
目錄
- bilibili小電視
- 光劍
- 火焰卡牌
1.Bilibili小電視([]~( ̄▽ ̄)~*)
效果

節點圖

效果說明
該效果主要分為三個部分:
- 紅色部分,通過一個紋理與一個顏色相乘來作為其基礎效果。
- 紫色部分,邊緣高光,通過一個菲涅爾節點和顏色相乘賦給自發光。
- 黃色部分,隨時間的扭曲和剔除,通過Step階梯點和Twirl扭曲節點實現,Noise節點輔助產生扭曲條紋狀效果。
節點說明
名稱 | 說明 |
---|---|
Fresnel | 菲涅爾反射,簡單來說就是表面與視角越是平行,則高光效果越明顯 (Unity就不能出個中文文檔嗎,哭![]() |
Step | 如果輸入In大於等於輸入Edge,返回1,否則返回0 |
Twirl | 將類似於黑洞的旋轉扭曲效果應用於輸入的UV。扭曲效果的中心參考點由輸入參數Center決定,效果的整體強度由輸入參數Strength決定。輸入Offset可用於偏移結果的各個通道。 |
Position | 獲取mesh的頂點或片段的位置。可選的空間有Object, View, World, Tangent。(我們使用該位置為世界坐標下的位置,作為Twirl的中心點位置) |
Time | 可以獲取Unity中的時間值。 |
2.光劍(願原力與你同在QAQ)
效果

節點圖

效果說明
該效果主要分為三個部分:
- 紅色部分,通過Positon的object即模型坐標下的Y方向Step來獲得溶解效果。
- 紫色部分,通過Noise,時間節點作用於UV與模型Position相加,給與模型沿着Y軸抖動的效果。
- 黃色部分,一個簡單的自發光。
節點說明
名稱 | 說明 |
---|---|
Position | 區別於上次,這次我們使用的Object坐標下,即模型空間下獲取模型自身的頂點位置屬性 |
Split | 分割,將一個多維向量分割成多個1維的數值。如果輸入的向量小於4維,不夠的維度會使用默認值分別是 (0, 0, 0, 1)。 |
Gradient Noise | 漸變噪點,基於輸入的UV生成一個漸變噪點圖(Perlin噪點)。Scale可以控制噪點圖的大小。 |
Tiling And Offset | 平鋪和偏移,這個功能我們會經常用到,一般只要有貼圖的材質上都會有Tiling And Offset。將輸入參數UV的值,通過Tiling和Offset改變平鋪和偏移。 |
3.地獄之門(願火焰進化一切)
效果

節點圖

效果說明
UV偏移與發光不在贅述,該效果的要點是邊緣部分的與原來顏色疊加,這樣火焰的邊緣亮度更高,下過更好。這里我們主要通過不同Step后的圖作差值來獲取邊緣。
黃色:紋理取樣
藍色:遮罩
紅色:UV偏移
節點說明
名稱 | 說明 |
---|---|
One Minus | 1減去,因為紋理像素對應 0~1,所以可以使用該節點做取反操作 |
Add | 相加,這里我們通過相加來混合邊緣顏色和原有顏色,也在cutoff剔除的時候加了些,防止將邊緣部分剔除 |
Subtract | 相減,我們通過兩個不同Step截取后的圖相減,從而獲得他們的插值部分,即人為獲取一定邊緣部分 |
4.火焰卡牌(快進來坐吧,酒館里可熱鬧了)
效果

節點圖

效果說明
像卡牌中流動的效果和前面用到的一樣,都是通過控制UV和噪聲圖來達到的。諸如流水,岩漿,魂魄,霧靄都可以通過這樣的方式實現。這個效果比較簡單,如果通過多層通道控制遮罩效果,每個遮罩下有不同的特效,我們就可以做出看起來炫酷的效果了。
節點說明
這個效果實現比較簡單,需要說明的如若需要多個遮罩效果,可以放在一張圖的不同通道下做遮罩。R,G,B,A四層可以做四個遮罩圖,這樣更能節省資源。然后通過Mask節點來提取不同的遮罩,在控制不同遮罩的效果,我們就能做出更加炫酷的特效。
5.序列幀動畫(一切盡在卡牌中)
效果


節點圖

效果說明
該效果主要實現了序列幀動畫,想通過animatior的方式將分割好的序列幀圖片播放一樣。可以實現讀數,火焰,翻頁一些效果。
節點說明
名稱 | 說明 |
---|---|
Ceilling | 返回大於或等於輸入值的最小整數。(floor:返回小於或等於輸入值的最小整數;round:返回最接近輸入值的整數) |
Flipbook | 將UV分割成若干份width列,height行,通過Tile作為索引來控制UV偏移,實現類似翻頁等效果 |
6.血瓶(🤫喝完這杯,還有三杯(。・∀・)ノ゙嗨)
效果

節點圖



效果說明
該效果模擬血瓶的樣式,主要分為玻璃瓶和瓶內液體兩個部分。瓶內液體分別使用泰森多邊形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采樣級別。 |