对于特定的语义,我可以使用哪些字体大小
Which type sizes can I use for specific semantics
Microsoft 提供了一个 list 解释顶点和像素着色器的输入和输出语义。到目前为止,我已经看到了一些不使用记录数据类型的代码示例。他们使用 float3
作为像素着色器的输入 COLOR
或 float2
作为顶点着色器的输入 POSITION
。尽管 2 分量位置或 3 分量颜色对我来说确实有意义,但我找不到这个记录,这让我想知道
我可以使用 float3
作为顶点着色器输入 POSITION
(如果我知道我不会使用 W 组件)而不会出现错误吗?
如果我可以使用记录的数据类型以外的数据类型,是否有可用的列表显示每个允许的语义数据类型或像 "As long as the used data type is smaller or equally sized as the documented one, you can use it" 这样的规则?
不遵循文档的代码示例:
Whosebug - Passing colors through a pixel shader in HLSL
C++ / DirectX11 Tutorials - S02E05 - Creating and loading Shaders 在 9:33
在着色器模型 4.0 及更高版本 (DX10+) 中,唯一重要的语义名称是系统值语义(前缀为 SV_
的名称)。除了用于将着色器参数与其输入匹配之外,其他语义没有特殊处理。有关语义的文档,例如 COLOR
是 float4
纯粹是惯例,或者是 DX9 的遗留物。在 DX10/SM4+ 中,没有什么可以阻止您将 COLOR
声明为 float2
,或者决定使用 UNICORN
作为颜色的语义名称,但不要感到惊讶如果这会让其他开发人员(或您自己)在将来审查代码时感到困惑。
要回答您的具体问题,是的您可以使用任何您想要的非SV_
语义数据类型,甚至可以发明您自己的名称。只需确保在阶段和输入布局声明之间使用一致的命名和通道数即可。
Microsoft 提供了一个 list 解释顶点和像素着色器的输入和输出语义。到目前为止,我已经看到了一些不使用记录数据类型的代码示例。他们使用 float3
作为像素着色器的输入 COLOR
或 float2
作为顶点着色器的输入 POSITION
。尽管 2 分量位置或 3 分量颜色对我来说确实有意义,但我找不到这个记录,这让我想知道
我可以使用
float3
作为顶点着色器输入POSITION
(如果我知道我不会使用 W 组件)而不会出现错误吗?如果我可以使用记录的数据类型以外的数据类型,是否有可用的列表显示每个允许的语义数据类型或像 "As long as the used data type is smaller or equally sized as the documented one, you can use it" 这样的规则?
不遵循文档的代码示例:
Whosebug - Passing colors through a pixel shader in HLSL
C++ / DirectX11 Tutorials - S02E05 - Creating and loading Shaders 在 9:33
在着色器模型 4.0 及更高版本 (DX10+) 中,唯一重要的语义名称是系统值语义(前缀为 SV_
的名称)。除了用于将着色器参数与其输入匹配之外,其他语义没有特殊处理。有关语义的文档,例如 COLOR
是 float4
纯粹是惯例,或者是 DX9 的遗留物。在 DX10/SM4+ 中,没有什么可以阻止您将 COLOR
声明为 float2
,或者决定使用 UNICORN
作为颜色的语义名称,但不要感到惊讶如果这会让其他开发人员(或您自己)在将来审查代码时感到困惑。
要回答您的具体问题,是的您可以使用任何您想要的非SV_
语义数据类型,甚至可以发明您自己的名称。只需确保在阶段和输入布局声明之间使用一致的命名和通道数即可。