diff --git a/data/layout.xml b/data/layout.xml index 8497fbb..54e2c6e 100644 --- a/data/layout.xml +++ b/data/layout.xml @@ -299,9 +299,11 @@ + @@ -343,9 +345,11 @@ + diff --git a/data/shaders/comp-draw.glsl b/data/shaders/comp-draw.glsl index 81b4007..bb9b871 100644 --- a/data/shaders/comp-draw.glsl +++ b/data/shaders/comp-draw.glsl @@ -28,6 +28,7 @@ uniform mediump int blend_mode; uniform mediump vec2 resolution; uniform bool lock; uniform bool mask; +uniform bool draw_on_screen; uniform bool use_dual; uniform sampler2D tex_dual; @@ -54,6 +55,7 @@ void main() if (use_pattern) { + //mediump vec2 uv2 = draw_on_screen ? gl_FragCoord.st / resolution : uv; mediump vec2 rscale = resolution / vec2(512.0); mediump float patt = texture(tex_pattern, uv * (0.5 / pattern_scale) * rscale + pattern_offset).r; if (pattern_invert) diff --git a/src/app_vr.cpp b/src/app_vr.cpp index 3b8e84f..26efbd9 100644 --- a/src/app_vr.cpp +++ b/src/app_vr.cpp @@ -103,6 +103,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_layers[layer_index].m_opacity); ShaderManager::u_int(kShaderUniform::Lock, canvas->m_canvas->m_layers[layer_index].m_alpha_locked); ShaderManager::u_int(kShaderUniform::Mask, canvas->m_canvas->m_smask_active); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, true); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_int(kShaderUniform::UseDual, false); ShaderManager::u_int(kShaderUniform::UsePattern, b->m_pattern_enabled && !b->m_pattern_eachsample); diff --git a/src/canvas.cpp b/src/canvas.cpp index b83c838..3565cfe 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -252,6 +252,7 @@ void Canvas::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz) ShaderManager::u_float(kShaderUniform::Alpha, 1); ShaderManager::u_int(kShaderUniform::Lock, false/*m_layers[layer_index].m_alpha_locked*/); ShaderManager::u_int(kShaderUniform::Mask, false/*m_smask_active*/); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::UseDual, false); ShaderManager::u_int(kShaderUniform::UsePattern, false); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); @@ -801,6 +802,7 @@ void Canvas::stroke_commit() ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity); ShaderManager::u_float(kShaderUniform::Alpha, 1); ShaderManager::u_int(kShaderUniform::Mask, m_smask_active); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled); @@ -1021,6 +1023,7 @@ void Canvas::layer_merge(int source_idx, int dest_idx) // m_layer index ShaderManager::u_float(kShaderUniform::PatternAlpha, 0); ShaderManager::u_float(kShaderUniform::Alpha, m_layers[source_idx].m_opacity); ShaderManager::u_int(kShaderUniform::Lock, false); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::BlendMode, m_layers[source_idx].m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); ShaderManager::u_int(kShaderUniform::UseDual, false); diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp index d358e71..2bb2e79 100644 --- a/src/canvas_modes.cpp +++ b/src/canvas_modes.cpp @@ -1159,6 +1159,7 @@ void CanvasModeTransform::leave() ShaderManager::u_int(kShaderUniform::Mask, false); ShaderManager::u_vec2(kShaderUniform::Resolution, Canvas::I->m_size); ShaderManager::u_int(kShaderUniform::BlendMode, 0); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::UseDual, false); ShaderManager::u_int(kShaderUniform::UsePattern, false); diff --git a/src/node_canvas.cpp b/src/node_canvas.cpp index 86091ae..fae7e9a 100644 --- a/src/node_canvas.cpp +++ b/src/node_canvas.cpp @@ -219,6 +219,7 @@ void NodeCanvas::draw() ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_layers[layer_index].m_opacity); ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[layer_index].m_alpha_locked); ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, true); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z); ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled); diff --git a/src/node_panel_stroke.cpp b/src/node_panel_stroke.cpp index a967e56..17d6ca6 100644 --- a/src/node_panel_stroke.cpp +++ b/src/node_panel_stroke.cpp @@ -250,6 +250,7 @@ void NodePanelStroke::init_controls() }; m_brush_popup->on_brush_changed = [this](Node*, int index) { + m_dual_enabled->set_value(true, true); if (on_dual_changed) on_dual_changed(this, m_brush_popup->get_texture_path(index), m_brush_popup->get_thumb_path(index)); m_dual_brush_thumb->set_image(m_brush_popup->get_thumb_path(index)); diff --git a/src/node_stroke_preview.cpp b/src/node_stroke_preview.cpp index b5a0bf8..161e2ed 100644 --- a/src/node_stroke_preview.cpp +++ b/src/node_stroke_preview.cpp @@ -85,6 +85,7 @@ void NodeStrokePreview::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2 ShaderManager::u_float(kShaderUniform::Alpha, 1); ShaderManager::u_int(kShaderUniform::Lock, false); ShaderManager::u_int(kShaderUniform::Mask, false); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); ShaderManager::u_int(kShaderUniform::UseDual, b->m_dual_enabled); @@ -396,6 +397,7 @@ void NodeStrokePreview::draw_stroke() ShaderManager::u_vec2(kShaderUniform::Resolution, size); ShaderManager::u_float(kShaderUniform::StrokeAlpha, b->m_tip_opacity); ShaderManager::u_float(kShaderUniform::Alpha, 1); + //ShaderManager::u_int(kShaderUniform::DrawOnScreen, false); ShaderManager::u_int(kShaderUniform::Mask, false); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); diff --git a/src/shader.h b/src/shader.h index f87b0b1..d26f63c 100644 --- a/src/shader.h +++ b/src/shader.h @@ -44,6 +44,7 @@ enum class kShaderUniform : uint16_t PatternBlendMode = const_hash("patt_blend_mode"), Colorize = const_hash("colorize"), DualAlpha = const_hash("dual_alpha"), + DrawOnScreen = const_hash("draw_on_screen"), }; enum class kShader : uint16_t