#version 450 #extension GL_EXT_buffer_reference : require #extension GL_EXT_debug_printf : enable #include "ui_common.glsl" layout(local_size_x = 1) in; void main() { uint gID = gl_GlobalInvocationID.x; String string = pc.layer.strings.s[gID]; Font font = pc.layer.container.context.fonts.f[string.font]; uint buffer_pos = atomicAdd(pc.layer.draw.instance_count, string.len); vec2 pen = vec2(0.0, 0.0); debugPrintfEXT("String[%d] length: %d", gID, string.len); for(uint i = 0; i < string.len; i++) { uint code = pc.layer.codes.c[string.offset + i]; Symbol symbol = font.symbols.s[code]; pc.layer.drawables.d[buffer_pos + i].pos = string.pos + pen; pen += string.size*symbol.advance; pc.layer.drawables.d[buffer_pos + i].size = vec2(string.size, string.size); pc.layer.drawables.d[buffer_pos + i].color = string.color; pc.layer.drawables.d[buffer_pos + i].var1 = pc.layer.codes.c[string.offset + i]; pc.layer.drawables.d[buffer_pos + i].var2 = string.font; pc.layer.drawables.d[buffer_pos + i].type = 1; } }