1e5c31af7Sopenharmony_ci#version 450 core 2e5c31af7Sopenharmony_ci#extension GL_ARB_shader_draw_parameters : require 3e5c31af7Sopenharmony_ci 4e5c31af7Sopenharmony_cilayout(location = 0) in vec4 in_position; 5e5c31af7Sopenharmony_cilayout(location = 1) in vec4 in_color; 6e5c31af7Sopenharmony_cilayout(location = 2) in int in_refVertexIndex; 7e5c31af7Sopenharmony_ci 8e5c31af7Sopenharmony_cilayout(location = 0) out vec4 out_color; 9e5c31af7Sopenharmony_ci 10e5c31af7Sopenharmony_ciout gl_PerVertex { 11e5c31af7Sopenharmony_ci vec4 gl_Position; 12e5c31af7Sopenharmony_ci}; 13e5c31af7Sopenharmony_ci 14e5c31af7Sopenharmony_civoid main() { 15e5c31af7Sopenharmony_ci vec2 perVertex = vec2(in_position.x, in_position.y); 16e5c31af7Sopenharmony_ci vec2 perInstance[5] = vec2[5](vec2(0.0, 0.0), vec2(-0.3, 0.0), vec2(0.0, 0.3), vec2(0.5, 0.5), vec2(0.75, -0.8)); 17e5c31af7Sopenharmony_ci vec2 perDraw[4] = vec2[4](vec2(0.0, 0.0), vec2(-0.3, -0.3), vec2(0.3, 0.3), vec2(1.0, 0.5)); 18e5c31af7Sopenharmony_ci vec4 colors[4] = vec4[4](vec4(1.0), vec4(0.0, 0.0, 1.0, 1.0), vec4(0.0, 1.0, 0.0, 1.0), vec4(0.0, 1.0, 1.0, 1.0)); 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ci gl_Position = vec4(perVertex + perInstance[gl_InstanceIndex - gl_BaseInstanceARB] + perDraw[gl_DrawIDARB], 0.0, 1.0); 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ci if ((gl_VertexIndex - gl_BaseVertexARB) == in_refVertexIndex) 23e5c31af7Sopenharmony_ci out_color = in_color * colors[gl_DrawIDARB]; 24e5c31af7Sopenharmony_ci else 25e5c31af7Sopenharmony_ci out_color = vec4(1.0, 0.0, 0.0, 1.0); 26e5c31af7Sopenharmony_ci} 27