D3D12_SIGNATURE_PARAMETER_DESC 结构 (d3d12shader.h)

描述着色器签名。

语法

typedef struct _D3D12_SIGNATURE_PARAMETER_DESC {
  LPCSTR                      SemanticName;
  UINT                        SemanticIndex;
  UINT                        Register;
  D3D_NAME                    SystemValueType;
  D3D_REGISTER_COMPONENT_TYPE ComponentType;
  BYTE                        Mask;
  BYTE                        ReadWriteMask;
  UINT                        Stream;
  D3D_MIN_PRECISION           MinPrecision;
} D3D12_SIGNATURE_PARAMETER_DESC;

成员

SemanticName

一个每个参数字符串,用于标识数据的使用方式。 有关详细信息,请参阅 语义

SemanticIndex

修改语义的语义索引。 用于区分使用相同语义的不同参数。

Register

将包含此变量数据的寄存器。

SystemValueType

一个D3D_NAME类型的值,用于标识确定某些管道阶段功能的预定义字符串。

ComponentType

一个D3D_REGISTER_COMPONENT_TYPE类型的值,用于标识存储在寄存器中的每个组件数据类型。 每个寄存器最多可以存储四个组件的数据。

Mask

指示使用寄存器的哪些组件的掩码。

ReadWriteMask

指示如果签名是输出签名) (,则始终读取给定组件,如果签名是输入签名) ,则始终读取 (的掩码。

Stream

指示几何着色器用于签名参数的流。

MinPrecision

一个D3D_MIN_PRECISION类型的值,指示所需的最小内插精度。 有关详细信息,请参阅 使用 HLSL 最小精度

注解

着色器可以采用 n 个输入,并且可以生成 m 输出。 输入 (或输出的顺序) 参数、其关联类型和任何附加语义构成着色器签名。 每个着色器都有一个输入签名和一个输出签名。

编译着色器或效果时,某些 API 会调用验证着色器签名,即将一个着色器的输出签名 ((如顶点着色器) )与另一个着色器的输入签名进行比较, (像素着色器) 。 这可确保着色器输出的数据与使用该数据的下游着色器兼容。 兼容意味着着色器签名是上一个着色器阶段的完全匹配子集。 完全匹配意味着参数类型和语义必须完全匹配。 子集意味着下游阶段不需要的参数不需要在其着色器签名中包括该参数。

通过调用 ID3D12ShaderReflection::GetInputParameterDesc 等 API 从着色器或效果获取着色器签名。

要求

要求
Header d3d12shader.h

另请参阅

着色器结构