1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#version 330 core layout(triangles) in; layout(triangle_strip, max_vertices=18) out; uniform mat4 shadow_transforms[6]; out vec4 frag_pos; void main(void) { for (int face = 0; face < 6; ++face) { gl_Layer = face; for (int vertex = 0; vertex < 3; ++vertex) { frag_pos = gl_in[vertex].gl_Position; gl_Position = shadow_transforms[face]*frag_pos; EmitVertex(); } EndPrimitive(); } }