次の方法で共有


関数の引数

関数は 1 つ以上の入力引数を受け取ります。各引数を宣言するには、次の構文を使用します。

[InputModifier] 型名 [: Semantic] [InterpolationModifier] [= Initializers]

[修飾子]型名 [: セマンティック] [: 補間修飾子] [= 初期化子]

複数の関数引数がある場合は、コンマで区切られます。

パラメーター

アイテム 形容
InputModifier
引数を入力、出力、またはその両方として識別する省略可能な用語。
価値 形容
入力のみ
インアウト する 入力と出力
する 出力のみ
均一な 定数データのみを入力する

パラメーターは常に値渡しされます。 in は、関数が開始される前に、呼び出し元アプリケーションからパラメーターの値をコピーする必要があることを示します。 out は、パラメーターの最後の値をコピーして、関数が戻ったときに呼び出し元のアプリケーションに返されることを示します。 inout は、両方を指定するための短縮形です。

均一な値は定数レジスタから取得されます。各頂点シェーダーまたはピクセル シェーダー呼び出しでは、均一変数に対して同じ初期値が表示されます。 グローバル変数は、均一として宣言されているかのように扱われます。 最上位以外の関数の場合、uniform は と同義です。 パラメーターの使用法が指定されていない場合、パラメーターの使用法は と見なされます。

型の

引数の型。は、任意の有効な 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)
{
  ...
}

Functions (DirectX HLSL)