使用图像加载和存储,我想在 GLSL 4.2 中执行以下操作:
vec3 someColor = ...;
vec4 currentPixel = imageLoad(myImage, uv);
float a = currentPixel.a/(currentPixel.a+1.0f);
vec4 newPixel = vec4(currentPixel.rgb*a+someColor*(1.0f-a),currentPixel.a+1.0f);
imageStore(myImage, uv, newPixel);
对于多个光栅化像素,“uv”的值可以相同。为了获得正确的结果,我当然不希望在 imageLoad() 和 imageStore() 的调用之间写入我的像素;
这可能以某种方式与 memoryBarrier 一起做吗?如果是这样,它必须如何在此代码中使用?