Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 330
- layout(points) in;
- layout(triangle_strip,max_vertices=36) out;
- in vec4 pass_Color[];
- in vec2 pass_TextureCoord[];
- out vec4 geom_Color;
- void main() {
- for (int i = 0; i < gl_in.length(); i++) {
- vec4 inPos = gl_in[i].gl_Position;
- geom_Color = pass_Color[i];
- //front
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- //back
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- //right
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- //left
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- //top
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- //bottom
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //br
- EmitVertex();
- EndPrimitive();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tr
- EmitVertex();
- gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //tl
- EmitVertex();
- EndPrimitive();
- }
- }
Add Comment
Please, Sign In to add comment