Tips:
-- 在shader forge和amplyfy Shader節點圖形化shader編程的誘惑下,unity官方終於在2018版本也推出了而本身shader節點可視化編程工具Shaderr Graph。本篇文章是對Shader Graph一些效果的嘗試,建議學習shader的朋友也嘗試下這些工具,對shader的理解會更加直觀
-- 效果中自發光光暈是使用的PostProcess中bloom,須自行添加
-- 圖看不清,右擊在標籤頁中打開
-- 想要自發光更炫,Color屬性節點開啓HDR模式html
該效果主要分爲三個部分:編程
名稱 | 說明 |
---|---|
Fresnel | 菲涅爾反射,簡單來講就是表面與視角越是平行,則高光效果越明顯 (Unity就不能出個中文文檔嗎,哭)http://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中的時間值。 |
該效果主要分爲三個部分:api
名稱 | 說明 |
---|---|
Position | 區別於上次,此次咱們使用的Object座標下,即模型空間下獲取模型自身的頂點位置屬性 |
Split | 分割,將一個多維向量分割成多個1維的數值。若是輸入的向量小於4維,不夠的維度會使用默認值分別是 (0, 0, 0, 1)。 |
Gradient Noise | 漸變噪點,基於輸入的UV生成一個漸變噪點圖(Perlin噪點)。Scale能夠控制噪點圖的大小。 |
Tiling And Offset | 平鋪和偏移,這個功能咱們會常常用到,通常只要有貼圖的材質上都會有Tiling And Offset。將輸入參數UV的值,經過Tiling和Offset改變平鋪和偏移。 |
UV偏移與發光不在贅述,該效果的要點是邊緣部分的與原來顏色疊加,這樣火焰的邊緣亮度更高,下過更好。這裏咱們主要經過不一樣Step後的圖做差值來獲取邊緣。
黃色:紋理取樣
藍色:遮罩
紅色:UV偏移ide
名稱 | 說明 |
---|---|
One Minus | 1減去,由於紋理像素對應 0~1,因此可使用該節點作取反操做 |
Add | 相加,這裏咱們經過相加來混合邊緣顏色和原有顏色,也在cutoff剔除的時候加了些,防止將邊緣部分剔除 |
Subtract | 相減,咱們經過兩個不一樣Step截取後的圖相減,從而得到他們的插值部分,即人爲獲取必定邊緣部分 |
像卡牌中流動的效果和前面用到的同樣,都是經過控制UV和噪聲圖來達到的。諸如流水,岩漿,魂魄,霧靄均可以經過這樣的方式實現。這個效果比較簡單,若是經過多層通道控制遮罩效果,每一個遮罩下有不一樣的特效,咱們就能夠作出看起來炫酷的效果了。工具
這個效果實現比較簡單,須要說明的如若須要多個遮罩效果,能夠放在一張圖的不一樣通道下作遮罩。R,G,B,A四層能夠作四個遮罩圖,這樣更能節省資源。而後經過Mask節點來提取不一樣的遮罩,在控制不一樣遮罩的效果,咱們就能作出更加炫酷的特效。學習
該效果主要實現了序列幀動畫,想經過animatior的方式將分割好的序列幀圖片播放同樣。能夠實現讀數,火焰,翻頁一些效果。動畫
名稱 | 說明 |
---|---|
Ceilling | 返回大於或等於輸入值的最小整數。(floor:返回小於或等於輸入值的最小整數;round:返回最接近輸入值的整數) |
Flipbook | 將UV分割成若干份width列,height行,經過Tile做爲索引來控制UV偏移,實現相似翻頁等效果 |
該效果模擬血瓶的樣式,主要分爲玻璃瓶和瓶內液體兩個部分。瓶內液體分別使用泰森多邊形Voronoi節點和simplenoise節點製做出上方的波浪和下方粘稠液體的效果。玻璃瓶則是使用Elipse節點和distance節點繪製出環形的效果實現,其中的高亮⚪點也是經過Elipse縮放偏移後達到的。spa
程序化圖像節點可參考: 程序化節點3d
名稱 | 說明 |
---|---|
Voronoi | 維諾圖,分型細胞細胞同樣的效果,能夠模擬波浪,晶體塊等效果。(參考) |
Elipse | 圓形,可設置UV方向徑向寬度作出橢圓等 |
Distance | 距離,熱度圖等效果中能夠用到 |
Remap | 將輸入值映射到另外一範圍(該效果中經過從新映射distance模擬出了瓶體漸變效果) |
SimpleNoise | 簡單噪聲圖 |
Spherize | 球面UV(儘管使用該材質的網格是片,經過球面UV仍是模擬出了液體在球體玻璃中扭曲的效果) |