#version 460 layout (location = 0) in vec4 io; out vec4 o; // default uniforms will be gathered into a uniform block uniform vec4 a; // declared in both stages with different types uniform float test; // declared twice in this compilation unit uniform vec2 test; vec4 foo() { return a + vec4(test); } void main() { o = io + foo(); }