Einführung: Wie läuft ein GPU Programm ab ?
Kontrolle über die Position von Vertices Benutzerdefiniertes Lighting (per Vertex) Benutzerdefiniertes Skinning/Blending Beliebige Vertexberechnung (z.B. Fischauge) Beschleuningung komplexer Vertex Operationen, Partikelsysteme.
Farbe pro Pixel berechnen Texturierung Benutzerdefiniertes Lighting (per Fragment) Nebel u.v.m.
Eingabe: Beliebige Vertex Attribute, ev. «globale» Variablen
Ausgabe: Transformierte Vertex Attribute:
Ein Vertex Programm kann keine Vertices generieren oder zerstören!
Standardmässig sind keine topologischen Informationen vorhanden! (Kanten, Nachbar…)
Beispiel: Minimales Vertex Programm GLSL
Ein Vertex wird von Objekt Koordinaten in Clip Koordinaten transformiert.
void main(void) { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; } |
Eingabe: Interpolierte Daten vom Vertex Shader, ev. «globale» Variablen
Ausgabe: Farbwert Pixel
Beispiel: Minimales Fragment Programm GLSL
Jeder Pixel wird rot.
void main(void) { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } |