#version 150 #extension GL_ARB_gpu_shader5 : require uniform ivec4 u1; uniform uvec4 u2; out vec4 result; vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1 vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2 void main() { result = f(u1, u2); // should match choice 2. which have less implicit conversion. switch (gl_VertexID) { case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break; case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break; case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break; case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break; } }