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.

Referenz für HLSL