HLSL 協助程式
為了協助效果作者撰寫可連結的圖元著色器,d2d1effecthelpers.hlsli 會以協助程式方法和巨集的形式定義一組 HLSL 語言延伸模組。
若要將 d2d1effecthelpers.hlsli 新增至專案,請在 HLSL 檔案中新增 #include 語句。 d2d1effecthelpers.hlsli 位於與其他 Direct2D 標頭相同的位置,例如 d2d1.h;您可以將巨集 $(WindowsSDK_IncludePath) 新增至 [其他 Include Directory] 屬性,以從 HLSL 檔案的屬性頁參考它。 請注意,#include 語句必須在定義這類D2D_INPUT_COUNT的任何預處理器指示詞之後。
#include <d2d1effecthelpers.hlsli>
Direct2D 不支援連結計算或頂點著色器。 不過,如果您的效果同時使用頂點著色器和像素著色器,則圖元著色器的輸出仍然可以連結。
預處理器指示詞
需要預處理器指示詞,才能傳達效果的相關信息。 這包括每個輸入的輸入數目和取樣類型。 在適用時,應該在相關著色器進入點上方的效果著色器程式代碼中定義下列值。
-
D2D_INPUT_COUNT <N>
:宣告效果的紋理輸入數目。 如果效果有可變數目的輸入,此值必須適當地限定於每個著色器進入點。 定義此值是必要的。 -
D2D_INPUT<N>_SIMPLE
:宣告第 N 個輸入以使用簡單取樣。 如果未定義,第 N 個輸入預設為複雜。 定義此值是選擇性的。 -
D2D_INPUT<N>_COMPLEX
:宣告第 N 個輸入以使用複雜取樣。 如果未定義,第 N 個輸入預設為複雜。 定義此值是選擇性的。 -
D2D_REQUIRES_SCENE_POSITION
:表示著色器函式會呼叫使用場景位置值的協助程式方法(也就是 D2DGetScenePosition 協助程式函式)。 此參數只應在必要時包含,因為每個連結著色器只能使用此參數一個函式。 定義此值是選擇性的。 -
D2D_CUSTOM_ENTRY
:表示圖元著色器函式會取用自定義頂點著色器的輸出,因此會宣告其輸入參數。 所有自定義頂點著色器輸入都會使用複雜的取樣,而且無法取用另一個著色器函式的輸出(亦即它們只能連結后)。 定義此值是選擇性的。
例如:
#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
協助程式函式
協助程式函式可用來取代某些原生 HLSL 內部函式。 在編譯時期,Direct2D 會將這些協助程式函式重新定義為適當的版本,視編譯目標類型 (完整著色器或導出函式) 而定。
協助程式函式:
D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY
相關主題