Shadermodelle im Vergleich zu Shaderprofilen
Die High Level Shading Language für DirectX implementiert eine Reihe von Shadermodellen. Mit HLSL können Sie C-ähnliche programmierbare Shader für die Direct3D-Pipeline erstellen. Jedes Shadermodell baut auf den Funktionen des Modells auf und implementiert mehr Funktionalität mit weniger Einschränkungen.
Shadermodell 1 begann mit DirectX 8 und enthielt Assemblyebene und C-ähnliche Anweisungen. Dieses Modell weist viele Einschränkungen auf, die durch frühzeitig programmierbare Shaderhardware verursacht werden. Shadermodell 2 und 3 haben die Anzahl der Anweisungen und Konstanten-Shader stark erweitert. Sie sind viel leistungsstärker als Shadermodell 1, weisen aber dennoch einige der bestehenden Einschränkungen des ersten Shadermodells auf.
Ab Windows Vista ist Shadermodell 4 ein vollständiges Redesign. Es ermöglicht unbegrenzte Anweisungen und Konstanten (innerhalb der Hardwareeinschränkungen Ihres Computers), verfügt über vorlagenbasierte Objekte, um die Texturentnahme sauberer und effizienter zu machen, und hat die geringsten Einschränkungen eines Shadermodells. Dies erfordert jedoch das Windows-Treibermodell, das nur unter dem Betriebssystem Windows Vista (oder höher) verfügbar ist.
Shaderprofile
Ein Shaderprofil ist das Ziel zum Kompilieren eines Shaders. In dieser Tabelle sind die Shaderprofile aufgeführt, die von jedem Shadermodell unterstützt werden.
Shadermodell | Shaderprofile |
---|---|
Shadermodell 1 | vs_1_1 |
Shadermodell 2 | ps_2_0, ps_2_x, vs_2_0, vs_2_x, ps_4_0_level_9_0, ps_4_0_level_9_1, ps_4_0_level_9_3, vs_4_0_level_9_0, vs_4_0_level_9_1, vs_4_0_level_9_3, lib_4_0_level_9_1, lib_4_0_level_9_3 |
Shadermodell 3 | ps_3_0, vs_3_0 |
Shadermodell 4 | cs_4_0, gs_4_0, ps_4_0, vs_4_0, cs_4_1, gs_4_1, ps_4_1, vs_4_1, lib_4_0, lib_4_1 |
Shadermodell 5 | cs_5_0, ds_5_0, gs_5_0, hs_5_0, ps_5_0, vs_5_0, lib_5_0 (Obwohl gs_4_0, gs_4_1, ps_4_0, ps_4_1, vs_4_0 und vs_4_1 im Shadermodell 4.0 eingeführt wurden, bietet Shadermodell 5 Unterstützung für diese Shaderprofile für strukturierte Puffer und Byteadresspuffer.) |
Shadermodell 6 | cs_6_0, ds_6_0, gs_6_0, hs_6_0, ps_6_0, vs_6_0, lib_6_0 |
Unterschiede zwischen Direct3D 9 und Direct3D 10:
- Direct3D 9 führte die Shadermodelle 1, 2 und 3 ein.
- Direct3D 10 hat das Shadermodell 4 eingeführt.
- Direct3D 10.1 hat das Shadermodell 4.1 eingeführt.
Effektprofile
Ein Effektprofil ist das Ziel zum Kompilieren eines Effekts/Shaders. In dieser Tabelle sind die Effektprofile aufgeführt, die von jeder Version von Direct3D unterstützt werden.
Unterschiede zwischen Direct3D 9 und Direct3D 10:
- Direct3D 9 hat Effektframeworkprofile fx_1_0 und fx_2_0 eingeführt.
- Direct3D 10 hat das Effektframeworkprofil fx_4_0 eingeführt.
- Direct3D 10.1 hat das Effektframeworkprofil fx_4_1 eingeführt.
- Direct3D 11 hat fx_5_0 ein Effekt-Framework-Profil eingeführt.
Hinweis
Diese Legacyeffektprofile sind veraltet.