#version 460 layout(location = 5) in outBlock { vec4 o3; }; in vec4 gfo1; in vec2 gfo2; out vec4 outColor; layout (binding = 0) uniform sampler2D glass; uniform crossStageBlock1 { uniform vec4 a; vec4 b; }; readonly buffer fragOnlyBlock { vec2 fb1; }; uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName2 [2]; // instance name different from vert vec2 Bar() { return fb1 + blockName2[0].b + blockName2[1].b; } vec4 Foo() { return a + b + blockName2[0].a + blockName2[1].a + vec4(Bar(), 0.0, 0.0); } void main() { vec4 color = gfo1; // o1 is statically used color = color + Foo(); outColor = color; }