【问题标题】:"nointerpolation" hlsl specifier on dx9 and ps3_0dx9 和 ps3_0 上的 \"nointerpolation\" hlsl 说明符
【发布时间】:2023-01-21 23:26:44
【问题描述】:

问题: dx9dx11 上相同着色器的不同结果。在对其进行 pix 调试后,我发现它会插入值。平面阴影模式修复了但不能使用。

nointerpolation float flStart : COLOR1;
nointerpolation float flEnd : COLOR2;

原因: 似乎 ps3_0 只是在 ps4_0 和更高版本没有时忽略 nointerpolation 说明符

问题: 是dx9还是ps3_0的bug?有没有其他可能的方法不通过 vs 插入它们?

【问题讨论】:

  • 这些值需要每个顶点还是可以将它们放入常量缓冲区?
  • 仅每个顶点,我也知道我可以/应该为三角形中的所有顶点强制使用相同的值,但这会更昂贵所以我很好奇如何避免这种情况

标签: render interpolation hlsl directx-9


【解决方案1】:

Shader Model 3.0 不支持插值限定符。在 Shader Model 4.0 中,插值模式在 dcl_input 指令中指定为附加限定符,而 Shader Model 3.0 的 dcl_texcoorddcl_color 指令部分不采用此类限定符。

编译器没有为此发出诊断可能是一个错误。

【讨论】:

    最近更新 更多