HLSL-Hilfshilfen
Um Effektautoren beim Schreiben von verlinkbaren Pixelshadern zu unterstützen, definiert d2d1effecthelpers.hlsli eine Reihe von HLSL-Spracherweiterungen in Form von Hilfsmethoden und Makros.
Um d2d1effecthelpers.hlsli zu Ihrem Projekt hinzuzufügen, fügen Sie # in der HLSL-Datei eine include-Anweisung hinzu. d2d1effecthelpers.hlsli befindet sich am gleichen Speicherort wie andere Direct2D-Header wie d2d1.h. Auf sie kann auf der Eigenschaftenseite der HLSL-Datei verwiesen werden, indem das Makro $(WindowsSDK _ IncludePath) zur Eigenschaft Additional Include Directories hinzugefügt wird. Beachten Sie, dass die # include-Anweisung nach der Definition aller Präprozessordirektiven wie D2D _ INPUT COUNT erfolgen _ muss.
#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 Pixel-Shader verwendet, kann die Ausgabe des Pixelshader weiterhin verknüpft werden.
Präprozessoranweisungen
Präprozessordirektiven sind erforderlich, um Informationen über den Effekt zu kommunizieren. Dies schließt die Anzahl der Eingaben und den Samplingtyp jeder Eingabe ein. Die folgenden Werte sollten ggf. im Effekt-Shadercode über dem relevanten Shadereinstiegspunkt definiert werden.
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 angepasst werden. Das Definieren dieses Werts ist obligatorisch.D2D_INPUT<N>_SIMPLE: Deklariert die n-ten Eingabe für die Verwendung der einfachen Stichprobenentnahme. Wenn sie nicht definiert ist, wird die N-te Eingabe standardmäßig auf komplex festgelegt. Das Definieren dieses Werts ist optional.D2D_INPUT<N>_COMPLEX: Deklariert die n-te Eingabe für die Verwendung komplexer Stichproben. Wenn sie nicht definiert ist, wird die N-te Eingabe standardmäßig auf komplex festgelegt. Das Definieren dieses Werts ist optional.D2D_REQUIRES_SCENE_POSITION: Gibt an, dass die Shaderfunktion Hilfsmethoden aufruft, die den Szenenpositionswert verwenden (d.h. die Hilfsfunktion D2DGetScenePosition). Dieser Parameter sollte nur bei Bedarf eingeschlossen werden, da nur eine Funktion pro verknüpften 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 nutzt und daher die Eingabeparameter deklariert. Alle benutzerdefinierten Vertex-Shadereingaben verwenden eine komplexe Stichprobenentnahme und können die Ausgabe einer anderen Shaderfunktion nicht nutzen (d. h., sie sind nur nach der Verknüpfung wiederverknüpfbar). 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 systeminterne HLSL-Funktionen verwendet. Zur Kompilierzeit werden diese Hilfsfunktionen von Direct2D abhängig vom Kompilierungszieltyp (vollständiger Shader oder Exportfunktion) in die entsprechende Version neu definiert.
Die Hilfsfunktionen:
D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D _ PS _ ENTRY