Helper HLSL
Per aiutare gli autori a scrivere pixel shader collegabili, d2d1effecthelpers.hlsli definisce un set di estensioni del linguaggio HLSL sotto forma di metodi helper e macro.
Per aggiungere d2d1effecthelpers.hlsli al progetto, aggiungere un'istruzione #include nel file HLSL. d2d1effecthelpers.hlsli si trova nella stessa posizione di altre intestazioni Direct2D, ad esempio d2d1.h; può essere fatto riferimento dalla pagina delle proprietà del file HLSL aggiungendo la macro $(WindowsSDK_IncludePath) alla proprietà Directory di inclusione aggiuntive. Si noti che l'istruzione #include deve provenire dopo la definizione di qualsiasi direttiva del preprocessore, ad esempio D2D_INPUT_COUNT.
#include <d2d1effecthelpers.hlsli>
Direct2D non supporta il collegamento di compute o vertex shader. Tuttavia, se l'effetto usa sia un vertex shader che un pixel shader, l'output del pixel shader può comunque essere collegato.
Direttive del preprocessore
Le direttive del preprocessore sono necessarie per comunicare informazioni sull'effetto. Sono inclusi il numero di input e il tipo di campionamento di ogni input. I valori seguenti devono essere definiti nel codice dello shader dell'effetto sopra il punto di ingresso dello shader pertinente, se applicabile.
-
D2D_INPUT_COUNT <N>
: dichiara il numero di input di trama all'effetto. Se l'effetto ha un numero variabile di input, questo valore deve essere limitato in modo appropriato a ogni punto di ingresso dello shader. La definizione di questo valore è obbligatoria. -
D2D_INPUT<N>_SIMPLE
: dichiara l'Nth input per usare il campionamento semplice. Se non è definito, il valore predefinito dell'input Nth è complesso. La definizione di questo valore è facoltativa. -
D2D_INPUT<N>_COMPLEX
: dichiara l'N° input per l'uso di campionamento complesso. Se non è definito, il valore predefinito dell'input Nth è complesso. La definizione di questo valore è facoltativa. -
D2D_REQUIRES_SCENE_POSITION
: indica che la funzione shader chiama metodi helper che usano il valore della posizione della scena ,vale a dire il D2DGetScenePosition funzione helper). Questo parametro deve essere incluso solo quando necessario, poiché solo una funzione per ogni shader collegato può usare questo parametro. La definizione di questo valore è facoltativa. -
D2D_CUSTOM_ENTRY
: indica che la funzione pixel shader utilizza l'output di un vertex shader personalizzato e quindi dichiarerà i parametri di input. Tutti gli input del vertex shader personalizzati usano il campionamento complesso e non possono utilizzare l'output di un'altra funzione shader( ovvero sono solo post-linkable). La definizione di questo valore è facoltativa.
Per esempio:
#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
Funzioni helper
Le funzioni helper vengono usate come sostituzione per alcune funzioni intrinseche HLSL native. In fase di compilazione, queste funzioni helper vengono ridefinite da Direct2D nella versione appropriata a seconda del tipo di destinazione di compilazione (funzione full shader o export).
Le funzioni helper:
D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY
Argomenti correlati
-
collegamento effect shader