fix stencil random every stroke and not sample
This commit is contained in:
@@ -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__
|
||||
|
||||
@@ -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<Stroke>();
|
||||
m_current_stroke->m_camera.rot = m_cam_rot;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user