Quote Originally Posted by blubee View Post
thanks for the reply, with this project I cannot use double precision as it's on mobile mainly.
Even highp floats aren't guaranteed to have more than a 16-bit mantissa. And the fragment shader isn't required to support highp, only mediump. mediump floats may only have a 10-bit mantissa, and integers may only have 11 bits (including the sign). highp integers (where supported) need only have 17 bits (including the sign).

You can use glGetShaderPrecisionFormat to determine the number of bits of precision for each type and precision for each shader type.

If you want reasonable precision even on devices which only meet the minimum requirements of the specification, you'll need to use two or three integers to store each component and implement your own add/subtract/multiply operations.

Quote Originally Posted by blubee View Post
currently I get about this much detail with 32 bit float values in the fragment shader.
That looks more like a consequence of the iteration limit than precision.