【发布时间】:2021-03-07 16:38:41
【问题描述】:
在 Metal 中添加两个浮点数时,我没有得到正确的值。
我将图像存储为每个通道的 16 位浮点数。在 Metal 中,我从图像中读取值并尝试将它们相加。金属代码如下所示:
out.write(float4(a, b, a + b, 1.0), id);
这是我在金属调试器中得到的:
如果精度导致结果为 1.93,我会很好,但看起来 Metal 正在向较小的值倾斜。知道为什么会这样吗?
【问题讨论】:
-
我不相信写入(按编码)正在发生。
half实例可提供大约 10 倍于您所需的精度,以查看添加的结果。 -
可能是您正在写入 BGRA 纹理,而不考虑调酒?
0.0094375+0.0094528也不应该是1.93,但这比任何一个值本身都更接近于 expect3d 结果。 -
我不是在写 BGRA 纹理,但如果是这样的话,那就太棒了。