OpenGL Shading Language
aus Wikipedia, der freien Enzyklopädie
Dieser Artikel wurde im Portal Informatik zur Verbesserung eingetragen. Hilf mit, ihn zu bearbeiten und beteilige dich an der Diskussion! |
Folgendes muss noch verbessert werden:
Der Artikel hatte sich einen LA gefangen mit der Begründung unverständlich, Lemma wird nicht erklärt und Redundanz zu OpenGL. Für mich als informierten Laien ist der Artikel halbwegs verständlich (und gültiger Stub), jedoch noch weit davon entfernt auch dem Garnichtswisser etwas zu bringen. Bitte überarbeiten oder ggf. zwecks Löschung bei mir melden. --AT talk 18:45, 13. Feb. 2007 (CET)
Die OpenGL Shading Language (kurz: GLSL) ist eine C ähnliche Programmiersprache und Teil der OpenGL-Spezifikation. Sie wurde ab der OpenGL Version 2.0 eingeführt. Mit Hilfe der GLSL ist es möglich, sogenannte Shader auf dem Grafikprozessor ausführen, welche die vordefinierte OpenGL-Pipeline teilweise ersetzen.
Als Extension ist GLSL bereits ab OpenGL 1.5 vorhanden.
Inhaltsverzeichnis |
[Bearbeiten] Sprachmerkmale
GLSL ist eine C ähnliche Programmiersprache, die speziell an die Notwendigkeiten von Shadern angepasst wurde. So gibt es eingebaute Typen für Vektoren, SIMD und Anbindungen an die OpenGL Umgebung.
Es gibt zwei verschiedene Arten von Shadern die mit GLSL definiert werden können. Dies sind die Vertex-Shader und die Fragmentshader. Ein Vertex-Shader wird für jedes Vertex einmal ausgeführt, während ein Fragmentshader für jedes Fragment einmal läuft. Fragmentshader werden im allgemeinen auch Pixelshader genannt.
Im Detail kann die Standardfunktionalität die vor der Rasterisierung stattfindet durch Vertex-Shader ersetzt werden. Die danach vorliegenden Fragmente (Pixel bevor sie auf dem Anzeigegerät angezeigt werden) werden dann mittels der Fragmentshader bearbeitet. Hier wird die Farbe für das entsprechende Fragment berechnet.
Der Vertex-Shader wird in jedem Frame auf jedem Vertex ausgeführt und hat dabei nur Zugriff auf den gerade behandelten Vertex (inkl. seiner Texturkoordinaten, Normalen und sonstiger übergebener Daten), aber nicht etwa auf Nachbar-Vertices, der Topologie oder Ähnlichem.
[Bearbeiten] Beispiele
[Bearbeiten] Vertexshader
Dieser Vertexshader verhält sich ähnlich wie der unveränderte Vertexshader der Grafikkarte. Die Vordergrundfarbe wird gesetzt und die Standardfunktion ftransform()
führt die gewöhnliche Vertex-Transformation (sogenannte Fixed Function, in der Grafikkarte festgelegte Berechnungen) durch.
void main(void) { gl_FrontColor = gl_Color; gl_Position = ftransform(); }
[Bearbeiten] Fragmentshader
Dieser einfache Fragmentshader setzt die Fragmentfarbe auf die mit glColor festgelegte Farbe.
void main(void) { gl_FragColor = gl_Color; }
[Bearbeiten] Literatur
- Rost, Randi. OpenGL Shading Language. 1st ed. Pearson Education, Inc, 2004. ISBN 0321197895
[Bearbeiten] Weblinks
- oss.sgi.com - GLSL Specifications (PDF)
- www.lighthouse3d.com - OpenGL Shading Language Tutorial (englisch)
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit ihn zu verbessern und entferne anschließend diese Markierung. |