#  GLSL.std.450main3AGHSX[`hq amethyst_rendy/shaders/vertex/sprite.vert]// OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed entry-point main #line 1 #version 450 layout(std140, set = 0, binding = 0) uniform ViewArgs { uniform mat4 proj; uniform mat4 view; uniform mat4 proj_view; }; // Quad transform. layout(location = 0) in vec2 dir_x; layout(location = 1) in vec2 dir_y; layout(location = 2) in vec2 pos; layout(location = 3) in vec2 u_offset; layout(location = 4) in vec2 v_offset; layout(location = 5) in float depth; layout(location = 6) in vec4 color; layout(location = 0) out VertexData { vec2 tex_uv; vec4 color; } vertex; const vec2 positions[4] = vec2[]( vec2(0.5, -0.5), // Right bottom vec2(-0.5, -0.5), // Left bottom vec2(0.5, 0.5), // Right top vec2(-0.5, 0.5) // Left top ); // coords = 0.0 to 1.0 texture coordinates vec2 texture_coords(vec2 coords, vec2 u, vec2 v) { return vec2(mix(u.x, u.y, coords.x+0.5), mix(v.x, v.y, coords.y+0.5)); } void main() { float tex_u = positions[gl_VertexIndex][0]; float tex_v = positions[gl_VertexIndex][1]; vertex.tex_uv = texture_coords(vec2(tex_u, tex_v), u_offset, v_offset); vertex.color = color; vec2 final_pos = pos + tex_u * dir_x + tex_v * dir_y; vec4 vertex = vec4(final_pos, depth, 1.0); gl_Position = proj_view * vertex; }  GL_GOOGLE_cpp_style_line_directiveGL_GOOGLE_include_directivemain3gl_VertexIndex6indexable;indexable?VertexData?tex_uv?colorAvertexGu_offsetHv_offsetScolorXpos[dir_x`dir_yhdepthogl_PerVertexogl_Positionogl_PointSizeogl_ClipDistanceogl_CullDistanceqsViewArgssprojsviewsproj_viewuG3 *G?GAGGGHGSGXG[G`GhHo Ho Ho Ho GoHsHs#HsHsHs#@HsHsHs#HsGsGu"Gu!!  + ++?+)*)++,,+,-++,.,/+,*0,-./1  21;23 5*>?> @?;@A+1B F;FG;FH O+1Q R>;RS U>;FX;F[;F` g;gh+j?no>nn po;pqr>srrr ts;tu+1v wr6;56;5;$=143>60A764=87>;0A<;4==<=KG=MHQKQK8 .QMQM= .PAOPAB>P(=>TSAUVAQ>VT)=YX=\[]\8^Y]=a`ba=c^b=ihQkcQlcP>mklij+Awxuv=ryx>{ymAU|qB>|{8