fix stroke noise, wet and stencil

This commit is contained in:
2018-05-09 17:02:08 +02:00
parent dca25bf0f3
commit c4f304f7bc
3 changed files with 6 additions and 6 deletions

View File

@@ -327,7 +327,7 @@ void App::initShaders()
" mediump vec2 uv2 = gl_FragCoord.st / resolution;\n" " 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 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 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__ #ifdef __IOS__
" mediump vec4 bg = frag;\n" " mediump vec4 bg = frag;\n"
#else #else
@@ -335,10 +335,10 @@ void App::initShaders()
#endif #endif
" fg.a *= 1.0-rand(uv2+uv)*noise;\n" " fg.a *= 1.0-rand(uv2+uv)*noise;\n"
" if (fg.a == 0.0) discard;\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 float alpha_tot = bg.a + contribution;"
" mediump vec3 rgb = mix(bg.rgb, fg.rgb, fg.a / alpha_tot);\n" " 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" " mediump vec4 frag_dry = vec4(rgb, alpha_tot);\n"
" frag = mix(frag_dry, frag_wet, wet);\n" " frag = mix(frag_dry, frag_wet, wet);\n"
"}\n"; "}\n";

View File

@@ -243,10 +243,10 @@ void ui::Canvas::stroke_draw()
#ifndef __IOS__ #ifndef __IOS__
ShaderManager::u_int(kShaderUniform::TexBG, 1); // bg ShaderManager::u_int(kShaderUniform::TexBG, 1); // bg
#endif #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_vec4(kShaderUniform::Col, m_brush.m_tip_color);
ShaderManager::u_vec2(kShaderUniform::Resolution, { m_width, m_height }); 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::StencilAlpha, m_brush.m_tip_stencil);
ShaderManager::u_float(kShaderUniform::Wet, m_brush.m_tip_wet); ShaderManager::u_float(kShaderUniform::Wet, m_brush.m_tip_wet);
ShaderManager::u_float(kShaderUniform::Noise, m_brush.m_tip_noise); ShaderManager::u_float(kShaderUniform::Noise, m_brush.m_tip_noise);

View File

@@ -57,7 +57,7 @@ void NodePanelStroke::init_controls()
init_slider(m_tip_angle, "tip-angle", &ui::Brush::m_tip_angle); 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_stencil, "tip-stencil", &ui::Brush::m_tip_stencil);
init_slider(m_tip_wet, "tip-wet", &ui::Brush::m_tip_wet); 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_scale, "jitter-scale", &ui::Brush::m_jitter_scale);
init_slider(m_jitter_angle, "jitter-angle", &ui::Brush::m_jitter_angle); init_slider(m_jitter_angle, "jitter-angle", &ui::Brush::m_jitter_angle);
init_slider(m_jitter_spread, "jitter-spread", &ui::Brush::m_jitter_spread); init_slider(m_jitter_spread, "jitter-spread", &ui::Brush::m_jitter_spread);