Transform-Feedback
Transform-Feedback ist ein Feature von ShaderModel 4.0 und somit auf älteren Grafikkarten nicht verfügbar. In der DirectX-Welt ist Transform-Feedback unter der Bezeichnung Stream-Out bekannt. Mit OpenGL 3.0 wurde Transform-Feedback in den OpenGL-Kern aufgenommen. In älteren Versionen von OpenGL ist Transform-Feedback in verschiedenen Varianten als Extension verfügbar:
Alle Varianten funktionieren leicht unterschiedlich daher wird hier auf eine detaillierte Vorstellung verzichtet. Allerdings macht das GPU-Partikelsystem exzessiven Gebrauch von Transform-Feedback und eignet sich somit als Beispiel. Weitere Anwendungsbeispiele finden sich im Shader-Artikel.
Abgrenzung zu Framebuffer-Objekten
Transform-Feedback stellt eine flexiblere Alternative zu Framebuffer-Objekten dar. Insbesondere kann man beispielsweise gleichzeitig 32bit Float-Vektoren und Integer schreiben, was mit einem Framebuffer bisher nicht möglich ist. Ein weiterer Vorteil ist, dass man die Render-Pipeline direkt nach dem Transform-Feedback-Schritt (also noch vor dem Cliping) auf Wunsch auch komplett abschalten kann. Insbesondere der Fragmentshader wird dann gar nicht erst ausgeführt und auch nichts in den Framebuffer geschrieben.
Render-Pipeline
Das folgende Bild zeigt die Render-Pipeline einer Grafikkarte mit ShaderModel 4.0.