#version 330 core layout (triangles) in; layout (triangle_strip, max_vertices = 200) out; uniform mat4 model; uniform mat4 view; uniform mat4 projection; out vec3 origCoord; void main() { vec4 triangle1Pos = gl_in[0].gl_Position; // //Each new vertex is a new triangle using the previous two // float bladeHeight = 0.2; for(float x = 0; x < 4; x++){ for(float y = 0; y < 4; y++){ float xPos = x / 20.0; float yPos = y / 20.0; origCoord = (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.0 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.0 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.05 + xPos, 0.45, 0.0 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.05 + xPos, 0.45, 0.0 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.025 + xPos, 0.95, 0.025 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.025 + xPos, 0.45 + bladeHeight, 0.025 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.05 + xPos, 0.45, 0.05 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.05 + xPos, 0.45, 0.05 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.05 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.05 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.025 + xPos, 0.95, 0.025 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.025 + xPos, 0.45 + bladeHeight, 0.025 + yPos, 0.0)); EmitVertex(); origCoord = (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.0 + yPos, 0.0)).xyz; gl_Position = projection * view * model * (triangle1Pos + vec4( 0.0 + xPos, 0.45, 0.0 + yPos, 0.0)); EmitVertex(); EndPrimitive(); } // EndPrimitive(); } // gl_Position = projection * view * model * (gl_in[0].gl_Position + vec4( 1.0, 1.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[0].gl_Position + vec4( 0.0, 1.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[0].gl_Position + vec4( 0.0, 0.0, 0.0, 1.0)); // EmitVertex(); // EndPrimitive(); // gl_Position = projection * view * model * (gl_in[1].gl_Position + vec4( 1.0, 0.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[1].gl_Position + vec4( 0.0, 1.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[1].gl_Position + vec4( 0.0, 0.0, 0.0, 1.0)); // EmitVertex(); // EndPrimitive(); // gl_Position = projection * view * model * (gl_in[2].gl_Position + vec4( 1.0, 0.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[2].gl_Position + vec4( 0.0, 1.0, 0.0, 1.0)); // EmitVertex(); // gl_Position = projection * view * model * (gl_in[2].gl_Position + vec4( 0.0, 0.0, 0.0, 1.0)); // EmitVertex(); // EndPrimitive(); }