gpt4 book ai didi

opengl - glsl imageStore,其次是imageLoad,是否连贯?

转载 作者:行者123 更新时间:2023-12-01 15:15:06 31 4
gpt4 key购买 nike

我知道在同一分派(dispatch)的不同调用中使用 imageStore 并随后使用 imageRead 需要正确读取一致的关键字。

但是,我可以在不使用 coherent 的情况下在同一个 dispatch 中读取值吗?

或者换句话说,当我有这个时:

layout(r8ui) uniform uimage2D input_texture;
void main(){
ivec2 coords = ivec2(gl_GlobalInvocationID.xy);
imageStore(input_texture, coords, ivec4(128));
int value = imageLoad(input_texture, coords).r;
}

value 是否保证为 128,即使没有 coherent 关键字?

最佳答案

您始终能够读取着色器实例写入的值而无需 coherent 限定符只要:

  1. 没有其他着色器实例写入图像/缓冲区中的特定位置。

  2. 您正在通过写入时相同的图像/缓冲区变量读回值。两个独立的图像/缓冲区变量可以引用相同的内存地址(将相同的图像/缓冲区绑定(bind)到不同的变量)。但是不需要实现缓存通过不同变量访问同一内存。

    restrict 限定符可以用在图像变量上,以明确表明是这种情况。事实上,人们应该默认使用 restrict,除非他们明确打算通过多个对象访问同一内存。

关于opengl - glsl imageStore,其次是imageLoad,是否连贯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293051/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com