エフェクト関数の構文 (Direct3D 10)
エフェクト関数は HLSL で記述され、次の構文を使用して宣言されます。
構文
ReturnType FunctionName ( [ ArgumentList ] ) { [ Statements ] };
名前 | 説明 |
---|---|
ReturnType | 任意の HLSL 型です。 |
FunctionName | シェーダー関数の名前を一意に識別する ASCII 文字列です。 |
ArgumentList | コンマで区切られた 1 つ以上の引数です (「関数引数 (DirectX HLSL)」を参照してください)。 |
ステートメント | 関数の本体を構成する 1 つ以上のステートメントです (「ステートメント (DirectX HLSL)」を参照してください)。本体なしで定義された関数はプロトタイプと見なされます。これを使用するには、本体を含めて再定義する必要があります。 |
エフェクト関数はシェーダーである場合もあれば、単にシェーダーによって呼び出される関数である場合もあります。関数は、名前、パラメーターの型、およびターゲット プラットフォームによって一意に識別されます。したがって、関数はオーバーロードできます。有効な HLSL 関数はこの形式に適合している必要があります。HLSL 関数の構文の詳細な一覧については、「関数 (DirectX HLSL)」を参照してください。
例
「BasicHLSL10 サンプル」では、ピクセル シェーダーと頂点シェーダーの両方を使用します。ピクセル シェーダー関数は RenderScenePS という名前で、次に示すとおりです。
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; }