article

Shader, auch als Schattierer bezeichnet, sind Hardware- oder Softwaremodule, die bestimmte Renderingeffekte bei der 3D-Computergrafik implementieren. Aus technischer Sicht bezeichnet „Shader“ denjenigen Teil eines Renderers, der für die Ermittlung der Farbe eines Objektes zuständig ist – im Gegensatz zu dem Teil, der die Sichtbarkeit des Objektes ermittelt. Shader wurden ursprünglich für das Shading, also die Beleuchtungs-Berechnung, entwickelt, werden aber mittlerweile auch für andere Dinge verwendet.

Hardware-Shader


Hardware-Shader sind kleine Recheneinheiten in aktuellen Grafikchips (seit DirectX-Version 9). Die beiden Einheiten heißen Pixel- und Vertex-Shader. Shader können zur Erzeugung von 3D-Effekten programmiert werden. Pixel-Shader können die Bildpunkte verändern und berechnen auch die Pixelfarbe. Vertex-Shader dienen zu geometrischen Berechnungen und dynamischen Veränderungen von Objekten. So erzeugen beide Shader kombiniert den Wassereffekt in dem Computerspiel Far Cry. Sie können auch zur Berechnung von Lava, Lack, usw. eingesetzt werden.

Pixel- und Vertexshader dürfen nicht als separate Recheneinheit verstanden werden. Der Vertexshader ist lediglich eine programmierbare T&L-Einheit, der Pixelshader entstand historisch aus dem Combiner – der genaue Aufbau der Shader-Hardware ist geheim. Konformität zum DirectX-Standard wird über den Grafiktreiber hergestellt.

Die Verarbeitungskette ist – vereinfacht – wie folgt:

  • Die CPU sendet Steuerbefehle und Geometrie-Daten an die Grafikkarte.
  • Im Vertex-Shader wird die Geometrie transformiert, außerdem werden bestimmte Licht-Berechnungen ausgeführt.
  • Die Geometrie gelangt in das Triangle Setup. Dreiecke werden in Quads zerlegt (ein Quad besteht aus 2 × 2 Pixeln.)
  • Die erste Stufe des Pixel-Shaders ist der Interpolator. Hier werden bestimmte, nur pro Eckpunkt (Vertex) vorliegende Informationen über die Dreiecksfläche interpoliert.
  • Im Pixelshader gibt es arithmetische Rechenwerke (Shader Units) und Textur-Einheiten (Texture Mapping Units, TMUs.)
  • Nachdem die Pixelberechnung abgeschlossen ist, wird der Test auf Sichtbarkeit (Z-Test) ausgeführt. Bei Sichtbarkeit findet ein Schreibvorgang in den Framebuffer statt.

Programmierung


In OpenGL ist seit Version 2.0 eine eigene C-ähnliche Shader-Sprache integriert (OpenGL Shading Language, kurz GLSL); davor war Shaderprogrammierung nur durch herstellerabhängige Schnittstellen möglich. Durch den Einsatz von GLSL ist man nicht mehr auf die Verwendung proprietärer Technologie sowie dem Einsatz auf der Windows-Plattform beschränkt und kann Shader nun auf unterschiedlichsten Plattformen, wie Mac OS X oder Linux, benutzen.

Shader gibt es in mehreren Versionen:

Pixel-Shader   Vertex-Shader
bgcolor="#FFFFFF"
PS-Version DirectX-Version VS-Version DirectX-Version
bgcolor="#FFFFFF"
1.0, 1.1 8.0 1.0 8.0
bgcolor="#FFFFFF"
1.2 - 1.4 8.1 1.1 8.0
bgcolor="#FFFFFF"
2.0, 2.x (2_A, 2_B) 9.0 2.0, 2.x 9.0
bgcolor="#FFFFFF"
3.0 9.0 3.0 9.0
bgcolor="#FFFFFF"

Pixel- und Vertexshader 1.0 waren für den 3dfx Rampage vorgesehen, der jedoch nie auf den Markt kam. Pixelshader 1.2 wird von bestimmten 3D-Karten von 3DLabs genutzt, Pixelshader 1.3 von der Nvidia GeForce 4 Ti und Matrox Parhelia unterstützt.

Weblinks


3D-Computergrafik

Shader | Shader | Shader | Shader | Шейдер

 

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

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld