title: Low precision and clamping when writing to floating point FBO
body: <p>I have an FBO which has been created in the following way:</p>
  
  <pre><code>glGenRenderbuffers(1, &amp;m_depthStencilBuffer);
  glBindRenderbuffer(GL_RENDERBUFFER, m_depthStencilBuffer);
  glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_STENCIL, m_width, m_height);
  glBindRenderbuffer(GL_RENDERBUFFER, 0);
  
  glGenTextures(1, &amp;m_texture);
  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, m_texture);
  glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP);
  glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP);
  glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA32F_ARB, m_width, m_height, 0, GL_RGBA, GL_FLOAT, 0);
  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
  
  glGenFramebuffers(1, &amp;m_frameBuffer);
  glBindFramebuffer(GL_FRAMEBUFFER, m_frameBuffer);
  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE_ARB, m_texture, 0);
  glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthStencilBuffer);
  glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, m_depthStencilBuffer);
  assert(GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER));
  glBindFramebuffer(GL_FRAMEBUFFER, 0);
  assert(GL_NO_ERROR == glGetError());
  </code></pre>
  
  <p>I then render to this with this minimal fragment program:</p>
  
  <pre><code>void main() {
      gl_FragColor = float4(3.001001f, 2.00002f, 7.00003f, 4.00004f);
  }
  </code></pre>
  
  <p>If I read out the pixels like this:</p>
  
  <pre><code>glReadPixels(0, 0, width, height, GL_RGBA, GL_FLOAT, &amp;pixels[0]);
  </code></pre>
  
  <p>and check the pixels written by the above fragment program they are (1, 1, 1, 1). I only added the <code>glReadPixels</code> for testing purposes, I get the same problem if I try to sample the FBO in another fragment program with <code>textureRect</code>.</p>