GLSL

GLSL
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Die OpenGL Shading Language (kurz: GLSL oder glSlang) ist eine Programmiersprache, um mit OpenGL auf dem Grafikprozessor eigene Programme, sogenannte Shader, auszuführen. Diese können die sonst stark limitierten und festen Verarbeitungsvorschriften der Grafikkarte (Grafikpipeline) teilweise ersetzen.

GLSL ist Teil der OpenGL-Spezifikation, die den Funktionsumfang von OpenGL definieren. glSlang wurde offiziell ab der OpenGL-Version 2.0 eingeführt. In OpenGL 1.4 ist es jedoch schon als Extension enthalten.

Inhaltsverzeichnis

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 sind das Äquivalent zu Direct3Ds Pixelshader.

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, die Topologie oder Ähnliches.

Beispiele

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();
 }

Fragmentshader

Dieser einfache Fragmentshader setzt die Fragmentfarbe auf die mit glColor festgelegte Farbe.

  void main(void)
  {
    gl_FragColor = gl_Color;
  }

Literatur

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

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • GLSL — es el acrónimo de OpenGL Shading Language (Lenguaje de Sombreado de OpenGL), también conocido como GLslang, una tecnología parte del API estandar OpenGL, que permite especificar segmentos de programas gráficos que serán ejecutados sobre el GPU.… …   Wikipedia Español

  • GLSL — OpenGL Shading Language (abbreviated: GLSL or GLslang), is a high level shading language based on the syntax of the C programming language. It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without… …   Wikipedia

  • GLSL — L’OpenGL Shading Language (GLSL) est un langage de programmation de shaders. Ces derniers permettent un contrôle avancé du pipeline de la carte graphique. Le GLSL a été développé par l’OpenGL Architecture Review Board afin de faciliter la… …   Wikipédia en Français

  • GLSL — …   Википедия

  • OpenGL Shading Language — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей …   Википедия

  • OpenGL — Original author(s) Silicon Graphics Developer(s) Khronos Group Stable release 4.2 …   Wikipedia

  • OpenGL — Desarrollador Khronos Group www.opengl.org Información general Diseñador Silicon Graphics …   Wikipedia Español

  • OpenGL Shading Language — Erscheinungsjahr: 2002 Entwickler: Khronos Group Aktuelle Version: 4.10  (8. August 2011) Einflüsse: C …   Deutsch Wikipedia

  • Comparison of Nvidia graphics processing units — For information on AMD (previously ATI) graphics processing units, see Comparison of AMD graphics processing units. This page contains general information about Nvidia s GPUs and videocards based on official Nvidia specifications. Contents 1… …   Wikipedia

  • OpenGL — Тип API Раз …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”