OpenGL Blending; Worauf genau beziehen sich Quellfarbe und Zielfarbe mit Beispielen

8

Ich bin verwirrt, was genau das bedeutet:

  

Beim Mischen für einen bestimmten Puffer wird die Farbe aus der Fragmentausgabe als Quellfarbe bezeichnet. Die aktuell im Puffer befindliche Farbe wird als Zielfarbe bezeichnet.

( aus dem OpenGL-Wiki )

Ich verstehe, was die Blending-Gleichung selbst ist, aber ich verstehe nicht ganz den Unterschied zwischen Quellfarbe und Zielfarbe .

Kann jemand ein Beispiel oder eine genauere Definition geben?

    
johnbakers 23.04.2013, 12:51
quelle

2 Antworten

8

Um es kurz und einfach zu halten:

  • Quellfarbe: Dies ist die Farbe, die Sie gerade verwenden. Wenn Sie beispielsweise glColor4f(...) verwenden, legen Sie die Quellfarbe der Operation fest.
  • Zielfarbe: Dies ist die Farbe des Fragments (Pixel, wenn Sie es so sehen wollen, obwohl es nicht unbedingt dasselbe ist) in einer bestimmten Koordinate im Videopuffer.

Normalerweise ist der Grund, warum man verwendet:

%Vor%

Dies ist, weil Sie den Alpha-Wert verwenden möchten, den Sie gerade geliefert haben. Sie verwenden es, um Ihre aktuelle Farbe zu multiplizieren, und verwenden Sie dann (1 - Alpha) und verwenden Sie es, um die aktuelle Farbe des Puffers in dieser Koordinate zu multiplizieren.

Wenn Sie also ein Quad mit glColor4f (1.0f, 1.0f, 1.0f, 0.6f) malen und der Puffer mit glColor4f (1.0f, 0.0f, 0.0f, 1.0f) gefüllt wird, wird die letzte Operation ausgeführt sei:

%Vor%

Also ist die endgültige Farbe (1.0f, 0.6f, 0.6f)

    
h4lc0n 23.04.2013, 13:40
quelle
1

In Desktop-OpenGL kann der Fragment-Shader mehrere Farben ausgeben , nicht nur einen. Jede Farbe ist nummeriert, und jede dieser Zahlen wird einem Ausgabepuffer im Framebuffer zugeordnet, basierend auf glDrawBuffers .

Das Mischen erfolgt unabhängig zwischen der Ausgangsfarbe jedes Fragment-Shaders und der aktuell im Zielbild gespeicherten Farbe. Wenn Sie also zwei Farben schreiben, würde das Mischen zwischen der ersten Farbe und ihrem Bild und dann zwischen der zweiten Farbe und ihrem Bild stattfinden.

Für jede Mischoperation ist die Quellfarbe die Farbe, die der Fragment-Shader in die Ausgabevariable geschrieben hat. Die Zielfarbe ist die Farbe aus dem Framebuffer-Bild, die der jeweiligen Fragment-Shader-Ausgabe entspricht (basierend auf dem glDrawBuffers -Mapping). Die Quellfarbe (n) stammen also vom Fragment-Shader und die Zielfarben stammen aus dem / den Framebuffer-Bild (er).

    
Nicol Bolas 23.04.2013 13:25
quelle

Tags und Links