uniform CubeParams { mat3 faces[6]; }; #pragma MSP stage(vertex) layout(location=0) in vec4 vertex; void main() { gl_Position = vertex; } #pragma MSP stage(geometry) layout(triangles) in; layout(triangle_strip, max_vertices=18) out; void main() { for(int i=0; i<6; ++i) { gl_Layer = i; for(int j=0; j<3; ++j) { gl_Position = gl_in[j].gl_Position; out vec3 texcoord = faces[i]*vec3(gl_in[j].gl_Position.xy, 1.0); EmitVertex(); } EndPrimitive(); } }