Fragment: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (link auf Fragmentshader)
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Bevor das Bild, welches man rendert, auf dem Monitor sichtbar wird, wird es in den so genannten [[Framebuffer]] der OpenGL geschrieben. Im Framebuffer liegen die Grafikdaten als Fragmente vor.
+
Eine [[Primitive]] welche gezeichnet werden soll wird vom Rasterizer (siehe [[Feste Funktionspipeline#Fragment Pipeline|Fragment Pipeline]]) in Fragmente zerlegt. Jedes Fragment durchläuft die [[Feste Funktionspipeline#Fragment Pipeline|Fragment Pipeline]] und landet nach mehreren bestandenen Tests als [[Pixel]] im [[Framebuffer]]. Ein Fragment besitzt dabei vor allem folgende Daten:
 
+
* Fensterposition
Ein Fragment enthält:
+
* Tiefe
* Koordinaten auf dem Bildschirm, welche einem [[Pixel]] entsprechen
+
* Farbwert(e) oder Farbindex
* Farbwert
+
* Alphawert
* Tiefeninformation
+
* Texturcoordinate(n)
 
+
* Stencilwert
Sobald das Fragment ausgegeben wird ist es ein '''Pixel'''. Pixel haben im Gegensatz zu '''Fragmenten''' keine Tiefeninformationen mehr, sondern sind nur noch ein Farbwert auf der Ausgabe. (Die Tiefeninformation wird benötigt um zu entscheiden, ob ein Fragment ein anderes überdeckt. Bei der Ausgabe als Pixel ist diese Entscheidung bereits getroffen.)
+
Die Daten können (beispielsweise durch einen [[Shader#Fragmentshader_.28auch_Pixelshader.29|Fragment Shader]], Nebelberechnungen, ...) während der Lebensdauer eines Fragmentes noch verändert werden. Zusätzlich kann jeder Test ([[Tiefentest]], Alphatest, ...) ein Fragment verwerfen.

Aktuelle Version vom 16. Juni 2009, 12:39 Uhr

Eine Primitive welche gezeichnet werden soll wird vom Rasterizer (siehe Fragment Pipeline) in Fragmente zerlegt. Jedes Fragment durchläuft die Fragment Pipeline und landet nach mehreren bestandenen Tests als Pixel im Framebuffer. Ein Fragment besitzt dabei vor allem folgende Daten:

  • Fensterposition
  • Tiefe
  • Farbwert(e) oder Farbindex
  • Alphawert
  • Texturcoordinate(n)
  • Stencilwert

Die Daten können (beispielsweise durch einen Fragment Shader, Nebelberechnungen, ...) während der Lebensdauer eines Fragmentes noch verändert werden. Zusätzlich kann jeder Test (Tiefentest, Alphatest, ...) ein Fragment verwerfen.