Computergrafik

GL Blending

GL Over-Operator | | Tiefenordnung

Blending: Vermischung von Fragmentfarbe mit Framebuffer → Per-Pixel Operation

  • 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}' = Factor_{SRC}RGB_{fragment} \quad \times_{Blend} \quad Factor_{DST}RGB_{frame}$

Auswahl von $Factor_{SRC}$ (Fragment) und $Factor_{DST}$ (Framebuffer) aus:

GL_ONE
GL_ZERO
GL_SRC_ALPHA
GL_DST_ALPHA
GL_ONE_MINUS_SRC_ALPHA
GL_ONE_MINUS_DST_ALPHA

mit

glBlendFunc(FACTOR_SRC,FACTOR_DST);

Auswahl von Operator $\times_{Blend}$ aus:

GL_FUNC_ADD (standard)
GL_FUNC_SUB
GL_MIN_EXT
GL_MAX_EXT

mit

glBlendEquation(OPERATOR);

Over-Operator mit Blending:

$RGB_{frame}' = A_{fragment}RGB_{fragment} + (1-A_{fragment})RGB_{frame}$

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

Maximum Operator mit Blending:

Berechnet das kanalweise Maximum von Fragment- und Framebuffer-Farbe.

$RGB_{frame}' = max(RGB_{fragment},RGB_{frame})$

glBlendFunc(GL_ONE,GL_ONE);
glBlendEquation(GL_MAX_EXT);
glEnable(GL_BLEND);


GL Over-Operator | | Tiefenordnung

Options: