引言:本篇博客主要記錄ShaderForge的常用案例,包括外發光、火焰燃燒、溶解、扭曲等效果。由於內容較多會分成幾篇博客記錄。如果您對Shader Forge的常用操作還不熟悉,請先看 Unity3D Shader Forge 入門學習(一)。剛開始學習時,可以先不用固執的探究爲什麼節點要這麼連接,可以先以效果爲目的,然後再慢慢地優化連接方式,熟悉節點作用。
開發版本:Unity 2017.1.1f1
適合人羣:瞭解ShaderForge常用操作
目錄:
節點作用查看方式:
右鍵點擊“What does Texture 2D do?”
隨即打開官方的Shader Forge節點介紹網址
外發光及光暈效果
簡介:使用Fresnel節點實現外發光效果,通過Post processing Stack後處理插件,實現光暈效果
注意:Fresnel外發光效果適合較爲圓潤的對象,而Cube這種棱角分明的對象不適合
Post processing Stack是官方免費插件,可以在Assets Store上下載,適合PC端,不適合移動端,需要適配移動端可以使用 Moblie Post processing插件。
效果如下:
Inspector面板顯示如下:
節點連接情況如下圖所示:
在資源商店上下載Post processing Stack,並導入Unity中
創建Post-Processing Profile:
勾選Bloom選項,可以使得場景中對象的HDR值超過Threshold值
在主攝像機上掛載Post Processing Behaviour腳本,將剛纔創建的Post-Processing Profile,掛載在Profile上。
**P.S.**如果Scene場景中沒有顯示出光暈效果,需要勾選Image Effects。
火焰效果
使用 UV Coordinates節點實現紋理的運動效果,結合Distance節點實現遮罩效果,在使用Step和Subtract節點實現火焰邊緣的效果。最後還是通過post processing stack插件實現光暈效果,如下所示:
Inspector面板顯示如下:
使用紋理如下,建議使用紋理稍微連貫一點的,不會有明顯的分界邊緣
節點連接情況如下所示:
溶解效果
效果演示:
Inspector面板顯示:
使用的漸變貼圖如下:
節點連接情況:
可以通過腳本動態控制對象溶解效果
public class DissolutionCtr : MonoBehaviour
{
public float smooth = 0.2f;
private MeshRenderer meshRenderer;
private float intensity;
private bool forward = true;
private void Start()
{
meshRenderer = gameObject.GetComponent<MeshRenderer>();
}
private void Update()
{
if (forward)
{
intensity += Time.deltaTime * smooth;
if (intensity > 1.0f)
forward = false;
}
else
{
intensity -= Time.deltaTime * smooth;
if (intensity < 0)
forward = true;
}
//SetFloat用於設置溶解的程度
meshRenderer.material.SetFloat("_Intensity", intensity);
}
}
扭曲效果
主要通過折射背景像素的屏幕空間UV偏移實現扭曲畫面,然後通過粒子系統實現類似發射波的效果,如下所示:
Inspector面板顯示:
節點連接情況如下所示:
粒子系統主要實現讓粒子間斷髮射效果即可,可以參照如下設置:
因爲使用了Vertex Color節點的Alpha通道,通過修改Color over Lifetime的透明度,可以實現發射波漸隱漸現的效果,如下所示:
Size over Lifetime的動畫曲線如下所示,隨着時間逐漸變大。需要注意Renderer一欄中的Render Mode需要修改爲Horizontal Billboard,纔可以讓粒子貼着水平表面發射。