对于特定的语义,我可以使用哪些字体大小

Which type sizes can I use for specific semantics

Microsoft 提供了一个 list 解释顶点和像素着色器的输入和输出语义。到目前为止,我已经看到了一些不使用记录数据类型的代码示例。他们使用 float3 作为像素着色器的输入 COLORfloat2 作为顶点着色器的输入 POSITION。尽管 2 分量位置或 3 分量颜色对我来说确实有意义,但我找不到这个记录,这让我想知道


不遵循文档的代码示例:

Whosebug - Passing colors through a pixel shader in HLSL

C++ / DirectX11 Tutorials - S02E05 - Creating and loading Shaders 在 9:33

在着色器模型 4.0 及更高版本 (DX10+) 中,唯一重要的语义名称是系统值语义(前缀为 SV_ 的名称)。除了用于将着色器参数与其输入匹配之外,其他语义没有特殊处理。有关语义的文档,例如 COLORfloat4 纯粹是惯例,或者是 DX9 的遗留物。在 DX10/SM4+ 中,没有什么可以阻止您将 COLOR 声明为 float2,或者决定使用 UNICORN 作为颜色的语义名称,但不要感到惊讶如果这会让其他开发人员(或您自己)在将来审查代码时感到困惑。

要回答您的具体问题,是的您可以使用任何您想要的非SV_语义数据类型,甚至可以发明您自己的名称。只需确保在阶段和输入布局声明之间使用一致的命名和通道数即可。