Dela via


HLSL-hjälp

För att hjälpa effektförfattare att skriva länkbara pixelskuggare definierar d2d1effecthelpers.hlsli en uppsättning HLSL-språktillägg i form av hjälpmetoder och makron.

Om du vill lägga till d2d1effecthelpers.hlsli i projektet lägger du till en #include-instruktion i HLSL-filen. d2d1effecthelpers.hlsli finns på samma plats som andra Direct2D-huvuden som d2d1.h; Det kan refereras från HLSL-filens egenskapssida genom att lägga till makrot $(WindowsSDK_IncludePath) i egenskapen Ytterligare inkludera kataloger. Observera att #include-instruktionen måste komma efter att alla förprocessordirektiv som D2D_INPUT_COUNT har definierats.

#include <d2d1effecthelpers.hlsli>

Direct2D stöder inte länkning av beräknings- eller hörnskuggor. Men om din effekt använder både en hörnskuggare och pixelskuggning kan utdata från pixelskuggningen fortfarande länkas.

Förprocessordirektiv

Förprocessordirektiv krävs för att förmedla information om effekten. Detta omfattar antalet indata och samplingstypen för varje indata. Följande värden bör definieras i effektskuggningskoden ovanför den relevanta skuggningsstartpunkten när det är tillämpligt.

  • D2D_INPUT_COUNT <N> : Deklarerar antalet texturindata till effekten. Om effekten har ett variabelt antal indata måste det här värdet omfångsbegränsas på lämpligt sätt för varje skuggnings startpunkt. Det är obligatoriskt att definiera det här värdet.
  • D2D_INPUT<N>_SIMPLE : Deklarerar Nth-indata för att använda enkel sampling. Om den inte har definierats är Nth-indata som standard komplexa. Det är valfritt att definiera det här värdet.
  • D2D_INPUT<N>_COMPLEX : Deklarerar Nth-indata för att använda komplex sampling. Om den inte har definierats är Nth-indata som standard komplexa. Det är valfritt att definiera det här värdet.
  • D2D_REQUIRES_SCENE_POSITION : Anger att skuggningsfunktionen anropar hjälpmetoder som använder scenpositionsvärdet (dvs. hjälpfunktionen D2DGetScenePosition). Den här parametern bör endast inkluderas när det behövs, eftersom endast en funktion per länkad skuggning kan använda den här parametern. Det är valfritt att definiera det här värdet.
  • D2D_CUSTOM_ENTRY : Anger att funktionen pixelskuggning förbrukar utdata från en anpassad hörnskuggning och därmed deklarerar sina indataparametrar. Alla anpassade hörnskuggningsindata använder komplex sampling och kan inte använda utdata från en annan skuggningsfunktion (dvs. de är bara postlänkbara). Det är valfritt att definiera det här värdet.

Till exempel:

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

Hjälpfunktioner

Hjälpfunktioner används som ersättning för vissa inbyggda HLSL-inbyggda funktioner. Vid kompileringstillfället omdefinieras dessa hjälpfunktioner av Direct2D till rätt version beroende på kompileringsmåltypen (fullständig skuggning eller exportfunktion).

Hjälpfunktionerna:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

effektskuggning som länkar