#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;
}

