如何知道我们是否可以使用 half4 而不是 float4?
How to know if we can use half4 instead of float4?
在metal shader实现中,推荐使用half4而不是float4。但是如何知道我们是否可以使用 half4 而不是 float4?如何知道我们需要多少精度?
基于此Metal Shading Language Specification
浮动:
A 32-bit floating-point. The float data type must conform to the IEEE
754 single precision storage format.
完整 float 精度通常用于世界 space 位置、纹理坐标或涉及复杂函数的标量计算,例如三角函数或 power/exponentiation。
一半:
A 16-bit floating-point. The half data type must conform to the IEEE
754 binary16 storage format.
Half 精度对于短向量、方向、对象 space 位置、高动态范围颜色很有用。
您知道可以使用 half4
而不是 float4
,具体取决于颜色在传递到片段着色器时的编码方式。
半精度浮点数可以准确地表示 0 到 2048 之间的值,因此如果它用于表示 8 位通道(即几乎所有常用的纹理格式),则不会损失保真度。
它还会节省内存传输带宽,这在移动平台上很重要。
在metal shader实现中,推荐使用half4而不是float4。但是如何知道我们是否可以使用 half4 而不是 float4?如何知道我们需要多少精度?
基于此Metal Shading Language Specification
浮动:
A 32-bit floating-point. The float data type must conform to the IEEE 754 single precision storage format.
完整 float 精度通常用于世界 space 位置、纹理坐标或涉及复杂函数的标量计算,例如三角函数或 power/exponentiation。
一半:
A 16-bit floating-point. The half data type must conform to the IEEE 754 binary16 storage format.
Half 精度对于短向量、方向、对象 space 位置、高动态范围颜色很有用。
您知道可以使用 half4
而不是 float4
,具体取决于颜色在传递到片段着色器时的编码方式。
半精度浮点数可以准确地表示 0 到 2048 之间的值,因此如果它用于表示 8 位通道(即几乎所有常用的纹理格式),则不会损失保真度。
它还会节省内存传输带宽,这在移动平台上很重要。