... would be better if they just added a pragma like interface to fragment shaders:
Code :
pragma(out vec4 toFrag0, 0)
pragma(out ivec4 toFrag1, 1)
or extend the layout() deal in fragment shaders:
Code :
layout(fragment_output, 0) out vec4 toFrag0;
layout(fragment_output, 1) out ivec4 toFrag1;
and along those lines one could then use that kind of mentality on interpolators, i.e in vertex shaders:
Code :
layout(vertex_output, 0) out vec4 myValue;
layout(vertex_output, 1) out flat myFlatValue;
and in geometry shaders:
Code :
layout(geometry_input, 0) in vec4 myValue;
layout(geometry_input, 1) in vec4 myFlatValue;
layout(geometry_output, 0) out vec4 myValueForFragging;
and then even in fragment shaders:
Code :
layout(fragment_input, 0) in vec4 myValueForFragging;
but on closer inspection since out/in qualifier is already there, it can all be collapsed to:
Code :
layout(location, N) in/out [flat, centroid, etc] type variable_name;
The sweet part of this being that one can then dictates where attributes and interpolators are, the lazy could even skip calling glAttrbuteLocation...
This comment probably would be best in suggestion for next release or some kind of GL_EXT_separate_shader_objects thread.