如何知道我们是否可以使用half4而不是float4?

问题描述 投票:1回答:2

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

ios shader metal metalkit
2个回答
1
投票

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

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

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


2
投票

基于此Metal Shading Language Specification

float:

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

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

一半:

16位浮点数。 Half数据类型必须符合IEEE754 binary16存储格式。

Half精度对于短矢量,方向,对象空间位置,高动态范围颜色很有用。

© www.soinside.com 2019 - 2024. All rights reserved.