next up previous contents
Next: ARB Programs Up: Einfuehrung in OpenGL und Previous: Praxis: Initialisierung mit GLut   Contents

Shader in OpenGL

Shader sind kleine Programme die direkt auf der Hardware der Grafikkarte ausgeführt werden. Generell unterscheidet man zwischen Vertex- und Pixelshadern, wobei erstere - wie der Name impliziert - auf den Vertices operieren und deren Attribute verändern können, und letztere auf den Bildpunkten der fertig gerenderten Szene - in der OpenGL-Terminologie Fragments - operieren und somit deren Farbe ändern können.

Figure 2.1: Vereinfachte Darstellung der OpenGL Visualisierungspipeline
Image simplepipe

Betrachten wir zunächst einmal eine vereinfachte Abbildung der oben besprochenen Visualisierungspipeline - Abbildung 2.1 - wie ordnen sich Shader dort ein?

Die intuitive Antwort auf diese Frage ist auch die Richtige: Vertex Shader greifen im Schritt der Vertex Transformationen, Fragment Shader während der Färbung in die Pipeline ein. Vertex Shader ersetzen die Transformationen des statischen Teils der Pipeline, Fragment Shader ersetzen den Schritt der Einfärbung der traditionellen Pipeline komplett.

Wozu noch statische Transformationen und Färbungen mag man sich fragen, wo man doch theoretisch alles direkt per Shadern machen könnte? Diese Frage ist durchaus berechtigt, denn eigentlich könnten Shader durchaus die traditionellen Pipelines komplett implementieren, die Frage ist aber falsch gestellt: warum nicht?

Durch das Hinzunehmen von Shadern in die Pipelines wird Legacy-Applikationen nicht geschadet, sie funktionieren weiterhin. Der Benutzer der nur Shader nutzen will kann die traditionelle Pipeline einfach ignorieren.

Es gibt viele Möglichkeiten Shader in OpenGL zu nutzen, drei sollen an dieser Stelle kurz vorgestellt werden:



Subsections
next up previous contents
Next: ARB Programs Up: Einfuehrung in OpenGL und Previous: Praxis: Initialisierung mit GLut   Contents
2005-10-25 Michael Bayer - nightspawn.com