金属阴影语言中的浮点精度问题

时间:2018-11-10 17:57:13

标签: ios swift precision metal shading

我将值0.00291545的float参数传递给片段着色器。 但是片段功能不适用。 swift code fragment shader

在Xcode调试器的“绑定资源”视图中,该值显示为0.003 Bound Resources

在Xcode着色器调试器视图中,我做了一些测试。它显示将0.0004强制转换为0,将0.0005强制转换为0.001。浮点值的行为类似于半值。 test code in shader debugger

所以,我的问题是:

  1. 为什么先将0.00291545转换为0.003,然后再转换为0?

  2. 为什么float值的精度与一半相同?

  3. 如何使用具有正常精度的浮点值?

1 个答案:

答案 0 :(得分:0)

我发现了问题所在!

Xcode调试器误导了我。

0.00291545未转换为0.003,也未转换为n / a。调试器的显示不正确,但实际上该值是正确的。

感谢Ken Thomases