、私はGLSL 4.2で次の操作を実行したいと思います: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で何とかできますか?もしそうなら、このコードでどのように使わなければならないのでしょうか?
大丈夫 - まだthoght。説明をいただきありがとうございます。はい、私はブレンドをしようとします。私はImageAtomicAdd(..、vec4(someColor、1.0f))を使うことができ、ピクセルを.a値で区切って読み込むこともできますが、ピクセルは最初に既に色と重量を持っているという問題があります。 0と1の間のどこか – user1282931
@ user1282931:ブレンドをしようとしている場合、なぜ同じ値に複数のフラグメントが書き込まれていますか? –
反射マップ上にある程度逆投影されています。レンダリングされた反射は、オブジェクトノーマルのピクセルと同様に存在し、これからリフレクションマップは近似されるべきである - したがって、複数のフラグメントが同じ反射テクセルにマッピングされ、ノイズを避けるために、 – user1282931