diff --git a/engine/app_shaders.cpp b/engine/app_shaders.cpp index d60799a..13ef202 100644 --- a/engine/app_shaders.cpp +++ b/engine/app_shaders.cpp @@ -335,7 +335,7 @@ void App::initShaders() //"highp float rand(mediump vec2 co) { return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); }\n" "void main(){\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) * 5.0).r) * stencil_alpha;\n" " mediump float brush_alpha = ( 1.0 - texture(tex, uv/q).r ) * alpha;\n" " mediump vec4 fg = vec4(col.rgb, brush_alpha * stencil);\n" #ifdef __IOS__ diff --git a/engine/canvas.cpp b/engine/canvas.cpp index 742f558..9eebd79 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -246,7 +246,7 @@ void ui::Canvas::stroke_draw() 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, stencil_offset); 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); @@ -578,6 +578,8 @@ void ui::Canvas::stroke_start(glm::vec2 point, float pressure, const ui::Brush& m_show_tmp = false; m_commit_delayed = false; } + + stencil_offset = glm::vec2((rand()%1000)*0.001f, (rand()%1000)*0.001f); m_current_stroke = std::make_unique(); m_current_stroke->m_camera.rot = m_cam_rot; diff --git a/engine/canvas.h b/engine/canvas.h index 081c25b..36b5683 100644 --- a/engine/canvas.h +++ b/engine/canvas.h @@ -80,6 +80,7 @@ public: static glm::vec3 m_plane_normal[6]; static glm::vec3 m_plane_tangent[6]; static glm::mat4 m_plane_transform[6]; + glm::vec2 stencil_offset; Sampler m_sampler; Sampler m_sampler_brush; Sampler m_sampler_bg;