Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果

引言:本篇博客主要记录ShaderForge的常用案例,包括外发光、火焰燃烧、溶解、扭曲等效果。由于内容较多会分成几篇博客记录。如果您对Shader Forge的常用操作还不熟悉,请先看 Unity3D Shader Forge 入门学习(一)。刚开始学习时,可以先不用固执的探究为什么节点要这么连接,可以先以效果为目的,然后再慢慢地优化连接方式,熟悉节点作用。

开发版本:Unity 2017.1.1f1

适合人群:了解ShaderForge常用操作

目录:

  • 外发光及光晕效果
  • 火焰燃烧效果
  • 溶解效果
  • 扭曲效果

节点作用查看方式:
右键点击“What does Texture 2D do?”
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第1张图片
随即打开官方的Shader Forge节点介绍网址

外发光及光晕效果

简介:使用Fresnel节点实现外发光效果,通过Post processing Stack后处理插件,实现光晕效果
注意:Fresnel外发光效果适合较为圆润的对象,而Cube这种棱角分明的对象不适合
Post processing Stack是官方免费插件,可以在Assets Store上下载,适合PC端,不适合移动端,需要适配移动端可以使用 Moblie Post processing插件。
效果如下:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第2张图片
Inspector面板显示如下:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第3张图片
节点连接情况如下图所示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第4张图片

在资源商店上下载Post processing Stack,并导入Unity中
创建Post-Processing Profile:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第5张图片

勾选Bloom选项,可以使得场景中对象的HDR值超过Threshold值
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第6张图片

在主摄像机上挂载Post Processing Behaviour脚本,将刚才创建的Post-Processing Profile,挂载在Profile上。
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第7张图片

**P.S.**如果Scene场景中没有显示出光晕效果,需要勾选Image Effects。
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第8张图片

火焰效果

使用 UV Coordinates节点实现纹理的运动效果,结合Distance节点实现遮罩效果,在使用Step和Subtract节点实现火焰边缘的效果。最后还是通过post processing stack插件实现光晕效果,如下所示:

Inspector面板显示如下:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第9张图片
使用纹理如下,建议使用纹理稍微连贯一点的,不会有明显的分界边缘
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第10张图片
节点连接情况如下所示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第11张图片

溶解效果

效果演示:

Inspector面板显示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第12张图片
使用的渐变贴图如下:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第13张图片
节点连接情况:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第14张图片
可以通过脚本动态控制对象溶解效果

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();
    }

    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面板显示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第15张图片
节点连接情况如下所示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第16张图片
粒子系统主要实现让粒子间断发射效果即可,可以参照如下设置:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第17张图片
因为使用了Vertex Color节点的Alpha通道,通过修改Color over Lifetime的透明度,可以实现发射波渐隐渐现的效果,如下所示:
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第18张图片
Size over Lifetime的动画曲线如下所示,随着时间逐渐变大。需要注意Renderer一栏中的Render Mode需要修改为Horizontal Billboard,才可以让粒子贴着水平表面发射。
Shader Forge 入门学习(二) 实现发光、火焰燃烧、溶解、扭曲效果_第19张图片

你可能感兴趣的:(U3D插件学习,图形渲染)