From 934a0a30f3491ef8404349fec258009b954f9a8a Mon Sep 17 00:00:00 2001 From: Noah Metz Date: Tue, 15 Oct 2024 16:37:20 -0600 Subject: [PATCH] Got text pipeline showing strings --- client/shader_src/ui_text.comp | 5 ++++- client/src/main.c | 15 ++++++++------- client/src/pipeline.c | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/client/shader_src/ui_text.comp b/client/shader_src/ui_text.comp index 6fb37a3..d7c8ad2 100644 --- a/client/shader_src/ui_text.comp +++ b/client/shader_src/ui_text.comp @@ -71,8 +71,11 @@ void main() { String string = push.pointers.strings.strings[gID]; uint buffer_pos = atomicAdd(push.pointers.draw.instance_count, string.len); + float x = 0; for(uint i = 0; i < string.len; i++) { - push.pointers.characters.characters[buffer_pos + i].pos = string.pos; + Symbol symbol = font.symbol_list.symbols[push.pointers.codes.codes[buffer_pos + i]]; + push.pointers.characters.characters[buffer_pos + i].pos = string.pos + vec3(x, symbol.top/font.height*string.size, 0); + x += symbol.width * string.size / font.height; push.pointers.characters.characters[buffer_pos + i].size = string.size; push.pointers.characters.characters[buffer_pos + i].color = string.color; push.pointers.characters.characters[buffer_pos + i].code = push.pointers.codes.codes[buffer_pos + i]; diff --git a/client/src/main.c b/client/src/main.c index 8cae1c3..fdc5149 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -374,7 +374,7 @@ VkResult render_thread(GLFWwindow* window, RenderContext* render_context) { VkBuffer temp_buffer; VmaAllocation temp_memory; void* mapped; - result = create_transfer_buffer(sizeof(String) + 2*sizeof(uint32_t), render_context->allocator, &temp_buffer, &temp_memory, (void**)&mapped); + result = create_transfer_buffer(sizeof(String) + 100*sizeof(uint32_t), render_context->allocator, &temp_buffer, &temp_memory, (void**)&mapped); if(result != VK_SUCCESS) { return result; } @@ -387,13 +387,14 @@ VkResult render_thread(GLFWwindow* window, RenderContext* render_context) { mapped_string->color[1] = 1.0; mapped_string->color[2] = 1.0; mapped_string->color[3] = 1.0; - mapped_string->size = 200.0; - mapped_string->length = 2; + mapped_string->size = 50.0; + mapped_string->length = 100; mapped_string->offset = 0; uint32* mapped_codes = (uint32_t*)(mapped + sizeof(String)); - mapped_codes[0] = 4; - mapped_codes[1] = 5; + for(uint32_t i = 0; i < 100; i++) { + mapped_codes[i] = i; + } VkCommandBuffer command_buffer = command_begin_single(render_context->device, render_context->transfer_pool); VkBufferCopy copy_string = { @@ -402,7 +403,7 @@ VkResult render_thread(GLFWwindow* window, RenderContext* render_context) { }; vkCmdCopyBuffer(command_buffer, temp_buffer, text_pointers.strings_buffer, 1, ©_string); VkBufferCopy copy_codes = { - .size = 2*sizeof(uint32_t), + .size = 100*sizeof(uint32_t), .srcOffset = sizeof(String), }; vkCmdCopyBuffer(command_buffer, temp_buffer, text_pointers.codes_buffer, 1, ©_codes); @@ -422,7 +423,7 @@ VkResult render_thread(GLFWwindow* window, RenderContext* render_context) { .font = test_font_descriptor, .chars_size = 10*sizeof(Character), .chars = text_pointers.characters_buffer, - .string_count = 2, + .string_count = 1, .string_pointers = text_pointers_address, .string_draw = text_pointers.draw_buffer, .string_draw_clear = text_pointers.draw_clear_buffer, diff --git a/client/src/pipeline.c b/client/src/pipeline.c index c3e2ad0..683167d 100644 --- a/client/src/pipeline.c +++ b/client/src/pipeline.c @@ -435,7 +435,7 @@ VkResult create_font_descriptor_pools(VkDevice device, uint32_t max_sets, VkDesc .binding = 0, .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, .descriptorCount = 1, - .stageFlags = VK_SHADER_STAGE_VERTEX_BIT, + .stageFlags = VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_COMPUTE_BIT, }, { .binding = 1,