Pomocnicy HLSL
Aby ułatwić autorom pisania linkowalnych cieniowania pikseli, d2d1effecthelpers.hlsli definiuje zestaw rozszerzeń języka HLSL w postaci metod i makr pomocniczych.
Aby dodać d2d1effecthelpers.hlsli do projektu, dodaj instrukcję #include w pliku HLSL. d2d1effecthelpers.hlsli znajduje się w tej samej lokalizacji co inne nagłówki Direct2D, takie jak d2d1.h; Można odwoływać się do niego ze strony właściwości pliku HLSL, dodając makro $(WindowsSDK_IncludePath) do właściwości Dodatkowe katalogi dołączania. Należy pamiętać, że instrukcja #include musi pochodzić po zdefiniowaniu wszystkich dyrektyw preprocesora, takich D2D_INPUT_COUNT.
#include <d2d1effecthelpers.hlsli>
Funkcja Direct2D nie obsługuje łączenia cieniowania zasobów obliczeniowych ani wierzchołków. Jeśli jednak efekt używa cieniowania wierzchołków i cieniowania pikseli, dane wyjściowe cieniowania pikseli mogą być nadal połączone.
Dyrektywy preprocesora
Dyrektywy preprocesora są wymagane do przekazywania informacji na temat efektu. Obejmuje to liczbę danych wejściowych i typ próbkowania poszczególnych danych wejściowych. Poniższe wartości powinny być zdefiniowane w kodzie cieniowania efektu powyżej odpowiedniego punktu wejścia cieniowania, jeśli ma to zastosowanie.
-
D2D_INPUT_COUNT <N>
: deklaruje liczbę danych wejściowych tekstury do efektu. Jeśli efekt ma zmienną liczbę danych wejściowych, ta wartość musi być odpowiednio ograniczona do każdego punktu wejścia cieniowania. Definiowanie tej wartości jest obowiązkowe. -
D2D_INPUT<N>_SIMPLE
: deklaruje N-te dane wejściowe, aby używać prostego próbkowania. Jeśli nie zostanie zdefiniowana, nth dane wejściowe są domyślnie złożone. Definiowanie tej wartości jest opcjonalne. -
D2D_INPUT<N>_COMPLEX
: deklaruje dane wejściowe Nth do korzystania ze złożonego próbkowania. Jeśli nie zostanie zdefiniowana, nth dane wejściowe są domyślnie złożone. Definiowanie tej wartości jest opcjonalne. -
D2D_REQUIRES_SCENE_POSITION
: wskazuje, że funkcja cieniowania wywołuje metody pomocnicze używające wartości położenia sceny (a mianowicie D2DGetScenePosition funkcji pomocnika). Ten parametr powinien być uwzględniony tylko w razie potrzeby, ponieważ tylko jedna funkcja na połączony moduł cieniowania może korzystać z tego parametru. Definiowanie tej wartości jest opcjonalne. -
D2D_CUSTOM_ENTRY
: wskazuje, że funkcja cieniowania pikseli korzysta z danych wyjściowych cieniowania wierzchołków niestandardowych, a tym samym zadeklaruje parametry wejściowe. Wszystkie niestandardowe dane wejściowe cieniowania wierzchołków używają złożonego próbkowania i nie mogą korzystać z danych wyjściowych innej funkcji cieniowania (tj. są one dostępne tylko po łączeniu). Definiowanie tej wartości jest opcjonalne.
Na przykład:
#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
Funkcje pomocnika
Funkcje pomocnika są używane jako zamiennik niektórych natywnych funkcji wewnętrznych HLSL. W czasie kompilacji te funkcje pomocnicze są ponownie definiowane przez funkcję Direct2D w odpowiedniej wersji w zależności od typu docelowego kompilacji (pełne cieniowanie lub funkcja eksportu).
Funkcje pomocnika:
D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY
Tematy pokrewne