In der Computergrafik sind Fragmente die Daten, die erforderlich sind, um einen Einzelpixelwert eines Zeichnungsprimitivs im Einzelbildpuffer zu erzeugen.
Diese Daten können umfassen, sind aber nicht beschränkt auf:
- Rasterposition
- Tiefe
- interpolierte Attribute (Farbe, Texturkoordinaten usw.)
- Schablone
- Alpha
- Fenster ID
Beim Zeichnen einer Szene werden Zeichnungsprimitive in Fragmente gerastert, die texturiert und mit dem vorhandenen Einzelbildpuffer kombiniert werden. Wie ein Fragment mit den Daten kombiniert wird, die sich bereits im Bildspeicher befinden, hängt von verschiedenen Einstellungen ab. In einem typischen Fall kann ein Fragment verworfen werden, wenn es weiter entfernt ist als das Pixel, das sich bereits an dieser Stelle befindet (entsprechend dem Tiefenpuffer). Wenn es näher als das vorhandene Pixel ist, kann es das ersetzen, was bereits vorhanden ist, oder, wenn Alpha-Blending verwendet wird, kann die Farbe des Pixels durch eine Mischung aus der Farbe des Fragments und der vorhandenen Farbe des Pixels ersetzt werden, wie im Fall von Zeichnen eines durchscheinenden Objekts.
Im Allgemeinen kann man sich ein Fragment als die Daten vorstellen, die zum Schattieren des Pixels benötigt werden, sowie die Daten, die zum Testen benötigt werden, ob das Fragment überlebt, um ein Pixel zu werden (Tiefe, Alpha, Schablone, Schere, Fenster-ID usw.).
Aus Wikipedia
Genauso wie ein Vertex-Shader auf Vertices wirkt, wirkt ein Fragment- (oder Pixel-) Shader nur auf Pixel.
quelle
Das einzige, was genau gesagt werden kann, ist die Definition der Ein- und Ausgänge des Fragment-Shaders.
Da dies getan wurde / zu umfangreich ist, werde ich mich auf die intuitive visuelle Seite konzentrieren.
Ein Fragment ist die Rasterausgabe
Das OpenGL-Wiki sagt:
Dies ist sinnvoll, da der Fragment-Shader dem Rasterizer folgt, der seine Eingabe erzeugt.
Und dies ist die visuelle Darstellung der Rasterizer-Ausgabe:
Bildquelle .
Die Eingabe des Rasters ist ein 3D-Dreieck und eine Sichtweise, und die Ausgabe ist eine Reihe von Pixeln, die möglicherweise auf dem Bildschirm angezeigt werden (wenn sie nicht von anderen blockiert werden).
Jedes dieser kleinen Quadrate (die als ein einzelnes Pixel codiert sind) ist ein Teil des Dreiecks, und Fragment ist nur ein anderer Name für Stück.
quelle