如何解释"精度"在glsl上

时间:2015-09-15 21:59:14

标签: opengl-es glsl

来自What is the precision of highp floats in GLSL ES 2.0 (for iPhone/iPod touch/iPad)? ...

例如,我在iPhone 5S上得到的是,highp float的精度为" 23"。从文档(第33页,第4.5.2节 - https://www.khronos.org/files/opengles_shading_language.pdf)中,我将其解释为"两个浮点数之间的差异至少为2 ^ -23,即1.1920929 E-7。但我相当自信我没有正确地理解这一点,因为我认为我已经计算出比这个差小了两三个数量级的差异(并超出了这个范围)。

我对计算感到幸运,还是我误解了价值?

1 个答案:

答案 0 :(得分:2)

"两个浮点数之间的差异至少为2 ^ -23" 并不完全正确。

the documentation:"如果大于 1 的最小可表示值是 1 +ε那么 floor(-log₂(ε) ))precision。"

中返回

那么,这对您来说意味着在您的环境中,1之后的下一个可表示的数字是(1 + 2 ^ -23)。这与说epsilon始终为2 ^ -23并不完全相同,因为浮点精度为nonlinear - 最近可表示值之间的差异取决于值的大小。如果您阅读该文章(我推荐),请特别注意可表示值密度在零附近的增加,特别是如果编码允许变形。