#version 450 layout(vertices = 4) out; struct VertexData { mat4 a; vec4 b[2]; vec4 c; }; layout(location = 0) in VertexData vInputs[gl_MaxPatchVertices]; layout(location = 0) out vec4 vOutputs[4]; void main() { VertexData tmp[gl_MaxPatchVertices] = vInputs; VertexData tmp_single = vInputs[gl_InvocationID ^ 1]; vOutputs[gl_InvocationID] = tmp[gl_InvocationID].a[1] + tmp[gl_InvocationID].b[1] + tmp[gl_InvocationID].c + tmp_single.c; }