Vertex-Shader
aus Freepedia, der freien Wissensdatenbank
Beim Vertex-Shader (auch Vertexshader oder Vertex Shader) handelt es sich um eine frei programmierbare aber hardwareabhängige 3D-Funktion.
Unter einem Vertex-Shader versteht man auch eine programmierbare Einheit aus der Rendering-Pipeline eines Grafikprozessors, die ein Vertexprogramm (auch Vertex Programm) ausführt.
Vertex-Shader sind in DirectX seit Version 8 und in OpenGL durch entsprechende Extensions programmierbar. Seit OpenGL 1.5 ist eine assemblerartige Sprache (ARB_vertex_program) und seit OpenGL Version 2.0 auch eine Hochsprache spezifiziert. Da die Fähigkeiten der Grafikchips im Laufe der Zeit zunahmen, gibt es verschieden leistungsfähige Versionen der Vertex-Shader. In DirectX gibt es die Vertex-Shader-Versionen 1.0, 1.1, 2.0 und 3.0. Diese entsprechen auf OpenGL-Seite Erweiterungen wie ARB_vertex_program. Die Implementierung der Vertex-Shader in OpenGL 2.0 verwendet die OpenGL Shading Language, eine Hochsprache zur Shaderprogrammierung, die sich nicht in das Versionsschema der DirectX Shader-Versionen fassen läßt.
Ein Vertex-Shader berechnet Formveränderungen und Lichteinfalländerungen und rendert aus diesen Berechnungen realitätsnahe und detailreiche 3D-Darstellungen. Er berechnet keine Texturen oder Oberflächen. Somit wird ausschließlich der Grafikprozessor, der für Berechnungen wie Größenänderungen und Lichteffekte zuständig ist, belastet.
Dank des Vertex-Shaders sind 3D-Effekte wie Bump Mapping möglich. Die GeForce 3 unterstützte als eine der ersten Grafikkarten Vertex-Shader, die günstigere GeForce 4 MX kann diese jedoch nur halbwegs emulieren. Nach dem Vertex-Shader kommt der sogenannte Pixel-Shader, der Materialeigenschaften und Texturen der einzelnen Objekte berechnet. Moderne ATI Radeon und nVidia GeForce Grafikkarten unterstützen nur noch Vertex-Shader als Ersatz für die Transform & Lighting genannte, T&L oder Hardware T&L abgekürzte Funktion aus DirectX 7.



