2015-09-15 74 views
0

What is the precision of highp floats in GLSL ES 2.0 (for iPhone/iPod touch/iPad)? ...如何理解「精確」上GLSL

我得到的,例如,在iPhone 5S,即highp浮有「23」的精度。從文檔(第33頁,第4.5.2節--12.),我將其解釋爲「兩個浮點數之間的差值至少爲2^-23,即1.1920929e-7。但我相當公平自信我並沒有正確的理解,因爲我認爲我已經計算出了比兩三個數量級更小的差異(並且超出了這個範圍)(0127)。計算,或我誤解了價值?

回答

2

「兩個浮點數之間的差別至少是2^-23」是不太正確的。

the documentation: 「如果最小的表示值大於是1 +ε然後地板(-log₂(ε))返回在precision。」

那麼,這意味着什麼對你來說是在你的環境中,1之後的下一個可表示數字是(1 + 2^-23)。這與說epsilon總是2^-23不同,因爲浮點精度是nonlinear - 最近的可表示值之間的差異取決於值的大小。如果你閱讀了那篇文章(我推薦),特別要注意的是,可表示值的密度在零附近增加,特別是如果編碼允許變化的話。

+0

這就是我所害怕的(在「我的計算中幸運的」的幌子下)。謝謝! :)你不會碰巧對如何判斷我是否達到密度限制有什麼建議......? –