Constant SDF_GLYPH_VERT
Source pub const SDF_GLYPH_VERT: &str = "// sdf_glyph.vert \u{2014} instanced SDF glyph vertex shader\r\n//\r\n// Same instance layout as glyph.vert but outputs additional data\r\n// for SDF-specific fragment processing (threshold, smoothing, effects).\r\n\r\n#version 330 core\r\n\r\n// Per-vertex (quad)\r\nlayout(location = 0) in vec2 v_pos; // [-0.5, 0.5] unit quad\r\nlayout(location = 1) in vec2 v_uv; // [0, 1] UV\r\n\r\n// Per-instance (base \u{2014} same layout as standard glyph)\r\nlayout(location = 2) in vec3 i_position;\r\nlayout(location = 3) in vec2 i_scale;\r\nlayout(location = 4) in float i_rotation;\r\nlayout(location = 5) in vec4 i_color;\r\nlayout(location = 6) in float i_emission;\r\nlayout(location = 7) in vec3 i_glow_color;\r\nlayout(location = 8) in float i_glow_radius;\r\nlayout(location = 9) in vec2 i_uv_offset;\r\nlayout(location = 10) in vec2 i_uv_size;\r\n\r\nuniform mat4 u_view_proj;\r\nuniform float u_time;\r\nuniform vec2 u_screen_size;\r\n\r\nout vec2 f_uv;\r\nout vec4 f_color;\r\nout float f_emission;\r\nout vec3 f_glow_color;\r\nout float f_glow_radius;\r\nout vec2 f_screen_pos; // screen-space position for effects\r\nout float f_scale_factor; // screen-space scale for smoothing calc\r\n\r\nvoid main() {\r\n float c = cos(i_rotation);\r\n float s = sin(i_rotation);\r\n vec2 rotated = vec2(\r\n v_pos.x * c - v_pos.y * s,\r\n v_pos.x * s + v_pos.y * c\r\n ) * i_scale;\r\n\r\n vec4 world_pos = vec4(i_position + vec3(rotated, 0.0), 1.0);\r\n gl_Position = u_view_proj * world_pos;\r\n gl_Position.y = -gl_Position.y; // FBO Y inversion\r\n\r\n f_uv = i_uv_offset + v_uv * i_uv_size;\r\n f_color = i_color;\r\n f_emission = i_emission;\r\n f_glow_color = i_glow_color;\r\n f_glow_radius = i_glow_radius;\r\n\r\n // Compute screen-space position and scale for adaptive smoothing.\r\n f_screen_pos = (gl_Position.xy / gl_Position.w) * 0.5 + 0.5;\r\n f_screen_pos *= u_screen_size;\r\n f_scale_factor = length(i_scale) * length(vec2(u_view_proj[0][0], u_view_proj[1][1]));\r\n}\r\n";