Mit Bild Laden und Speichern, würde Ich mag die folgende in GLSL 4.2 tun:GLSL 4.2 Bild Lade- und Speicher & Memory
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);
der Wert für ‚uv‘ gleich für mehrere gerasterte Pixel betragen. Um das richtige Ergebnis zu erhalten, möchte ich natürlich keine andere Schattendarstellung in mein Pixel zwischen den Aufrufen von imageLoad() und imageStore() schreiben;
Ist das irgendwie mit MemoryBarrier möglich? Wenn ja, wie muss es in diesem Code verwendet werden?
in Ordnung - schon so thoght. vielen Dank für die Aufklärung. ja ich versuche zu mischen. Ich könnte ImageAtomicAdd (.., vec4 (someColor, 1.0f)) und beim Lesen der Pixel durch ihre .a-Wert teilen - aber das Problem ist, dass die Pixel anfangs bereits eine Farbe sowie ein Gewicht haben, und dieses Gewicht ist irgendwo zwischen 0 und 1 – user1282931
@ user1282931: Wenn Sie versuchen, Blending zu tun, warum haben Sie mehrere Fragmente auf den gleichen Wert schreiben? –
ist es eine Art Rückprojektion auf eine Reflexionskarte. die gerenderte Reflexion ist ebenso vorhanden wie die Objektnormale perpixel und daraus sollte eine Reflektionskarte erstellt werden - so können mehrere Fragmente auf das gleiche Reflektions-Texel abgebildet werden und um Rauschen zu vermeiden, möchte ich Blending verwenden – user1282931