Unity 之 ShaderGraph 实现火焰效果入门级教程

举报
陈言必行 发表于 2021/09/17 23:10:18 2021/09/17
【摘要】 入门级制作教程,有手就行。虽然效果很炫酷,但实现起来很简单。一句代码都不写,制作一次,无限复用。

前言

若你的工程还没有进行基础配置,请查看我的博文Unity 之 ShaderGraph入门使用详解,按照步骤操作完成配置即可,还能顺便学习一下基础操作流程哦~
本文手把手教你制作超级炫酷的火焰效果,入门级教程,还不快动手试试?有经验的童鞋可以直接跳到最后一步,按照图示搭建即可。

一,效果展示

老规矩,直接上效果图:

没学习Shader Graph之前:我靠😱 !这效果有点牛啊,那个大佬写的?
学习了Shader Graph之后:我去😒 !就这?岂不是有手就行?


二,原理介绍

通过Tiling And Offset节点分别对Voronoi泰森多边形节点和Gradient Noise渐变噪声节点进行偏移移动,然后通过颜色,贴图各种叠加和透明度设置,从而到达模拟火苗的动态效果。


三,实现效果

  1. 准备工作
    在Project面板右键 --> Create --> Shader --> PBRGraph(我这里命名为“FlamePBRGraph”),然后双击打开编辑器面板:

  2. 让噪音动起来
    编辑区域空白处“右键” --> Create Note 创建Time时间节点,Vector2节点控制偏移(设置Y值为-0.2),Tiling And Offset铺满和偏移节点和Gradient Noise渐变噪声节点,Vector1节点控制噪音大小(设置X值为10),连接如下:

    Vector2Vector1设置为公开属性(选中节点右键选择“Convert To Property”)分别命名为"NoiseSpeed"和”NoiseScale“并将其默认值设置为-0.2和10,结果如下:

  3. 让细胞动起来
    创建Vector2节点控制偏移(将其设置公开命名为“VoronoiSpeed”,y值调整为-0.5),创建Tiling And Offset铺满和偏移节点和Voronoi泰森多边形节点,Vector1节点控制细胞密度大小(将其设置公开命名为“VoronoiCell”,默认值为2),连接如下:

    这样我们就得到了两种形式的向上移动的图像了

  4. 控制“火势”强弱
    创建Power乘方节点(控制Voronoi边缘强度)和Vector1节点用于控制幂指数(将其设置公开,命名为“Density”,默认值为1)将Vector1Voronoi连接到Power输入,如下图:

  5. 效果叠加
    创建Multiply乘法节点,将Gradient Noise节点和计算后的Power节点输出组合起来,效果如下:

  6. 加贴图加颜色
    创建两个Multiply乘法节点一个用于合并贴图一个用于合并颜色,加贴图就需要创建Texture 2D Asset(设置为公开属性,命名为”MainTexture“,赋值默认工程中图)和Sample Texture节点。加颜色就创建Color颜色节点(设置为公开属性,命名为”MainColor“,设置为HDR模式,任意赋值),将其连接如下:

  7. 最后一步
    将经过计算的Multiply乘法节点输出连接到主节点的’Albedo’和’Alpha’上,最后点击主节点的“设置”按钮,将“Surface”属性设置为“Transparent”,如下图:

记得点击左上角的"Save Asset"保存一下哦~


四,使用示例

  1. 创建材质球并使用刚制作的Shader
    这里提供一个快捷创建材质球的方法,鼠标选中我们保存的“FlamePBRGraph”文件,然后右键创建材质球,这样我们创建出来的材质球,就自动使用这个Shader了。

  2. 在“Hierarchy”面板创建Plane,并将刚刚创建的材质球赋值给它,得到结果如下:

  3. 若需要多个不同颜色或者不同形状的火焰效果,复制材质球修改公开颜色或贴图属性即可:


五,完整图示

开篇效果用到的两张贴图:

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。