関数の引数
関数は 1 つ以上の入力引数を受け取ります。各引数を宣言するには、次の構文を使用します。
[InputModifier]型名 [: Semantic] [InterpolationModifier] [= Initializers] |
[修飾子]型名 [: セマンティック] [: 補間修飾子] [= 初期化子]
複数の関数引数がある場合は、コンマで区切られます。
パラメーター
Item | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
InputModifier |
引数を入力、出力、またはその両方として識別する省略可能な用語。
パラメーターは常に値渡しされます。 in は、関数が開始される前に、呼び出し元のアプリケーションから パラメーターの値を コピーする必要があることを示します。 out は、パラメーターの最後の値をコピーアウトし、関数が戻るときに呼び出し元のアプリケーションに返されることを示します。 inout は、両方を指定するための短縮形です。 一様な値は定数レジスタから取得されます。各頂点シェーダーまたはピクセル シェーダー呼び出しでは、均一変数に対して同じ初期値が表示されます。 グローバル変数は、均一として宣言されているかのように扱われます。 最上位以外の関数の場合、uniform は in と同義です。 パラメーターの使用法が指定されていない場合、パラメーターの使用法は であると見なされます。 |
||||||||||
型 |
引数の型。には、任意の有効な HLSL 型を指定できます。 |
||||||||||
名前 |
シェーダー関数の名前を一意に識別する ASCII 文字列。 |
||||||||||
セマンティック |
データの使用目的を識別する省略可能な文字列 ( 「セマンティクス (DirectX HLSL)」を参照)。 |
||||||||||
InterpolationModifier |
シェーダー が補間 の方法を決定できるようにするオプションの補間修飾子。 関数引数の補間修飾子は、ピクセル シェーダー関数への入力として使用される引数にのみ適用されます。 |
||||||||||
初期化 子 |
初期化の省略可能な値。マルチコンポーネント データ型を初期化するには、複数の値が必要です。 |
注釈
関数の引数は、関数宣言のコンマ区切りの引数リストに一覧表示されます。 C 関数と同様に、各引数にはパラメーター名と型が宣言されている必要があります。HLSL 関数の引数には、必要に応じてセマンティック、初期値、ピクセル シェーダー入力に補間型を含めることができます。
関数引数の 型 は、メンバーごとの補間修飾子を含む構造体である可能性があります。 関数引数にも補間修飾子がある場合、関数引数修飾子は Type 内で宣言された補間修飾子をオーバーライドします。
例
この例 ( BasicHLSL10 サンプル) は、頂点シェーダー関数への均一な入力と非均一な入力を示しています。
VS_OUTPUT RenderSceneVS(
float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
...
}
この例 ( ContentStreaming サンプル) では、入力構造体を使用してピクセル シェーダー関数に引数を渡します。
VSBasicIn input
struct VSBasicIn
{
float4 Pos : POSITION;
float3 Norm : NORMAL;
float2 Tex : TEXCOORD0;
};
PSBasicIn VSBasic(VSBasicIn input)
{
...
}