【问题标题】:How to know if we can use half4 instead of float4?如何知道我们是否可以使用 half4 而不是 float4?
【发布时间】:2020-02-22 17:25:48
【问题描述】:

在金属着色器实现中,建议使用half4而不是float4。但是如何知道我们是否可以使用 half4 而不是 float4?如何知道我们需要的精度?

【问题讨论】:

    标签: ios shader metal metalkit


    【解决方案1】:

    您知道您可以使用half4,而不是float4,具体取决于颜色在传递到片段着色器时的编码方式。

    半精度浮点数可以精确地表示 0 到 2048 的值,因此如果它用于表示 8 位通道(即几乎所有常用的纹理格式),那么保真度不会降低。

    它还将节省内存传输带宽,这在移动平台上很重要。

    【讨论】:

      【解决方案2】:

      基于此Metal Shading Language Specification

      浮点数:

      一个 32 位浮点数。浮点数据类型必须符合 IEEE 754单精度存储格式。

      float精度通常用于世界空间位置、纹理坐标或涉及复杂函数(例如三角函数或幂/幂)的标量计算。

      一半:

      16 位浮点数。半数据类型必须符合 IEEE 754 binary16存储格式。

      半精度适用于短向量、方向、对象空间位置、高动态范围颜色。

      【讨论】:

      • 这不能回答问题。 OP 想知道何时可以使用 half4 代替 float4,而不是它们是什么。
      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多