#version 460

out vec4 o;

// default uniforms will be gathered into a uniform block
// final global block will merge uniforms from all linked files
uniform vec4 a;     // declared in both stages
uniform vec2 b1;    // declaration order swapped in other stage
uniform vec2 b2;
uniform vec4 c1;    // not delcared in other file
uniform vec4 d;

// final global buffer will berge buffers from all linked files
layout (binding = 0) uniform atomic_uint counter1;
layout (binding = 0) uniform atomic_uint counter2;

vec4 foo();

vec4 bar() {
    uint j = atomicCounterIncrement(counter1) + atomicCounterDecrement(counter2);
    vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c1 + d;

    return float(j) * v;
}

void main() {
    o = foo() + bar();
}