From 8a3760df9edaf31a7ab893b15c5aa76b8c627676 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 1 Aug 2018 18:04:33 +0200 Subject: [PATCH] fix white trail in mixer, now it works fine --- engine/app_shaders.cpp | 2 +- engine/canvas.cpp | 2 +- engine/node_canvas.cpp | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/app_shaders.cpp b/engine/app_shaders.cpp index 146898d..b4c0c3a 100644 --- a/engine/app_shaders.cpp +++ b/engine/app_shaders.cpp @@ -354,7 +354,7 @@ void App::initShaders() " mediump vec2 uv_mix = uv_2 / q;\n" " if (uv_mix.x < 0.0 || uv_mix.x > 1.0 || uv_mix.y < 0.0 || uv_mix.y > 1.0) discard;\n" " mediump vec4 mbg = texture(tex_mix, uv_mix);\n" - " fg.rgb = mix(fg.rgb, mbg.rgb, mix_alpha);\n" + " fg.rgb = mix(fg.rgb, mbg.rgb, mix_alpha * mbg.a);\n" " }\n" " mediump float contribution = (1.0 - bg.a) * fg.a;\n" " mediump float alpha_tot = bg.a + contribution;" diff --git a/engine/canvas.cpp b/engine/canvas.cpp index 4b021e8..40fa749 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -222,7 +222,7 @@ void ui::Canvas::stroke_cancel() void ui::Canvas::stroke_draw_mix() { m_mixer.bindFramebuffer(); - m_mixer.clear({ 1, 1, 1, 1 }); + m_mixer.clear({ 1, 1, 1, 0 }); glViewport(0, 0, m_mixer.getWidth(), m_mixer.getHeight()); glDisable(GL_DEPTH_TEST); diff --git a/engine/node_canvas.cpp b/engine/node_canvas.cpp index 5c40203..9bbaf19 100644 --- a/engine/node_canvas.cpp +++ b/engine/node_canvas.cpp @@ -270,7 +270,8 @@ void NodeCanvas::handle_resize(glm::vec2 old_size, glm::vec2 new_size) { if (new_size.x > m_canvas->m_width) { - m_canvas->m_mixer.create((int)new_size.x * m_canvas->m_mixer_scale, (int)new_size.y * m_canvas->m_mixer_scale); + m_canvas->m_mixer.create((int)new_size.x * m_canvas->m_mixer_scale, + (int)new_size.y * m_canvas->m_mixer_scale); if (auto img = root()->find("tex-debug")) img->tex.assign(m_canvas->m_mixer.getTextureID()); // m_canvas->resize((int)new_size.x, (int)new_size.y);