次の方法で共有


D3D10_SIGNATURE_PARAMETER_DESC

シェーダー シグネチャについて記述します。

typedef struct D3D10_SIGNATURE_PARAMETER_DESC {
    LPCSTR SemanticName;
    UINT SemanticIndex;
    UINT Register;
    D3D10_NAME SystemValueType;
    D3D10_REGISTER_COMPONENT_TYPE ComponentType;
    BYTE Mask;
    BYTE ReadWriteMask;
} D3D10_SIGNATURE_PARAMETER_DESC;

メンバ

  • SemanticName
    データの使用方法を特定するパラメーターごとの文字列です。「セマンティクス (DirectX HLSL)」を参照してください。
  • SemanticIndex
    セマンティクスを変更する際のセマンティクス インデックスです。同じセマンティクスを使用するさまざまなパラメーターを区別するために使われます。
  • Register
    この変数のデータが格納されるレジスタです。
  • SystemValueType
    特定のパイプライン ステージの機能を決定する事前に定義された文字列です。「D3D10_NAME」を参照してください。
  • ComponentType
    レジスタに保存される構成要素別のデータ型です。「D3D10_REGISTER_COMPONENT_TYPE」を参照してください。各レジスタには、データの最大 4 つの構成要素を保存できます。
  • Mask
    レジスタのどの構成要素を使用するかを示すマスクです。
  • ReadWriteMask
    指定された構成要素に書き込みを行わない (シグネチャが出力シグネチャの場合)、または常に読み取りである (シグネチャが入力シグネチャの場合) かどうかを示すマスクです。このマスクは、D3D10_REGISTER_COMPONENT_TYPE の値の組合せです。

解説 

シェーダーは n 個の入力を受け取り、m 個の出力を生成することができます。入力 (または出力) パラメーターの順序、関連付けられている型、および設定されているセマンティクスによって、シェーダーのシグネチャが構成されます。それぞれのシェーダーには、入力シグネチャと出力シグネチャが割り当てられます。

シェーダーまたはエフェクトのコンパイル時に、一部の API 呼び出しはシェーダーのシグネチャ (D3D10CompileShaderD3D10CompileEffectFromMemory など) を検証します。つまり、あるシェーダー (頂点シェーダーなど) の出力シグネチャを、別のシェーダー (ピクセル シェーダーなど) の入力シグネチャと比較します。これによって、シェーダーから出力されるデータが、そのデータを使用するダウンストリーム シェーダーと互換性があることが保証されます。互換性があるとは、シェーダーのシグネチャが直前のシェーダー ステージと完全に一致するサブセットであることを意味します。完全一致とは、パラメーターの型とセマンティクスが完全に一致しているということです。サブセットとは、ダウンストリーム ステージで不要なパラメーターは、そのシェーダーのシグネチャに含める必要がないことを意味します。

シェーダーまたはエフェクトからシェーダーのシグネチャを取得するには、ID3D10ShaderReflection::GetInputParameterDesc または ID3D10EffectShaderVariable::GetInputSignatureElementDesc などの API を呼び出します。

要件

ヘッダー: D3D10Shader.h 宣言

関連項目

シェーダー構造体