fix layer alpha lock
This commit is contained in:
@@ -775,11 +775,14 @@ void Canvas::stroke_commit()
|
|||||||
action->m_old_box[i] = m_layers[m_current_layer_idx]->m_dirty_box[i];
|
action->m_old_box[i] = m_layers[m_current_layer_idx]->m_dirty_box[i];
|
||||||
action->m_old_dirty[i] = m_layers[m_current_layer_idx]->m_dirty_face[i];
|
action->m_old_dirty[i] = m_layers[m_current_layer_idx]->m_dirty_face[i];
|
||||||
|
|
||||||
auto& lbox = m_layers[m_current_layer_idx]->m_dirty_box[i];
|
if (!m_layers[m_current_layer_idx]->m_alpha_locked)
|
||||||
lbox = glm::vec4(
|
{
|
||||||
glm::min(xy(m_dirty_box[i]), xy(lbox)),
|
auto& lbox = m_layers[m_current_layer_idx]->m_dirty_box[i];
|
||||||
glm::max(zw(m_dirty_box[i]), zw(lbox))
|
lbox = glm::vec4(
|
||||||
|
glm::min(xy(m_dirty_box[i]), xy(lbox)),
|
||||||
|
glm::max(zw(m_dirty_box[i]), zw(lbox))
|
||||||
);
|
);
|
||||||
|
}
|
||||||
m_layers[m_current_layer_idx]->m_dirty_face[i] = true;
|
m_layers[m_current_layer_idx]->m_dirty_face[i] = true;
|
||||||
|
|
||||||
// copy to tmp2 for layer blending
|
// copy to tmp2 for layer blending
|
||||||
@@ -834,7 +837,7 @@ void Canvas::stroke_commit()
|
|||||||
ShaderManager::u_vec2(kShaderUniform::Resolution, m_size);
|
ShaderManager::u_vec2(kShaderUniform::Resolution, m_size);
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||||
ShaderManager::u_int(kShaderUniform::Mask, m_smask_active);
|
ShaderManager::u_int(kShaderUniform::Mask, m_smask_active);
|
||||||
ShaderManager::u_int(kShaderUniform::Lock, false);
|
ShaderManager::u_int(kShaderUniform::Lock, m_layers[m_current_layer_idx]->m_alpha_locked);
|
||||||
ShaderManager::u_int(kShaderUniform::UseFragcoord, false);
|
ShaderManager::u_int(kShaderUniform::UseFragcoord, false);
|
||||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
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_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||||
|
|||||||
Reference in New Issue
Block a user