title: lowp vs. mediump vs. highp in glsl?
body: <p>I've been working for the past week on a custom shader. I had various strange issues that were not resolved until I switched almost all floating-point variables to <code>highp</code>. </p>
  
  <p>However, today I discovered that a bicubic interpolation algorithm would actually have color banding if I used <code>highp</code> for the input texture coordinates (which are between 0 and 1.0). If I use <code>mediump</code> it works fine.</p>
  
  <p>I was wondering if someone could explain why this is. According to this document:</p>
  
  <p><a href="http://www.khronos.org/files/opengles_shading_language.pdf" rel="noreferrer">http://www.khronos.org/files/opengles_shading_language.pdf</a></p>
  
  <p><code>highp</code> has a floating point magnitude range of 2^-62 to 2^62, and a floating point precision (relative) of 2^-16.</p>
  
  <p>Whereas <code>mediump</code> has a floating point magnitude range of 2^-14 to 2^14, and floating point precision (relative) of 2^-10.</p>
  
  <p>If I'm understanding this correctly, this <em>should</em> mean that <code>mediump</code> would always be less accurate than <code>highp</code>. Why is this not the case?</p>