Udostępnij za pośrednictwem


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

cieniowanie efektów