自定义着色器效果

自定义着色器效果

[更新]:论坛中分享了一些非常酷的着色器 这里这里

今年 Corona 的主要主题之一是图形,特别是让您更多地“深入了解”我们的图形引擎。

片段/顶点内核

从每日构建 2015.2560 开始,我们让您能够创建自定义着色器效果。如果您熟悉用 GLSL-ES 编写着色器,那么您在 Corona 中编写着色器时会感到宾至如归。

我们对事物进行了结构化处理,因此您无需编写完整的着色器程序。相反,您编写我们称之为内核的 GLSL-ES 着色器代码片段。您编写一个顶点内核,而不是完整的顶点着色器程序;您编写一个片段内核,而不是完整的片段着色器程序。

这样,您可以专注于创建和实现酷炫的视觉效果,而无需担心周围的脚手架。事实上,我们对 Corona 中所有内置着色器效果都使用了完全相同的系统。

基于 Web 的着色器游乐场

为了让这更容易,我们创建了一个Corona 着色器游乐场,您可以在其中直接从浏览器中播放/试验 Corona 自定义(片段)着色器!

(注意:需要 WebGL 才能看到预览。如果您的浏览器没有适当的支持,您将只能看到代码,没有预览。)

以下是一些您可以编辑的片段内核的实时示例(只需单击代码框)。我们在这里提供的内联示例只是对游乐场允许您执行的操作的部分了解 —— 单击“在游乐场中打开”,您将获得完整的体验,例如改变参数、更改纹理等。

这是一个基本的“Hello World”片段着色器(您的浏览器中需要 WebGL 支持)

片段内核函数会为每个像素调用,以确定“着色”像素的颜色。在上面的示例中,着色器始终返回红色,这就是为什么整个形状都变成红色的原因。正如注释建议的那样,尝试修改上面的代码以使用不同的颜色并实时预览结果。

这是一个稍微复杂的着色器

此示例通过将纹理坐标值映射到“红色”和“绿色”通道,并使用时间来改变“蓝色”通道来实现其效果。

这两个片段内核都是生成器的示例,因为它们以程序方式生成纹理(未使用源图像纹理)。

游乐场中有更复杂的着色器效果示例,例如

资源

准备好开始玩了吗?以下是您入门所需的一切

walter
12 条评论
  • Lerg
    发布于 10:46, 4月15日

    这太酷了。游乐场也让事情变得容易得多。

  • Kiffin Ayers
    发布于 18:46, 4月15日

    继续前进!感谢所有好东西!

  • Andreas
    发布于 03:00, 4月16日

    好东西!我喜欢这个游乐场!

    问题

    您是否在 iOS/Android 设备上进行了一些性能测试?

    这有多大的影响(我记得我之前使用模糊滤镜时性能下降得很厉害)?是否有可能估计影响,还是只能在受信任的旧设备上进行设备测试?

    感谢您为我们提供这样的东西,
    最好的,
    Andreas

    • Walter
      发布于 10:08, 4月16日

      是的,设备测试是不可替代的,但有一些最佳实践,我们列出了一些。

      一般来说,模糊滤镜速度很慢,因为它们依赖于纹理读取——我们建议您避免使用它们

      https://docs.solar2d.cn/daily/guide/graphics/customEffects.html#avoid-dynamic-texture-lookups

      • Andreas
        发布于 11:01, 4月16日

        哦,伙计,我太兴奋了,以至于我根本没有看到您在开头发布的指向效果指南的链接。

        我应该 RTFM – 谢谢您的耐心!

        来自慕尼黑的问候,
        Andreas

  • ojnab
    发布于 00:22, 4月17日

    好东西。我真的很喜欢 CL 目前的开放方式……包括这些东西和开源插件。请继续努力。

  • Icyspark
    发布于 04:31, 4月17日

    请访问https://www.shadertoy.com,查看一些惊人的着色器以及代码,以帮助您入门。

    注意:我必须在 OSX 上使用 Firefox 才能使其正常工作,因为即使启用了“启用 WebGL”,Safari 也存在问题。

    • Lerg
      发布于 12:32, 4月21日

      Chrome 运行良好。

  • Antheor
    发布于 12:47, 4月17日

    使用第一行 CoronaSampler0( ); CoronaSampler1( ); h

  • Antheor
    发布于 12:48, 4月17日

    ...没有效果(抱歉重复发帖)

  • Antheor
    发布于 02:18, 4月19日

    哦!谢谢😉