article

Die OpenGL Shading Language (kurz: GLSL) ist ein Teil der OpenGL-Spezifikation welche mit der Version 2.0 eingeführt wurde. Mit Hilfe der GLSL ist es möglich, sogenannte Shader auf dem Grafikprozessor ausführen, welche die vordefinierte OpenGL-Pipeline teilweise ersetzen.

GLSL wurde bereits als Extension in OpenGL 1.5 eingeführt.

Funktionsweise


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 (incl. seiner Texturkoordinaten, Normalen und sonstiger übergebener Daten), nicht etwa auf Nachbar-Vertices, der Topologie oder Ähnlichem.

Die Sprache


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.

Beispiele


Vertexshader

Dieser Vertexshader verhält sich ähnlich wie der unveränderte Vertexshader der Grafikkarte. Die Vordergrundfarbe wird gesetzt. 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(); }

Fragmentshader

Dieser Fragmentshader setzt einfach die Fragment Farbe auf die mit glColor festgelegte Farbe. So wie es der standard Fragmentshader macht void main(void) { gl_FragColor = gl_Color; }

Literatur


  • Rost, Randi. OpenGL Shading Language. 1st ed. Pearson Education, Inc, 2004. ISBN 0321197895

Weblinks


3D-Computergrafik

GLSL | OpenGL Shading Language

 

This article is licensed under the GNU Free Documentation License. It uses material from the "OpenGL Shading Language".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld