画像の読み込みと保存を使用して、GLSL4.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()の呼び出しの間に他のshaderexecutionがピクセルに書き込みを行わないようにします。
これはmemoryBarrierでどういうわけか行うことができますか?もしそうなら、それはこのコードでどのように使用されなければなりませんか?