HLSL Helpers
Om auteurs te helpen bij het schrijven van koppelingsbare pixel-shaders, definieert d2d1effecthelpers.hlsli een set HLSL-taalextensies in de vorm van helpermethoden en macro's.
Als u d2d1effecthelpers.hlsli wilt toevoegen aan uw project, voegt u een #include-instructie toe aan het HLSL-bestand. d2d1effecthelpers.hlsli bevindt zich op dezelfde locatie als andere Direct2D-headers zoals d2d1.h; er kan naar worden verwezen vanaf de eigenschappenpagina van het HLSL-bestand door de macro $(WindowsSDK_IncludePath) toe te voegen aan de eigenschap Extra inclusief mappen. Houd er rekening mee dat de #include-instructie moet komen nadat eventuele preprocessorrichtlijnen zoals D2D_INPUT_COUNT zijn gedefinieerd.
#include <d2d1effecthelpers.hlsli>
Direct2D biedt geen ondersteuning voor het koppelen van compute- of hoekpunt-shaders. Als uw effect echter zowel een hoekpunt-shader als pixel-shader gebruikt, kan de uitvoer van de pixel-shader nog steeds worden gekoppeld.
Preprocessorrichtlijnen
Preprocessorrichtlijnen zijn vereist om informatie over het effect te communiceren. Dit omvat het aantal invoer- en steekproeftypen van elke invoer. De volgende waarden moeten worden gedefinieerd in de effect-shader-code boven het relevante arceringspunt, indien van toepassing.
-
D2D_INPUT_COUNT <N>
: declareert het aantal textuurinvoeren voor het effect. Als het effect een variabel aantal invoerwaarden heeft, moet deze waarde op de juiste wijze worden afgestemd op elk arceringsinvoerpunt. Het definiëren van deze waarde is verplicht. -
D2D_INPUT<N>_SIMPLE
: declareert de Nde invoer om eenvoudige steekproeven te gebruiken. Als deze niet is gedefinieerd, wordt de Nde-invoer standaard complex. Het definiëren van deze waarde is optioneel. -
D2D_INPUT<N>_COMPLEX
: declareert de Nde invoer voor het gebruik van complexe steekproeven. Als deze niet is gedefinieerd, wordt de Nde-invoer standaard complex. Het definiëren van deze waarde is optioneel. -
D2D_REQUIRES_SCENE_POSITION
: geeft aan dat de shader-functie helpermethoden aanroept die de waarde van de scènepositie gebruiken (namelijk de D2DGetScenePosition helperfunctie). Deze parameter mag alleen worden opgenomen wanneer dat nodig is, omdat slechts één functie per gekoppelde shader deze parameter kan gebruiken. Het definiëren van deze waarde is optioneel. -
D2D_CUSTOM_ENTRY
: geeft aan dat de pixel-shader-functie de uitvoer van een aangepaste hoekpunt-shader verbruikt en dus de invoerparameters declareert. Alle aangepaste hoekpunt-shader-invoer maken gebruik van complexe steekproeven en kunnen de uitvoer van een andere shader-functie niet gebruiken (ze zijn alleen na koppeling mogelijk). Het definiëren van deze waarde is optioneel.
Bijvoorbeeld:
#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
Helper-functies
Helperfuncties worden gebruikt als vervanging voor sommige systeemeigen HLSL-intrinsieke functies. Tijdens het compileren worden deze helperfuncties opnieuw gedefinieerd door Direct2D in de juiste versie, afhankelijk van het type compilatiedoel (volledige shader of exportfunctie).
De helperfuncties:
D2DGetInput-
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoördinaat
D2DGetScenePosition
D2D_PS_ENTRY
Verwante onderwerpen