Freigeben über


HLSL-Hilfsprogramme

Um Effektautoren beim Schreiben von verlinkbaren Pixel-Shadern zu unterstützen, definiert d2d1effecthelpers.hlsli eine Reihe von HLSL-Spracherweiterungen in Form von Hilfsmethoden und Makros.

Zum Hinzufügen von d2d1effecthelpers.hlsli zu Ihrem Projekt fügen Sie eine #include-Anweisung in der HLSL-Datei hinzu. d2d1effecthelpers.hlsli befindet sich an derselben Position wie andere Direct2D-Header wie d2d1.h; sie kann von der Eigenschaftenseite der HLSL-Datei referenziert werden, indem Sie das Makro $(WindowsSDK_IncludePath) zur Eigenschaft "Zusätzliche Includeverzeichnisse" hinzufügen. Beachten Sie, dass die #include-Anweisung nach jeder Präprozessordirektive wie D2D_INPUT_COUNT definiert wurde.

#include <d2d1effecthelpers.hlsli>

Direct2D unterstützt keine Verknüpfung von Compute- oder Vertex-Shadern. Wenn ihr Effekt jedoch sowohl einen Vertex-Shader als auch einen Pixelshader verwendet, kann die Ausgabe des Pixelshaders weiterhin verknüpft werden.

Präprozessordirektiven

Präprozessordirektiven sind erforderlich, um Informationen über den Effekt zu vermitteln. Dies schließt die Anzahl der Eingaben und den Samplingtyp der einzelnen Eingaben ein. Die folgenden Werte sollten im Effekt-Shadercode oberhalb des relevanten Shadereinstiegspunkts definiert werden, sofern zutreffend.

  • D2D_INPUT_COUNT <N>: Deklariert die Anzahl der Textureingaben für den Effekt. Wenn der Effekt über eine variable Anzahl von Eingaben verfügt, muss dieser Wert entsprechend auf jeden Shadereinstiegspunkt festgelegt werden. Das Definieren dieses Werts ist obligatorisch.
  • D2D_INPUT<N>_SIMPLE: Deklariert die Nth-Eingabe, um einfache Samplings zu verwenden. Wenn sie nicht definiert ist, wird die Nth-Eingabe standardmäßig als komplex festgelegt. Das Definieren dieses Werts ist optional.
  • D2D_INPUT<N>_COMPLEX: Deklariert die Nth-Eingabe, um komplexe Samplings zu verwenden. Wenn sie nicht definiert ist, wird die Nth-Eingabe standardmäßig als komplex festgelegt. Das Definieren dieses Werts ist optional.
  • D2D_REQUIRES_SCENE_POSITION: Gibt an, dass die Shaderfunktion Hilfsmethoden aufruft, die den Szenenpositionswert verwenden (nämlich die D2DGetScenePosition Hilfsfunktion). Dieser Parameter sollte nur bei Bedarf eingeschlossen werden, da nur eine Funktion pro verknüpfter Shader diesen Parameter verwenden kann. Das Definieren dieses Werts ist optional.
  • D2D_CUSTOM_ENTRY: Gibt an, dass die Pixelshaderfunktion die Ausgabe eines benutzerdefinierten Vertex-Shaders verwendet und damit die Eingabeparameter deklariert. Alle benutzerdefinierten Vertex-Shadereingaben verwenden komplexe Samplings und können die Ausgabe einer anderen Shaderfunktion nicht nutzen (d. h. sie sind nur nach der Verknüpfung möglich). Das Definieren dieses Werts ist optional.

Zum Beispiel:

#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
          

Hilfsfunktionen

Hilfsfunktionen werden als Ersatz für einige systemeigene HLSL-Funktionen verwendet. Zur Kompilierungszeit werden diese Hilfsfunktionen von Direct2D je nach Kompilierungszieltyp (vollständiger Shader oder Exportfunktion) in die entsprechende Version neu definiert.

Die Hilfsfunktionen:

D2DGetInput-
D2DSampleInput-
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Effektshaderverknüpfung