Skip to main content

GLYPH_VERT

Constant GLYPH_VERT 

Source
pub const GLYPH_VERT: &str = "// glyph.vert \u{2014} instanced glyph vertex shader\n// Phase 1 stub. Full shader in Phase 1 implementation.\n\n#version 330 core\n\n// Per-vertex (quad)\nlayout(location = 0) in vec2 v_pos;       // [-0.5, 0.5] unit quad\nlayout(location = 1) in vec2 v_uv;        // [0, 1] UV\n\n// Per-instance\nlayout(location = 2) in vec3  i_position;\nlayout(location = 3) in vec2  i_scale;\nlayout(location = 4) in float i_rotation;\nlayout(location = 5) in vec4  i_color;\nlayout(location = 6) in float i_emission;\nlayout(location = 7) in vec3  i_glow_color;\nlayout(location = 8) in float i_glow_radius;\nlayout(location = 9) in vec2  i_uv_offset;\nlayout(location = 10) in vec2 i_uv_size;\n\nuniform mat4 u_view_proj;\n\nout vec2 f_uv;\nout vec4 f_color;\nout float f_emission;\nout vec3 f_glow_color;\n\nvoid main() {\n    float c = cos(i_rotation);\n    float s = sin(i_rotation);\n    vec2 rotated = vec2(\n        v_pos.x * c - v_pos.y * s,\n        v_pos.x * s + v_pos.y * c\n    ) * i_scale;\n\n    vec4 world_pos = vec4(i_position + vec3(rotated, 0.0), 1.0);\n    gl_Position = u_view_proj * world_pos;\n\n    f_uv = i_uv_offset + v_uv * i_uv_size;\n    f_color = i_color;\n    f_emission = i_emission;\n    f_glow_color = i_glow_color;\n}\n";