#version 460 layout(points) in; layout(triangle_strip, max_vertices=3) out; in vec4 vgo1[]; in vec2 vgo2[]; layout(location = 5) in outBlock { vec4 o3; } inBlock[]; out vec4 gfo1; out vec2 gfo2; layout(location = 5) out outBlock { vec4 o3; } gf_out; uniform vec2 u1; uniform vec3 u2 = vec3(0); // initializer not present in fragment stage uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage uniform crossStageBlock2 { uniform vec4 a; vec2 b; } blockName1 [2]; // instance name different from frag void main() { for (int i = 0; i < 3; i++) { gfo1 = vec4(0); gfo2 = vec2(0); gf_out.o3 = inBlock[i].o3; EmitVertex(); } EndPrimitive(); }