#version 330 core layout(triangles) in; layout(line_strip, max_vertices=6) out; in VS_OUT { vec4 normal; } gs_in[]; out vec3 vcolor; uniform mat4 proj; void gen_normals(int index) { vcolor = vec3(0.0, 1.0, 0.0); gl_Position = proj*(gl_in[index].gl_Position); EmitVertex(); gl_Position = proj*(gl_in[index].gl_Position+0.5*gs_in[index].normal); EmitVertex(); EndPrimitive(); } void main(void) { gen_normals(0); gen_normals(1); gen_normals(2); }