Shaderlimitiert

Aus DGL Wiki
Version vom 17. August 2008, 20:51 Uhr von Wilson (Diskussion | Beiträge) (Kommas)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Obwohl Shader eine der neuesten Errungenschaften bei Grafikkarten sind, besitzen sie natürlich auch Nachteile. Bevor es Shader gab, wurden alle Daten, die an die Grafikkarte geschickt wurden, nach fix vorgegebenen, einfachen Algorithmen (siehe Feste Funktionspipeline) behandelt, welche nur durch verhältnismäßig wenige Schalter oder Parameter beeinflusst werden konnten. Diese Spezialisierung bringt erst den großen Vorteil einer Grafikkarte gegenüber einer (oder sogar gegenüber einer 2ten) CPU, da diese Berechnungen nicht als Programm, sondern fast ausschließlich elektronisch realisiert wurden und großteils immer noch werden.

Durch Shader (oder wie die OpenGL-Extensionnamen Vertex- und Fragment-program besser verdeutlichen) hat sich dies nun geändert. Ein Teil der festen Funktionspipeline wird durch einen programmierbaren Prozessor ersetzt, welcher es erlaubt die vorgegebenen Algorithmen zu verändern. Diese Freiheit geht jedoch auf Kosten der Geschwindigkeit. Hinzu kommt noch, dass der Programmierer beliebige Instruktionen geben kann, also in schlimmen Fällen auch viele, langsame und vielleicht sogar unnötige Befehle, welche natürlich die Geschwindigkeit der Grafikkarte beeinflussen. Im Endeffekt sind jedoch Shader nur als Erhöhung der Laufzeitkomplexität für Vertices bzw. Fragmente zu sehen, wodurch Shader einen (jedoch einen verhältnismäßig wichtigen) Beitrag zur Vertexlimitierung bzw. zur Füllratenlimitierung darstellen.