Zum Inhalt springen

Pixel-Shader

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. November 2006 um 02:12 Uhr durch 217.233.132.239 (Diskussion) (Artikel aufgeräumt, etwas strukturiert, Tabelle. Quellen: http://en.wikipedia.org/wiki/List_of_computer_games_that_require_Pixel_Shaders, http://en.wikipedia.org/wiki/Intel_GMA, eigenes Wissen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Vorlage:Mehrfacheintrag

Pixel-Shader (auch Pixelshader, Fragment-Shader) sind Programme, die vom Grafikprozessor einer 3D-Grafikkarte im Verlauf der Rendering-Pipeline (in den sogenannten Shadereinheiten) ausgeführt werden. Häufig werden auch die Shadereinheiten selbst als Pixel-Shader bezeichnet.

Pixel-Shader dienen dazu, die zu rendernden Pixel zu verändern, um beispielsweise eine realistischere Darstellung von Oberflächen- und Materialeigenschaften zu erreichen oder die Texturdarstellung zu verändern. Damit unterscheiden sie sich von den Vertex-Shadern, welche die Vertizes (Eckpunkte von dreidimensionalen Objekten) verändern, um die 3D-Objekte in ihrer Form oder Position zu manipulieren. Beispiele für die Anwendung von Pixel-Shadern sind Phong Shading, Spiegelungen, Schattierung, Falloff, Lensglow und Lens Flares; auch HDR-Rendering wird mit ihrer Hilfe programmiert.

Da die Shadereinheiten, die die Pixel-Shader ausführen, Teil der GPU sind, müssen diese Programme nicht mehr auf der CPU des Systems laufen, dadurch wird diese entlastet und kann für andere Aufgaben eingesetzt werden. In der Regel werden mehrere Shadereinheiten in GPUs verbaut, damit diese nicht zum Flaschenhals der Rendering-Pipelines werden.

Pixel-Shader werden in speziell dafür vorgesehenen Sprachen geschrieben (Assembler, Cg, GLSL) und zur Laufzeit der 3D-Anwendung vom Grafikkartentreiber in einen für die Grafikkarte verständlichen Maschinencode übersetzt, der dann in den Shadereinheiten ausgeführt wird. Damit diese Funktionalität auch einheitlich von Anwendungen genutzt werden kann, bieten sowohl DirectX als auch OpenGL Schnittstellen für die Anwendung von Pixel-Shadern.

Im Laufe der Zeit haben Funktionsumfang und Leistungsfähigkeit der anfangs noch ziemlich einfachen Shadereinheiten stark zugenommen; heute ist ihre Programmierbarkeit so weit fortgeschritten, dass man mit ihnen viele Berechnungen erledigen kann, die bisher nur CPUs ausführen konnten, oftmals sogar wesentlich schneller. Hierbei entstanden gerade bei DirectX diverse Versionen der Pixel-Shader, die von verschiedenen Grafikchips unterschiedlich gut unterstützt werden. Bei OpenGL kann der Grafikkartentreiber die Nutzung von Pixel-Shadern mit Hilfe von Erweiterungen (OpenGL Extensions) ermöglichen, sodass auch hier Anwendungen von Pixel-Shadern profitieren können.

Die folgende Tabelle zeigt eine Übersicht, welche Grafikkarten bzw. Grafikchips mit welcher DirectX-Version welche Pixel-Shader-Version unterstützen. Hierbei ist zu beachten, dass Grafikchips in der Regel ältere Versionen ebenfalls unterstützen, so können beispielsweise Pixel-Shader-3.0-Chips auch mit Pixel-Shadern der Version 2.0 arbeiten (was allerdings weniger der Verdienst des Grafikchips als des Grafikkartentreibers ist).

Pixel Shader-Version DirectX-Version notwendig ATI Intel Matrox NVIDIA S3 Graphics SiS XGI
1.0/1.1 8.0 - - Parhelia-Serie GeForce3-Serie - Xabre-Serie -
1.3 8.0a - - - GeForce4 Ti/Go-Serie - Mirage 2 -
1.4 8.1 Radeon 8500 - 9250 - - - - - -
2.0 9.0 Radeon 9500 - 9800, X300 - X600 GMA 900 - - DeltaChrome, GammaChrome Mirage 3 Volari-Serie
2.0a 9.0b - - - GeForce FX-Serie - - -
2.0b 9.0b Radeon X700 - X850 - - - - - -
3.0 9.0c Radeon X1xxx-Serie GMA 950 - GeForce 6xxx-Serie, GeForce 7xxx-Serie - - -
4.0 10 R600 GMA 3000, GMA X3000 - GeForce 8xxx-Serie - - -

(kursiv gestellte Namen zeigen an, dass dieses Produkt noch nicht auf dem Markt ist)

Zusätzliche Informationen zur Verarbeitungskette gibt es im Artikel zu den Shadern.

Verweise