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