roleplay/client/shader_src/string.comp

31 lines
1.1 KiB
Plaintext

#version 450
#extension GL_EXT_buffer_reference : require
2024-10-28 22:49:57 -06:00
#extension GL_EXT_debug_printf : enable
#include "ui_common.glsl"
2024-10-15 11:44:59 -06:00
layout(local_size_x = 1) in;
void main() {
2024-10-15 11:44:59 -06:00
uint gID = gl_GlobalInvocationID.x;
2024-10-18 18:34:31 -06:00
String string = pc.layer.strings.s[gID];
2024-10-24 20:49:59 -06:00
Font font = pc.layer.container.context.fonts.f[string.font];
2024-10-15 11:44:59 -06:00
uint buffer_pos = atomicAdd(pc.layer.draw.instance_count, string.len);
2024-10-22 20:24:34 -06:00
vec2 pen = vec2(0.0, 0.0);
2024-10-28 22:49:57 -06:00
2024-10-28 22:57:25 -06:00
debugPrintfEXT("Frame [%d] String[%d] length: %d\n", pc.frame, gID, string.len);
2024-10-28 22:49:57 -06:00
for(uint i = 0; i < string.len; i++) {
uint code = pc.layer.codes.c[string.offset + i];
Symbol symbol = font.symbols.s[code];
2024-10-22 20:24:34 -06:00
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;
2024-10-24 20:49:59 -06:00
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;
}
}