Shadermodelle im Vergleich zu Shaderprofilen

Die High Level Shading Language für DirectX implementiert eine Reihe von Shadermodellen. Mit HLSL können Sie C-like programmable shaders for the Direct3D pipeline (Programmierbare Shader für die Direct3D-Pipeline) erstellen. Jedes Shadermodell baut auf den Funktionen des Modells vor dem Modell auf, und es werden mehr Funktionen mit weniger Einschränkungen implementieren.

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

Ab Windows Vista ist das Shadermodell 4 eine vollständige Neugestaltung. Sie ermöglicht unbegrenzte Anweisungen und Konstanten (innerhalb der Hardwareeinschränkungen Ihres Computers), verfügt über Vorlagenobjekte, um die Texturstichproben zu verbessern und effizienter zu gestalten, und verfügt über die geringsten Einschränkungen für jedes Shadermodell. 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 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 in Shadermodell 4.0 eingeführt wurden, fügt Shadermodell 5 unterstützung für diese Shaderprofile für strukturierte Puffer und Byteadressenpuffer hinzu.)
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 hat die Shadermodelle 1, 2 und 3 eingeführt.
  • Direct3D 10 hat Shadermodell 4 eingeführt.
  • Mit Direct3D 10.1 wurde das Shadermodell 4.1 eingeführt.

Effektprofile

Ein Effektprofil ist das Ziel zum Kompilieren eines Effekts/Shaders. In dieser Tabelle werden die Effektprofile aufgeführt, die von jeder Version von Direct3D unterstützt werden.

Unterschiede zwischen Direct3D 9 und Direct3D 10:

  • Direct3D 9 hat Effect Framework-Profile fx _ 1 _ 0 und fx _ 2 _ 0 eingeführt.
  • Direct3D 10 hat effect-framework profile fx _ 4 _ 0 eingeführt.
  • Direct3D 10.1 hat effect-framework profile fx _ 4 _ 1 eingeführt.
  • Direct3D 11 hat das Effect Framework-Profil fx _ 5 _ 0 eingeführt.

Hinweis

Diese Legacyeffekteprofile sind veraltet.

Referenz zu HLSL