From b2f3a9a5e77544f8dcbc1c65facbfa5b7e577723 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Mon, 18 Dec 2023 00:26:05 +0300 Subject: [PATCH] Simplify `ripple_emit_ssbo` memory write --- src/CRE/effect.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/CRE/effect.cpp b/src/CRE/effect.cpp index 83bd4c7a..7befdb6b 100644 --- a/src/CRE/effect.cpp +++ b/src/CRE/effect.cpp @@ -5604,24 +5604,17 @@ static void draw_ripple_particles(ripple_struct* data, mat4* mat) { if (data->count > 5000) return; - gl_state_set_color_mask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); + vec3* vtx_data = (vec3*)ripple_emit_ssbo.MapMemory(); + if (!vtx_data) + return; - { - size_t count = data->count; - vec3* position = data->position; - color4u8* color = data->color; + vec3* position = data->position; + color4u8* color = data->color; - vec3* vtx_data = force_malloc(count); + for (size_t i = data->count; i; i--, vtx_data++, position++, color++) + *vtx_data = { position->x, position->z, (float_t)color->a * (float_t)(1.0 / 255.0) }; - for (size_t i = count; i; i--, vtx_data++, position++, color++) - *vtx_data = { position->x, position->z, (float_t)color->a * (float_t)(1.0 / 255.0) }; - - vtx_data -= count; - - ripple_emit_ssbo.WriteMemory(0, sizeof(vec3) * count, vtx_data); - - free_def(vtx_data); - } + ripple_emit_ssbo.UnmapMemory(); int32_t size = (int32_t)(data->size + 0.5f);