#version 420

struct S 
{
    vec3 color;
};

layout(location = 0) out vec3 OutColor;

flat in int u;

void GetColor1(const S i) 
{ 
    OutColor += i.color.x;
}

void GetColor2(const S i, int comp)
{ 
    OutColor += i.color[comp];
}

void GetColor3(const S i, int comp)
{ 
    OutColor += i.color[comp].x;
}

void GetColor4(const S i, int comp)
{ 
    OutColor += i.color[comp].x;
}

void GetColor5(const S i, int comp)
{ 
    OutColor += i.color;
}

void GetColor6(const S i, int comp)
{ 
    OutColor += i.color.yx[comp];
}

void GetColor7(const S i, int comp)
{ 
    OutColor.xy += i.color.yxz.yx;
}

void GetColor8(const S i, int comp)
{ 
    OutColor += i.color.yzx.yx.x.x;
}

void GetColor9(const S i, int comp)
{ 
    OutColor.zxy += i.color;
}

void GetColor10(const S i, int comp)
{ 
    OutColor.zy += i.color.xy;
}

void GetColor11(const S i, int comp)
{ 
    OutColor.zxy.yx += i.color.xy;
}

void GetColor12(const S i, int comp)
{ 
    OutColor[comp] += i.color.x;
}

void GetColor13(const S i, int comp)
{ 
    OutColor.zy[comp] += i.color.x;
}

void GetColor14(const S i, int comp)
{ 
    OutColor.zyx[comp] = i.color.x;
}

void main()
{
    S s;
    OutColor = vec3(0.0);
    GetColor1(s);
    GetColor2(s, u);
    GetColor3(s, u);
    GetColor4(s, u);
    GetColor5(s, u);
    GetColor6(s, u);
    GetColor7(s, u);
    GetColor8(s, u);
    GetColor9(s, u);
    GetColor10(s, u);
    GetColor11(s, u);
    GetColor12(s, u);
    GetColor13(s, u);
    GetColor14(s, u);
}
