Urspruenglich waren 3D Grafikkarten nur dafuer gut Dreiecke auf den Bildschirm zu zeichnen, dann wurden sie erweitert um auch Lichtberechnungen fuer die Dreiecke durchzufuehren (T&L= Transform & Lighting). Naechster Schritt in der Entwicklung: waehrend der Berechnung der Dreiecke koennen Texturen in beliebiger Form miteinander vermischt werden um z.B. einfaches Bumpmapping oder Environment Mapping zu erhalten(Fixed Function Pipeline, programmable GPU).
Naechster Schritt: Vertex Shader- fuer jeden Eckpunkt eines Dreiecks kann der Programmierer ein kleines Programm schreiben welches dann auf der Grafikkarte (sehr schnell) ausgefuehrt wird. Damit lassen sich z.B. Meereswellen oder Bonesanimationen durchfuehren. Letztlich: Pixel Shader, diese bauen auf Vertex Shader auf, aber erlauben dem Programmierer nun auch noch fuer jedes Pixel das angezeigt werden soll ein Programm zu schreiben, welches auf der Grafikkarte ausgefuehrt wird. Die Moeglichkeiten damit sind fast grenzenlos- ein einfarbiger Wuerfel im Level koennte z.B. in eine regenbogenfarbige Kugel mit Transparenz verwandelt werden, ohne dass die CPU eingreifen muss.

A6 Shader (basierend auf DirectX .FX Dateien) enthalten Unterstuetzung fuer FFP, Vertex und Pixelshader. Nachteile: jedes Grafikkartenmodell bietet unterschiedliche Features und nicht alle FFP Anweisungen oder Shader funktionieren auf allen Karten. Ausserdem wird die Programmierung schnell sehr kompliziert und erfordert viel Geduld beim Debuggen.