使用圖像的加載和存儲,我想這樣做在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」的值可以作爲多個光柵化的像素是相同的。爲了得到正確的結果,我當然不希望其他的sharerexecution在imageLoad()和imageStore()的調用之間寫入我的像素中。
這是可能用memoryBarrier做某事嗎?如果是這樣,這個代碼如何使用?
好嗎 - 已thoght左右。非常感謝您的澄清。是的,我嘗試做混合。我可以使用ImageAtomicAdd(..,vec4(someColor,1.0f)),並在讀取除以它們的.a值的像素 - 但問題是,像素最初已經有一個顏色以及一個重量,這個重量是介於0和1之間 – user1282931 2012-04-12 09:38:34
@ user1282931:如果您嘗試進行混合,爲什麼您有多個片段寫入相同的值? – 2012-04-12 17:43:28
它是反射映射上的一種反投影。呈現的反射以及每個像素的對象正常,並且由此反射圖應該是近似的 - 因此多個片段可以映射到相同的反射紋素,並且爲了避免我想要使用混合的噪聲 – user1282931 2012-04-12 18:44:49