#version 150 core layout(triangles_adjacency) in; layout(max_vertices = 30) out; layout(stream = 3, triangle_strip) out; in fromVertex { in vec3 color; } fromV[]; out toFragment { out vec3 color; } toF; out fromVertex { vec3 color; }; void main() { color = fromV[0].color; //?? gl_ClipDistance[3] = gl_in[1].gl_ClipDistance[2]; gl_Position = gl_in[0].gl_Position; gl_PointSize = gl_in[3].gl_PointSize; gl_PrimitiveID = gl_PrimitiveIDIn; gl_Layer = 2; EmitVertex(); color = 2 * fromV[0].color; gl_Position = 2.0 * gl_in[0].gl_Position; gl_PointSize = 2.0 * gl_in[3].gl_PointSize; gl_PrimitiveID = gl_PrimitiveIDIn + 1; gl_Layer = 3; EmitVertex(); EndPrimitive(); }