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

问题描述 投票:0回答:1

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

float buffer;调用清除[变量vec2 buffer2[1024];mainImage()

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

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

glsl shader webgl
1个回答
0
投票
Shadertoy不支持存储变量。这就是重点。 Shadertoy是一个有趣的难题,它是

“如何仅用像素位置和时间作为输入的函数来制作漂亮的图片”。这并不是最佳实践或可变变量的灵活编程。困难的事实也是“ OMG!您设法在没有变量的情况下完成that!太神奇了!”

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

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

并写

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

高性能且灵活的WebGL应用程序通常不对阴影应用这些技术。     
© www.soinside.com 2019 - 2024. All rights reserved.