Skip to main content

GLYPH_VERT

Constant GLYPH_VERT 

Source
pub const GLYPH_VERT: &str = "// glyph.vert \u{2014} instanced glyph vertex shader\r\n// Phase 1 stub. Full shader in Phase 1 implementation.\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\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\n\r\nout vec2 f_uv;\r\nout vec4 f_color;\r\nout float f_emission;\r\nout vec3 f_glow_color;\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\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}\r\n";