HLSL ヘルパー
リンク可能なピクセル シェーダーを作成する効果作成者を支援するために、d2d1effecthelpers.hlsli は、ヘルパー メソッドとマクロの形式で HLSL 言語拡張のセットを定義します。
プロジェクトに d2d1effecthelpers.hlsli を追加するには、HLSL ファイルに #include ステートメントを追加します。 d2d1effecthelpers.hlsli は、d2d1.h などの他の Direct2D ヘッダーと同じ場所にあります。これは、マクロ $(WindowsSDK_IncludePath) を追加インクルード ディレクトリ プロパティに追加することで、HLSL ファイルのプロパティ ページから参照できます。 #include ステートメントは、D2D_INPUT_COUNTなどのプリプロセッサ ディレクティブが定義された後に記述する必要があることに注意してください。
#include <d2d1effecthelpers.hlsli>
Direct2D では、コンピューティング シェーダーまたは頂点シェーダーのリンクはサポートされていません。 ただし、効果で頂点シェーダーとピクセル シェーダーの両方を使用している場合でも、ピクセル シェーダーの出力をリンクできます。
プリプロセッサ ディレクティブ
プリプロセッサ ディレクティブは、効果に関する情報を伝達するために必要です。 これには、各入力の入力数とサンプリングの種類が含まれます。 該当する場合は、関連するシェーダー エントリ ポイントの上のエフェクト シェーダー コードで次の値を定義する必要があります。
-
D2D_INPUT_COUNT <N>
: 効果に対するテクスチャ入力の数を宣言します。 効果に可変数の入力がある場合、この値は各シェーダー エントリ ポイントに適切にスコープ設定する必要があります。 この値の定義は必須です。 -
D2D_INPUT<N>_SIMPLE
: 単純なサンプリングを使用するように N 番目の入力を宣言します。 定義されていない場合、N 番目の入力は既定で complex になります。 この値の定義は省略可能です。 -
D2D_INPUT<N>_COMPLEX
: N 番目の入力を宣言して、複雑なサンプリングを使用します。 定義されていない場合、N 番目の入力は既定で complex になります。 この値の定義は省略可能です。 -
D2D_REQUIRES_SCENE_POSITION
: シェーダー関数がシーン位置値を使用するヘルパー メソッド (つまり、D2DGetScenePosition ヘルパー関数) を呼び出したことを示します。 このパラメーターは、リンクされたシェーダーごとに 1 つの関数しか使用できないので、必要な場合にのみ含める必要があります。 この値の定義は省略可能です。 -
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
関連トピック