Why does GLSL's arithmetic functions yield so different results on the iPad than on the simulator?

岁酱吖の 提交于 2019-12-03 15:32:33

The GLSL ES documentation says pow is undefined if x < 0 or if x = 0 and y ≤ 0.

The simulator uses an x86 floating point unit and Mac OS X numerical libraries. The iPad uses either an ARM FPU.

Also pow() is a library routine that uses an approximation algorithm.

In GLSL pow is implemented as a function of exp2 and log2. Since the logarithm function is not defined for negative real numbers, pow() is not either.

See the GLSL ES 3.0 specification page 47, or GLSL 4.4 specification page 88.

pow(x, y) Inherited from exp2(x * log2(y))

Also from the specification:

genType pow(genType x, genType y)

  • Returns x raised to the y power, i.e., x^y
  • Results are undefined if x < 0.
  • Results are undefined if x = 0 and y <= 0.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!