1617a3babSopenharmony_ci#version 420 core
2617a3babSopenharmony_ci
3617a3babSopenharmony_cilayout(triangles) in;
4617a3babSopenharmony_ci
5617a3babSopenharmony_ciin gl_PerVertex {
6617a3babSopenharmony_ci    float gl_PointSize;
7617a3babSopenharmony_ci} gl_in[];
8617a3babSopenharmony_ci
9617a3babSopenharmony_ciout gl_PerVertex {
10617a3babSopenharmony_ci    float gl_PointSize;
11617a3babSopenharmony_ci};
12617a3babSopenharmony_ci
13617a3babSopenharmony_cilayout(line_strip) out;
14617a3babSopenharmony_cilayout(max_vertices = 127) out;
15617a3babSopenharmony_cilayout(invocations = 4) in;
16617a3babSopenharmony_ci
17617a3babSopenharmony_ciuniform sampler2D s2D;
18617a3babSopenharmony_ciin vec2 coord[];
19617a3babSopenharmony_ci
20617a3babSopenharmony_ciint i;
21617a3babSopenharmony_ci
22617a3babSopenharmony_civoid main()
23617a3babSopenharmony_ci{
24617a3babSopenharmony_ci    float p = gl_in[1].gl_PointSize;
25617a3babSopenharmony_ci    gl_PointSize = p;
26617a3babSopenharmony_ci    gl_ViewportIndex = 7;
27617a3babSopenharmony_ci
28617a3babSopenharmony_ci    EmitStreamVertex(1);
29617a3babSopenharmony_ci    EndStreamPrimitive(0);
30617a3babSopenharmony_ci    EmitVertex();
31617a3babSopenharmony_ci    EndPrimitive();
32617a3babSopenharmony_ci    int id = gl_InvocationID;
33617a3babSopenharmony_ci
34617a3babSopenharmony_ci    const ivec2 offsets[5] =
35617a3babSopenharmony_ci    {
36617a3babSopenharmony_ci        ivec2(0,1),
37617a3babSopenharmony_ci        ivec2(1,-2),
38617a3babSopenharmony_ci        ivec2(0,3),
39617a3babSopenharmony_ci        ivec2(-3,0),
40617a3babSopenharmony_ci        ivec2(2,1)
41617a3babSopenharmony_ci    };
42617a3babSopenharmony_ci    vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy);
43617a3babSopenharmony_ci}
44