返回

30 分钟攻克 ShaderJoy 上 2233 娘魔幻弹幕效果

前端

作为一名技术博主,我很少会对图形编程的内容感兴趣,但这并不妨碍我对这款名为 ShaderJoy 的在线 GLSL 编辑器的痴迷。无论你是专业图形程序员还是初学者,这款工具都能带给你畅快淋漓的使用体验。

主角登场——2233 娘

“爽到飞起的 2233 娘” 效果正是这款工具的绝佳应用案例。如果你已经迫不及待想要了解其中的奥秘,那么就继续往下看吧。

效果剖析

这个效果的关键在于 iChannel0。这是一张由一系列连贯动作的 2233 娘组成的序列帧图像,有点像我们常看到的动画 GIF。

然后,我们会用到一个名为 time 的内建变量。它会持续累加,随着时间的推移,我们可以用它在序列帧中选取不同的帧,从而得到流畅的动画效果。

我们先用 time 除以 2233 娘序列帧的总帧数,这样我们就能得到一个在 0 到 1 之间的归一化时间值。然后,我们就可以用这个时间值在序列帧中选择正确的帧,并将它显示在屏幕上。

代码实现

首先,我们需要在 ShaderJoy 中创建一个新的项目。我们可以选择“从头开始”或“从模板开始”。我们选择“从头开始”,这样我们就需要手动创建所有必要的节点。

在节点编辑器中,我们需要创建一个“纹理取样器”节点。这个节点允许我们加载纹理并将其应用到我们的着色器中。我们将 iChannel0 连接到纹理取样器节点的“纹理”输入。

然后,我们需要创建一个“时间”节点。这个节点会输出当前时间,单位为秒。我们将时间节点连接到“纹理坐标”节点的“X”输入。

接下来,我们需要创建一个“除法”节点。我们将时间节点的输出连接到除法节点的“分子”输入,并将 2233 娘序列帧的总帧数连接到除法节点的“分母”输入。

现在,我们需要创建一个“取模”节点。我们将除法节点的输出连接到取模节点的“X”输入,并将 1.0 连接到取模节点的“Y”输入。

最后,我们需要创建一个“纹理坐标”节点。我们将取模节点的输出连接到纹理坐标节点的“X”输入,并将 0.0 连接到纹理坐标节点的“Y”输入。

现在,我们可以将纹理坐标节点连接到纹理取样器节点的“纹理坐标”输入。这样,我们就能够在屏幕上显示 2233 娘动画了。

成果展示

我们可以在 ShaderJoy 中预览效果,也可以将代码导出为 GLSL 代码,以便在其他项目中使用。

以下是在 ShaderJoy 中运行该效果的截图:

结语

希望这篇教程对您有所帮助。如果你想了解更多关于 ShaderJoy 的知识,可以访问其官方网站。那里有很多有用的资源,可以帮助你快速上手。

感谢阅读!