From c4f304f7bc5ef2ca9b17357a4f1fc0f9a256b5a5 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 9 May 2018 17:02:08 +0200 Subject: [PATCH] fix stroke noise, wet and stencil --- engine/app_shaders.cpp | 6 +++--- engine/canvas.cpp | 4 ++-- engine/node_panel_stroke.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/engine/app_shaders.cpp b/engine/app_shaders.cpp index 4535baf..2bce50b 100644 --- a/engine/app_shaders.cpp +++ b/engine/app_shaders.cpp @@ -327,7 +327,7 @@ void App::initShaders() " mediump vec2 uv2 = gl_FragCoord.st / resolution;\n" " mediump float stencil = 1.0 - (texture(tex_stencil, (uv2+stencil_offset) * 2.0).r * 0.9) * stencil_alpha;\n" " mediump float brush_alpha = ( 1.0 - texture(tex, uv/q).r ) * alpha;\n" - " mediump vec4 fg = vec4(col.rgb, brush_alpha);\n" + " mediump vec4 fg = vec4(col.rgb, brush_alpha * stencil);\n" #ifdef __IOS__ " mediump vec4 bg = frag;\n" #else @@ -335,10 +335,10 @@ void App::initShaders() #endif " fg.a *= 1.0-rand(uv2+uv)*noise;\n" " if (fg.a == 0.0) discard;\n" - " mediump float contribution = (1.0 - bg.a) * fg.a * stencil;\n" + " mediump float contribution = (1.0 - bg.a) * fg.a;\n" " mediump float alpha_tot = bg.a + contribution;" " mediump vec3 rgb = mix(bg.rgb, fg.rgb, fg.a / alpha_tot);\n" - " mediump vec4 frag_wet = vec4(rgb, mix(bg.a, max(bg.a, fg.a * stencil), fg.a));\n" + " mediump vec4 frag_wet = vec4(rgb, max(bg.a, fg.a * 1.2));\n" " mediump vec4 frag_dry = vec4(rgb, alpha_tot);\n" " frag = mix(frag_dry, frag_wet, wet);\n" "}\n"; diff --git a/engine/canvas.cpp b/engine/canvas.cpp index c8c0605..742f558 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -243,10 +243,10 @@ void ui::Canvas::stroke_draw() #ifndef __IOS__ ShaderManager::u_int(kShaderUniform::TexBG, 1); // bg #endif - //ShaderManager::u_int(kShaderUniform::TexStencil, 3); // stencil + ShaderManager::u_int(kShaderUniform::TexStencil, 3); // stencil ShaderManager::u_vec4(kShaderUniform::Col, m_brush.m_tip_color); ShaderManager::u_vec2(kShaderUniform::Resolution, { m_width, m_height }); - //ShaderManager::u_vec2(kShaderUniform::StencilOffset, glm::vec2((rand()%1000)*0.001f, (rand()%1000)*0.001f)); + ShaderManager::u_vec2(kShaderUniform::StencilOffset, glm::vec2((rand()%1000)*0.001f, (rand()%1000)*0.001f)); ShaderManager::u_float(kShaderUniform::StencilAlpha, m_brush.m_tip_stencil); ShaderManager::u_float(kShaderUniform::Wet, m_brush.m_tip_wet); ShaderManager::u_float(kShaderUniform::Noise, m_brush.m_tip_noise); diff --git a/engine/node_panel_stroke.cpp b/engine/node_panel_stroke.cpp index cc0e486..6bf244e 100644 --- a/engine/node_panel_stroke.cpp +++ b/engine/node_panel_stroke.cpp @@ -57,7 +57,7 @@ void NodePanelStroke::init_controls() init_slider(m_tip_angle, "tip-angle", &ui::Brush::m_tip_angle); init_slider(m_tip_stencil, "tip-stencil", &ui::Brush::m_tip_stencil); init_slider(m_tip_wet, "tip-wet", &ui::Brush::m_tip_wet); - init_slider(m_tip_noise, "tip-wet", &ui::Brush::m_tip_noise); + init_slider(m_tip_noise, "tip-noise", &ui::Brush::m_tip_noise); init_slider(m_jitter_scale, "jitter-scale", &ui::Brush::m_jitter_scale); init_slider(m_jitter_angle, "jitter-angle", &ui::Brush::m_jitter_angle); init_slider(m_jitter_spread, "jitter-spread", &ui::Brush::m_jitter_spread);