是否可以使用浮点数的所有16位来对GLSL中的纹理进行采样

时间:2012-11-25 13:01:47

标签: android opengl-es opengl-es-2.0 glsl

我现在尝试使用浮点矢量对纹理进行采样,但我发现浮点精度仅为2 ^ -10位且分辨率非常有限。所以我想知道我是否可以使用mediump浮动变量的所有16位来对纹理进行采样?谢谢。

1 个答案:

答案 0 :(得分:2)

使用16位浮点数的全部16位。这就是16-bit floating-point number 的内容。它们有~11位尾数和5位指数。你不能使半精度浮点值超过~11位的尾数。

您可以尝试在顶点着色器中将数字乘以4096,但这只有在纹理坐标原来是32位浮点数(将其转换为半精度)之前才有用。

简而言之:纹理坐标通常需要比这更精确。因此,您将拥有以使用更高精度的浮点值。