エフェクト関数の構文 (Direct3D 11)

エフェクト関数は HLSL で記述され、次の構文を使用して宣言されます。

構文

ReturnType FunctionName  ( [ ArgumentList ] )  {    [ Statements ]  }; 
名前 説明
ReturnType 任意の HLSL 型です。
FunctionName シェーダー関数の名前を一意に識別する ASCII 文字列です。
ArgumentList コンマで区切られた 1 つ以上の引数です (「関数引数 (DirectX HLSL)」を参照してください)。
ステートメント 関数の本体を構成する 1 つ以上のステートメントです (「ステートメント (DirectX HLSL)」を参照してください)。本体なしで定義された関数はプロトタイプと見なされます。これを使用するには、本体を含めて再定義する必要があります。

エフェクト関数はシェーダーである場合もあれば、単にシェーダーによって呼び出される関数である場合もあります。関数は、名前、パラメーターの型、およびターゲット プラットフォームによって一意に識別されます。したがって、関数はオーバーロードできます。有効な HLSL 関数はこの形式に適合している必要があります。HLSL 関数の構文の詳細な一覧については、「関数 (DirectX HLSL)」を参照してください。

以下に、ピクセル シェーダー関数の例を示します。

         PS_OUTPUT RenderScenePS( VS_OUTPUT In,                          uniform bool bTexture )  {      PS_OUTPUT Output;      // Lookup mesh texture and modulate it with diffuse     if( bTexture )         Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) *                                 In.Diffuse;     else         Output.RGBColor = In.Diffuse;      return Output; }