Sdílet prostřednictvím


Pomocné rutiny HLSL

Aby autoři mohli psát odkazovatelné pixelové shadery, d2d1effecthelpers.hlsli definuje sadu jazykových rozšíření HLSL ve formě pomocných metod a maker.

Pokud chcete do projektu přidat d2d1effecthelpers.hlsli, přidejte do souboru HLSL příkaz #include. d2d1effecthelpers.hlsli se nachází ve stejném umístění jako ostatní hlavičky Direct2D, jako je d2d1.h; Lze na něj odkazovat ze stránky vlastností souboru HLSL přidáním makra $(WindowsSDK_IncludePath) do vlastnosti Další adresáře include. Všimněte si, že příkaz #include musí pocházet po definici všech direktiv preprocesoru, které jsou takové D2D_INPUT_COUNT.

#include <d2d1effecthelpers.hlsli>

Direct2D nepodporuje propojení výpočetních nebo vrcholových shaderů. Pokud ale váš efekt používá vrcholový shader i shader pixelů, může být výstup shaderu pixelů stále propojený.

Direktivy preprocesoru

Direktivy preprocesoru jsou vyžadovány ke sdělení informací o efektu. To zahrnuje počet vstupů a typ vzorkování každého vstupu. Následující hodnoty by měly být definovány v kódu shaderu efektu nad příslušným vstupním bodem shaderu, pokud je to možné.

  • D2D_INPUT_COUNT <N> : Deklaruje počet vstupů textury k efektu. Pokud má efekt proměnlivý počet vstupů, musí být tato hodnota odpovídajícím způsobem vymezena na každý vstupní bod shaderu. Definování této hodnoty je povinné.
  • D2D_INPUT<N>_SIMPLE: Deklaruje Nth vstup pro použití jednoduchého vzorkování. Pokud není definovaný, výchozí hodnota Nth vstupu je složitá. Definování této hodnoty je volitelné.
  • D2D_INPUT<N>_COMPLEX: Deklaruje Nth vstup pro použití komplexního vzorkování. Pokud není definovaný, výchozí hodnota Nth vstupu je složitá. Definování této hodnoty je volitelné.
  • D2D_REQUIRES_SCENE_POSITION : Označuje, že funkce shaderu volá pomocné metody, které používají hodnotu pozice scény (konkrétně D2DGetScenePosition pomocné funkce). Tento parametr by měl být zahrnut pouze v případě potřeby, protože tento parametr může využívat pouze jedna funkce na propojený shader. Definování této hodnoty je volitelné.
  • D2D_CUSTOM_ENTRY : Označuje, že funkce shaderu pixelů využívá výstup vlastního shaderu vrcholů, a proto deklaruje své vstupní parametry. Všechny vlastní vstupy shaderu vrcholů používají komplexní vzorkování a nemůžou využívat výstup jiné funkce shaderu (tj. jsou pouze po propojení). Definování této hodnoty je volitelné.

Například:

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

Pomocné funkce

Pomocné funkce se používají jako náhrada některých nativních vnitřních funkcí HLSL. V době kompilace jsou tyto pomocné funkce předdefinovány rozhraním Direct2D do příslušné verze v závislosti na cílovém typu kompilace (full shader nebo funkce exportu).

Pomocné funkce:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

propojení shaderu efektu