哈利把他的“业余”时间都用再学习VFX和着色器

哈利把他的“业余”时间都用再学习VFX和着色器

Unity 邀请其高级用户社区分享他们使用 Unity 的见解、技巧和技巧。 本期,来自 Jumpship Studio 的 Harry Alisavakis 将为大家带来一些 Unity 的使用技巧。

如果你还不了解Harry,你可以通过本文的案例来了解他。 无论何时何地,他周围的一切都与着色器有关。

Harry 是即将推出的游戏 Somerville 的技术总监,他利用“业余时间”学习 VFX 和着色器。 他每周都会发布有关游戏开发的“技术艺术”推文,鼓励创作者更多地了解着色器的应用。

以下是 Harry 最新作品的一些剧照。 你可以在他的作品集中找到更多作品。

以下是使用 Unity VFX 和着色器的一些技巧,由 Harry Alisavakis 总结:

粒子系统时间轴

让我们从一些 VFX 技巧开始介绍。 虽然粒子系统效果之间的计时可能有点复杂,但实际上有一种使用时间轴迭代视觉效果的简单方法。

在 Unity 中unity 顶点着色器,时间轴内置了对粒子系统的支持,因此不需要自定义脚本。 只需将粒子系统拖放到时间轴中即可实现平移。

将这些时间线与动画或任何其他时间线相结合将使您能够更好地同步所有单独的动画元素以创建一些非常有趣的 VFX。

自定义顶点流

当我们使用粒子系统和自定义着色器时,有一种非常有趣的方式可以事半功倍——自定义顶点流。

我们可以使用自定义顶点流来获得更高级的粒子效果。

众所周知,Unity 中的渲染模型由包含顶点的三角形组成。 这些顶点保存着模型的所有基本信息,例如它们各自的位置、UV 坐标和顶点颜色。

我们可以将任何类型的任意数据添加到顶点并在自定义着色器中使用它。 这就是粒子系统中自定义顶点流的美妙之处:我们可以将与粒子相关的信息传递给顶点,并且仅在需要时使用它。

通过添加自定义顶点流我们可以找到粒子系统下的渲染器模块。 启用此功能将显示所有使用的顶点流,例如 UV 坐标和顶点颜色等。

进入着色器图表

最后,让我们使用着色器图为我们的粒子系统制作一个简单的融合着色器。 这里我们指的是 alpha 裁剪非自发光双面通用渲染管线 (URP) 着色器。 这里要注意的是驱动溶解效果的因素硬件设备,这是 UV 的第三个组成部分。

您可能想知道这是为什么UI界面,特别是因为我们倾向于使用 UV 坐标通过 x 和 y 分量进行纹理采样。

原因其实很简单。 这样做可以让我们看到数据存储在每个数据流名称旁边的位置。

例如,一个新流存储在 TEXCOORD0.z 中unity 顶点着色器,它对应于第一个纹理坐标通道(也称为 UV0.z)的第三个分量。 通过添加粒子的生命周期年龄百分比函数,该值将从零开始,并在粒子的生命周期内向一移动。 着色器使粒子能够随时间溶解。

但是,如果我们想更好地控制粒子的寿命怎么办? 生命周期百分比开始发挥作用,但它是相当线性的,对于创建更复杂的效果不是很有用。 解决方案在于自定义数据模块:

我们可以用 Custom1.x 替换生命周期百分比,这反过来又允许我们使用曲线来更改粒子生命周期值。

现在我们可以更好地管理我们的粒子如何随时间溶解。

当然,还有更多数据可以传递给自定义顶点流。 这使我们更有可能在我们的自定义着色器中使用此功能。