title: "flat" qualifier in glsl?
body: <p>So I was reading "The Official OpenGL Guide" and in a section where they taught material lighting, they suddenly used the "flat" qualifier for an input variable in the fragment shader.
  I google'd the matter and all I came up with was "flat shading" and "smooth shading" and the differences between them, which I cannot understand how it is related to a simple "MatIndex" variable.
  here's the example code from the book:</p>
  
  <pre><code>struct MaterialProperties {
  vec3 emission;
  vec3 ambient;
  vec3 diffuse;
  vec3 specular;
  float shininess;
  };
  // a set of materials to select between, per shader invocation
  const int NumMaterials = 14;
  uniform MaterialProperties Material[NumMaterials];
  flat in int MatIndex; // input material index from vertex shader
  </code></pre>
  
  <p>What is this all about?</p>