GLSL Shadertoy,如何存储变量数据?

GLSL Shadertoy,如何存储变量数据?,glsl,shader,webgl,Glsl,Shader,Webgl,如何对所有调用使用GLSL on中的变量 变量浮点缓冲区或vec2缓冲区2[1024]

如何对所有调用使用GLSL on中的变量

变量<代码>浮点缓冲区
vec2缓冲区2[1024]mainImage()

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


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

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

要跨帧存储shadertoy中的任何内容,必须写入纹理。为要存储的每个对象选择纹理中的位置,然后编写相应的着色器代码以进行读取

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

if (int(gl_FragCoord.x) == pixelCoordOfVariable.x &&
    int(gl_FragCoord.y) == pixelCoordOfVariable.y) {
  fragColor = valueToStore;
}
高性能和灵活的WebGL应用程序通常不使用shadertoy上的技术

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