在金属着色器实现中,建议使用half4而不是float4。但是如何知道我们是否可以使用half4而不是float4呢?如何知道我们需要的精确度
iswrvxsc1#
你知道你可以使用half4,而不是float4,这取决于颜色在传递到片段着色器时的编码方式。半精度浮点数可以精确地表示0到2048的值,因此如果它用于表示8位通道(即,几乎所有常用的纹理格式),则不会损失保真度。它还将节省保存传输带宽,这在移动的平台上非常重要。
half4
float4
7rfyedvj2#
基于此Metal Shading Language Specification
float:
32位浮点数。浮点数据类型必须符合IEEE 754单精度存储格式。全浮点精度通常用于世界空间位置、纹理坐标或涉及复杂函数(如三角函数或幂/幂)的标量计算。
一半:
16位浮点数。半数据类型必须符合IEEE 754二进制16存储格式。
半精度适用于短矢量、方向、对象空间位置、高动态范围颜色。
yh2wf1be3#
From:enter link description here一般的经验法则是,除了位置和纹理坐标之外,所有内容都以半精度开始。仅当半精度不足以满足某些计算部分时才增加精度。
3条答案
按热度按时间iswrvxsc1#
你知道你可以使用
half4
,而不是float4
,这取决于颜色在传递到片段着色器时的编码方式。半精度浮点数可以精确地表示0到2048的值,因此如果它用于表示8位通道(即,几乎所有常用的纹理格式),则不会损失保真度。
它还将节省保存传输带宽,这在移动的平台上非常重要。
7rfyedvj2#
基于此Metal Shading Language Specification
float:
32位浮点数。浮点数据类型必须符合IEEE 754单精度存储格式。
全浮点精度通常用于世界空间位置、纹理坐标或涉及复杂函数(如三角函数或幂/幂)的标量计算。
一半:
16位浮点数。半数据类型必须符合IEEE 754二进制16存储格式。
半精度适用于短矢量、方向、对象空间位置、高动态范围颜色。
yh2wf1be3#
From:enter link description here一般的经验法则是,除了位置和纹理坐标之外,所有内容都以半精度开始。仅当半精度不足以满足某些计算部分时才增加精度。