77 lines
3.3 KiB
GLSL
77 lines
3.3 KiB
GLSL
#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();
|
|
} |