diff options
Diffstat (limited to 'source/blender/draw/intern/shaders/draw_debug_print_display_vert.glsl')
-rw-r--r-- | source/blender/draw/intern/shaders/draw_debug_print_display_vert.glsl | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/draw/intern/shaders/draw_debug_print_display_vert.glsl b/source/blender/draw/intern/shaders/draw_debug_print_display_vert.glsl new file mode 100644 index 00000000000..61404bf7f7a --- /dev/null +++ b/source/blender/draw/intern/shaders/draw_debug_print_display_vert.glsl @@ -0,0 +1,27 @@ + +/** + * Display characters using an ascii table. Outputs one point per character. + **/ + +#pragma BLENDER_REQUIRE(common_view_lib.glsl) + +void main() +{ + char_index = (char_data & 0xFFu) - 0x20u; + + /* Discard invalid chars and the first 3 vertex containing header data. */ + if (char_index >= 96u || gl_VertexID < 3) { + gl_Position = vec4(-1); + gl_PointSize = 0.0; + return; + } + uint row = (char_data >> 16u) & 0xFFu; + uint col = (char_data >> 8u) & 0xFFu; + + float char_size = 16.0; + /* Change anchor point to the top left. */ + vec2 pos_on_screen = char_size * vec2(col, row) + char_size * 4; + gl_Position = vec4( + pos_on_screen * drw_view.viewport_size_inverse * vec2(2.0, -2.0) - vec2(1.0, -1.0), 0, 1); + gl_PointSize = char_size; +}
\ No newline at end of file |