Unity学习笔记 Vol.62 将ShaderGraph集成到Visual Effect Graph中
摘要
使用Unity的视觉效果图,您可以将Shader Graph中的Shaders集成到您的效果中。尽管目前是一项实验性功能,但无需进行任何Shader编码即可提供增强效果效果的新机会。
在本教程中,您将学习如何在Shader Graph中创建与Visual Effect Graph兼容的Shader,探索如何将属性集成到您的效果中,以及如何使用这些属性来驱动Shader效果。为了演示这一点,本教程使用了一个烟花示例效果。
1.简介
使用Unity的Visual Effect Graph,您可以将ShaderGraph文件添加到任何输出上下文中菜单,前提是ShaderGraph中的活动主节点是可视效果节点。
设置要在“ShaderGraph”中显示的属性时,可以访问和更改“Visual Effect Graph(视觉效果图)”中每个粒子的值。通过大量定制,这为复杂的视觉效果提供了很多机会。
本教程使用了一个简单的“ShaderGraph”着色器,该着色器从“Visual Effect Graph”中创建的烟花中生成烟雾,并使用“Visual Effect Graph”中的图像遮罩粒子。
2.开始之前
有关Visual Effects Graph的介绍,请参见VFX Graph简介。
在开始本教程之前,请在Unity项目中安装高清渲染管道(HDRP)。通用渲染管线与视觉效果图兼容,但由于移动设备的性能限制而功能有限。
安装HDRP时,将自动安装Visual Effect Graph程序包。为了确保它在您的项目中,请打开“PackageManager(包管理器)”,搜索并找到“ Visual Effect Graph(视觉效果图)” 。
您还需要在Windows上的“ Edit(编辑)” > “Preferences(首选项)” >“ Visual Effects ”或在Mac上的“ Unity” > ““Preferences(首选项)” >“ Visual Effects ”中勾选“Experimental Operators/Blocks(实验运算符/块)”选项。

本教程中的指导可以应用于您自己在视觉效果图中使用粒子。要遵循本教程中使用的示例,请将Firework Sample Package导入到您的项目中。
3.将ShaderGraph集成到Visual Effect Graph中
由于本教程的重点是在视觉效果中实现着色器图,因此我们将不讨论着色器图的详细信息或创建。
集成着色器图:
首先,在“ Shader Graph”中创建一个新的VFX Shader,或者使用现有的Shader Graph创建一个新的VFX Shader,确保主节点是Visual Effects Master。右键单击该节点,并确保将其设置为活动状态。图03 显示了一个着色器图形输出,其中未激活的着色器设置为活动状态:

注意:对于没有光照的着色器,您有两个参数可供选择:颜色和Alpha。在节点的设置中选择“ 点亮”可以访问更多参数。访问更多参数可以使用更复杂的着色器,尽管仅当您的输出也使用Lit粒子时,这才对您有利。
对于要在视觉效果内部访问的参数值,请为其创建属性,并确保启用了Exposed(暴露)选项。
· 在烟花示例中,将显示Vector1,Color和蒙版Texture(纹理2D)(图04 )。

在您的视觉效果图中,找到要与着色器图一起使用的输出上下文菜单。
输出上下文菜单具有一个“ Shader Graph”参数,您可以将“ Shader Graph”文件拖放到其中。完成此操作后,公开的参数将显示在输出上下文中菜单(图05 ):

修改“ Shader Graph”参数以添加功能。
对于烟火示例,在粒子的整个生命周期中都有一条动画曲线来控制烟的不透明度。对于颜色,该示例使用通过GPU事件传递的源。遮罩图像是黑白的Unity徽标。这些参数说明了Shader Graph集成的一些可能性(图06)。

这是由此产生的烟火效果,其中Unity徽标被用作烟雾上的遮罩(图07 ):
4.后续步骤
在本教程中,您学习了如何在您的视觉效果中实现Shader Graph。您已经了解了如何在视觉效果内显示和修改不同的参数值。当您尝试控制视觉效果中的“Shader Graph”参数的方法时,更复杂的着色器将提供一个平台来利用集成的创造性应用程序。
如何使用这种积分的一个示例是溶解球体以产生卡通爆炸,甚至使用相同的几何形状以及使用着色器将气泡溶解在浓稠的液体中。另一个例子是燃烧/溶解纸张,使用视觉效果图控制页面的产生和其他功能。