GL Blending
← GL Over-Operator | ● | Tiefenordnung →
Blending: Vermischung von Fragmentfarbe mit Framebuffer
Per-Fragment Operation, aber als letzte Stufe der Pipeline!
- erste Mischfarbe ist Farbe des aktuell rasterisierten Fragments
- zweite Mischfarbe ist Farbe des korrespondierenden Pixels im Framebuffer
- Interpolationsgewicht ist üblicherweise der Alpha Kanal des Fragments
Allgemeiner OpenGL Blending-Operator:
RGB′frame=FactorSRCRGBfragment×BlendFactorDSTRGBframe
Auswahl von FactorSRC (Fragment) und FactorDST (Framebuffer) aus:
GL_ONE
GL_ZERO
GL_SRC_ALPHA
GL_DST_ALPHA
GL_ONE_MINUS_SRC_ALPHA
GL_ONE_MINUS_DST_ALPHA
mit
Auswahl von Operator ×Blend aus:
GL_FUNC_ADD (standard)
GL_FUNC_SUB
GL_MIN_EXT
GL_MAX_EXT
mit
Over-Operator mit Blending:
RGB′frame=AfragmentRGBfragment+(1−Afragment)RGBframe
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD); // Nicht notwendig, da Standardeinstellung
Maximum Operator mit Blending:
Berechnet das kanalweise Maximum von Fragment- und Framebuffer-Farbe.
RGB′frame=max(RGBfragment,RGBframe)
glBlendFunc(GL_ONE,GL_ONE);
glBlendEquation(GL_MAX_EXT);
Zur Veranschaulichung hier ein vereinfachtes interaktives Beispiel in WebGL:
https://mrdoob.github.io/webgl-blendfunctions/blendfunc.html
Die Blend-Stufe ist konfigurier- aber nicht programmierbar!
← GL Over-Operator | ● | Tiefenordnung →