Teilen über


Shadermodelle und Shaderprofile

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, wobei mehr Funktionen mit weniger Einschränkungen implementiert werden.

Shadermodell 1 begann mit DirectX 8 und enthielt Assemblyebene und C-ähnliche Anweisungen. Dieses Modell hat viele Einschränkungen, die durch eine frühe programmierbare Shaderhardware verursacht werden. Shadermodell 2 und 3 haben die Anzahl der Anweisungen erheblich erweitert, und Konstanten-Shader können verwendet werden. Sie sind viel leistungsfähiger als Shadermodell 1, tragen aber dennoch einige der vorhandenen Einschränkungen des ersten Shadermodells.

Ab Windows Vista ist Shadermodell 4 eine vollständige Neugestaltung. Es ermöglicht unbegrenzte Anweisungen und Konstanten (innerhalb von Hardwareeinschränkungen ihres Computers), hat vorlagenbasierte Objekte, um Textursampling sauberer und effizienter zu machen und die wenigsten Einschränkungen für jedes Shadermodell zu haben. Es ist jedoch das Windows-Treibermodell erforderlich, das nur unter dem Betriebssystem Windows Vista (oder höher) verfügbar ist.

Shaderprofile

Ein Shaderprofil ist das Ziel für die Kompilierung 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 in Shadermodell 4.0 eingeführt wurden, werden diese Shaderprofile für strukturierte Puffer und Byteadresspuffer unterstützt.)
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 Shadermodelle 1, 2 und 3 ein.
  • Direct3D 10 führte Shadermodell 4 ein.
  • Direct3D 10.1 führte Shadermodell 4.1 ein.

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 führte Effektframeworkprofile fx_1_0 und fx_2_0 ein.
  • Direct3D 10 führte ein Effektframeworkprofil fx_4_0 ein.
  • Direct3D 10.1 führte das Effektframeworkprofil fx_4_1 ein.
  • Direct3D 11 führte ein Effektframeworkprofil fx_5_0 ein.

Anmerkung

Diese Legacyeffekteprofile sind veraltet.

Referenz für HLSL-