#version 330 core layout(triangles) in; layout(line_strip, max_vertices = 6) out; in VS_OUT { vec3 normal; } gs_in[]; uniform mat4 proj; const float MAGNITUDE = 0.4; void generate_line(int index) { gl_Position = proj*gl_in[index].gl_Position; EmitVertex(); gl_Position = proj*(gl_in[index].gl_Position+ vec4(gs_in[index].normal, 0.0)*MAGNITUDE); EmitVertex(); EndPrimitive(); } void main(void) { /* vec4 center = (gl_in[0].gl_Position+ gl_in[1].gl_Position+ gl_in[2].gl_Position)/3.0; vec4 end = center+vec4(((gs_in[0].normal+ gs_in[1].normal+ gs_in[2].normal)/3.0), 0.0)*MAGNITUDE; gl_Position = proj*center; EmitVertex(); gl_Position = proj*end; EmitVertex(); EndPrimitive(); */ generate_line(0); generate_line(1); generate_line(2); }