如何在上使用GLSL中的变量https://www.shadertoy.com/new给所有人打电话?
为每个mainImage()
调用清理的变量float buffer;
或vec2 buffer2[1024];
。
是的,我可以将数据保存到视频缓冲区fragColor = data;
并获得vec3 buf = texture(iChannel0, fragCoord / iResolution.xy).rgb;
,但这太难了。
如何将数据保存为正常变量并使用它?
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上的技术。
如果你看到这个shadertoy着色器;普通的";选项卡中,您将看到常量,它们定义了存储变量的像素。然后您可以在代码中查找这些常量的用法。