| #version 420 core | |
| layout(triangles) in; | |
| in gl_PerVertex { | |
| float gl_PointSize; | |
| } gl_in[]; | |
| out gl_PerVertex { | |
| float gl_PointSize; | |
| }; | |
| layout(line_strip) out; | |
| layout(max_vertices = 127) out; | |
| layout(invocations = 4) in; | |
| uniform sampler2D s2D; | |
| in vec2 coord[]; | |
| int i; | |
| void main() | |
| { | |
| float p = gl_in[1].gl_PointSize; | |
| gl_PointSize = p; | |
| gl_ViewportIndex = 7; | |
| EmitStreamVertex(1); | |
| EndStreamPrimitive(0); | |
| EmitVertex(); | |
| EndPrimitive(); | |
| int id = gl_InvocationID; | |
| const ivec2 offsets[5] = | |
| { | |
| ivec2(0,1), | |
| ivec2(1,-2), | |
| ivec2(0,3), | |
| ivec2(-3,0), | |
| ivec2(2,1) | |
| }; | |
| vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy); | |
| } |