#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();
}
