-
HLSL Shader Linking???
Autor: /mecki78 27.06.13 - 13:00
Wenn das stimmt, was hier im Artikel steht, dann kann jetzt also DirectX das, was OpenGL bereits konnte, als in 2.1 vor etlichen Jahren Shader als Extension dazu gekommen sind (wohlgemerkt, wir sind aktuell bei OpenGL 4.3).
In OpenGL war es schon immer so, dass man Shader kompiliert, dann mehrere kompilierte Shader zu einem "Programm" linked und dann das Programm aktiviert, um es zu benutzen. Letztlich kann man aber die gleichen kompilierten Shader in beliebig vielen, unterschiedlichen Programmen nutzen (ohne sie neu kompilieren zu müssen) und auch beliebig viele Programme linken, ohne sie benutzen zu müssen. Zur Laufzeit schaltet man dann immer nur das aktive Programm um, wobei nichts kompiliert oder gelinkt werden muss, sondern lediglich ein Zeiger von einem Programm auf das andere Programm umgesetzt wird und das war's dann auch schon, denn alle Programme befinden sich zu diesem Zeitpunkt bereits fertig lauffähig im Speicher (meistens sogar schon in dem der Grafikkarte). Direkt beim nächsten Zeichnen wird dann das andere Programm verwendet.
/Mecki -
Re: HLSL Shader Linking???
Autor: baldur 28.06.13 - 00:24
Das macht man bei DirectX auch. Alles andere wäre auch dämlich, da man die Shader während eines Frames doch recht häufig wechseln muss.
Ich denke mal, bei dem Feature geht es darum, den kompilierten Shader außerhalb des Graphikspeichers zwischenzuspeichern, so daß man sie z.B. bei einem Level-Wechsel schneller wieder laden kann, ohne daß alle Compiler- und Optimierungs-Schritte durchgeführt werden müssen. Oder bei Openworld-Spielen, bei denen man abhängig von der aktuellen Zone z.B. Shader für Wetter-Effekte o.ä. ohne Lade-Screen laden will.
1 mal bearbeitet, zuletzt am 28.06.13 00:26 durch baldur.