#version 330 core uniform uint naga_vs_first_instance; struct VertexInput { vec3 position; vec2 tex_coord; vec2 atlas_position; vec2 size; vec2 target_position; float y_offset; uint glyph_id; }; struct VertexOutput { vec4 position; vec2 tex_coord; }; uniform vec4 screen_size; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec2 _p2vs_location1; layout(location = 2) in vec2 _p2vs_location2; layout(location = 3) in vec2 _p2vs_location3; layout(location = 4) in vec2 _p2vs_location4; layout(location = 5) in float _p2vs_location5; smooth out vec2 _vs2fs_location0; vec4 to_device_position(vec2 position, vec2 size) { return vec4((((position / size) * 2.0) - vec2(1.0)), 1.0, 1.0); } void main() { VertexInput input_ = VertexInput(_p2vs_location0, _p2vs_location1, _p2vs_location2, _p2vs_location3, _p2vs_location4, _p2vs_location5, (uint(gl_InstanceID) + naga_vs_first_instance)); VertexOutput out_ = VertexOutput(vec4(0.0), vec2(0.0)); vec4 vertex_pos = vec4(0.0); vec2 atlas_position = vec2(0.0); vec4 _e28 = to_device_position((((((input_.position.xy + vec2(1.0)) / vec2(2.0)) * (input_.size / vec2(2.0))) + input_.target_position) + vec2(0.0, ((input_.y_offset / 2.0) + 32.0))), screen_size.xy); vertex_pos = _e28; atlas_position = (((((input_.position.xy + vec2(1.0)) / vec2(2.0)) * input_.size) + input_.atlas_position) / vec2(1024.0)); vec4 _e47 = vertex_pos; out_.position = _e47; vec2 _e49 = atlas_position; out_.tex_coord = _e49; VertexOutput _e50 = out_; gl_Position = _e50.position; _vs2fs_location0 = _e50.tex_coord; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; }