【问题标题】:GLSL Shadertoy, how to storage variables data?GLSL Shadertoy,如何存储变量数据?
【发布时间】:2020-04-15 01:41:33
【问题描述】:

如何在https://www.shadertoy.com/new 上使用GLSL 中的变量进行所有调用?

为每个mainImage() 调用清理变量float buffer;vec2 buffer2[1024];

是的,我可以将数据保存到视频缓冲区fragColor = data; 并获取它vec3 buf = texture(iChannel0, fragCoord / iResolution.xy).rgb;,但这太难了。

如何将数据保存到普通变量中并使用?

【问题讨论】:

    标签: glsl shader webgl


    【解决方案1】:

    Shadertoy 不支持存储变量。这就是重点。 Shadertoy 是一个有趣的谜题,“我如何只用一个只需要一个像素位置和时间作为输入的函数来制作漂亮的图片”。它与最佳实践或使用变量的灵活编程无关。困难的事实也是“OMG!您设法在没有变量的情况下做到that!太棒了!”

    要在 shadertoy 中跨帧存储任何内容,您必须写入纹理。您为要存储的每个内容选择纹理中的位置,然后编写适当的着色器代码来读取

    vec4 values = textureFetch(texture, pixelCoordOfVariable, 0);
    

    然后写

    if (int(gl_FragCoord.x) == pixelCoordOfVariable.x &&
        int(gl_FragCoord.y) == pixelCoordOfVariable.y) {
      fragColor = valueToStore;
    }
    

    高性能和灵活的 WebGL 应用程序通常不使用 shadertoy 上的技术。

    如果您查看this shadertoy shader 并单击“通用”选项卡,您会看到常量,它们定义了在哪些像素中存储变量。然后您可以在代码中查找这些常量的用法。

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 2023-03-12
      • 2020-05-08
      • 1970-01-01
      • 2013-07-03
      • 2019-12-31
      • 2018-02-08
      • 1970-01-01
      • 2018-04-15
      相关资源
      最近更新 更多