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 呼び出しはシェーダーのシグネチャ (D3D10CompileShader や D3D10CompileEffectFromMemory など) を検証します。つまり、あるシェーダー (頂点シェーダーなど) の出力シグネチャを、別のシェーダー (ピクセル シェーダーなど) の入力シグネチャと比較します。これによって、シェーダーから出力されるデータが、そのデータを使用するダウンストリーム シェーダーと互換性があることが保証されます。互換性があるとは、シェーダーのシグネチャが直前のシェーダー ステージと完全に一致するサブセットであることを意味します。完全一致とは、パラメーターの型とセマンティクスが完全に一致しているということです。サブセットとは、ダウンストリーム ステージで不要なパラメーターは、そのシェーダーのシグネチャに含める必要がないことを意味します。
シェーダーまたはエフェクトからシェーダーのシグネチャを取得するには、ID3D10ShaderReflection::GetInputParameterDesc または ID3D10EffectShaderVariable::GetInputSignatureElementDesc などの API を呼び出します。
要件
ヘッダー: D3D10Shader.h 宣言