Extract stroke commit input binding helper
This commit is contained in:
@@ -542,6 +542,49 @@ static auto make_canvas_stroke_commit_callbacks(
|
||||
const pp::paint_renderer::CanvasStrokeCommitMaterialPlan& stroke_material)
|
||||
{
|
||||
const auto& b = current_stroke->m_brush;
|
||||
auto bind_commit_inputs = [&](int i) {
|
||||
pp::panopainter::bind_legacy_canvas_stroke_commit_inputs(
|
||||
sequence,
|
||||
[&](int texture_slot) {
|
||||
set_active_texture_unit(texture_slot);
|
||||
},
|
||||
[&](pp::paint_renderer::CanvasStrokeCommitTextureRole role) {
|
||||
switch (role) {
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::layer_scratch:
|
||||
canvas.m_tex2[i].bind();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::stroke:
|
||||
canvas.m_tmp[i].bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::selection_mask:
|
||||
canvas.m_smask.rtt(i).bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::dual_stroke:
|
||||
canvas.m_tmp_dual[i].bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::pattern:
|
||||
b->m_pattern_texture ? b->m_pattern_texture->bind() : unbind_texture_2d();
|
||||
break;
|
||||
}
|
||||
},
|
||||
[&](pp::paint_renderer::CanvasStrokeCommitTextureRole role, int texture_slot) {
|
||||
switch (role) {
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::layer_scratch:
|
||||
canvas.m_sampler.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::stroke:
|
||||
canvas.m_sampler_nearest.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::selection_mask:
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::dual_stroke:
|
||||
canvas.m_sampler.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::pattern:
|
||||
canvas.m_sampler_stencil.bind(texture_slot);
|
||||
break;
|
||||
}
|
||||
});
|
||||
};
|
||||
return pp::panopainter::make_legacy_canvas_stroke_commit_callbacks(
|
||||
[&]() {
|
||||
canvas.m_dirty = false;
|
||||
@@ -604,47 +647,7 @@ static auto make_canvas_stroke_commit_callbacks(
|
||||
canvas.m_tex2[i].unbind();
|
||||
},
|
||||
[&](int i) {
|
||||
pp::panopainter::bind_legacy_canvas_stroke_commit_inputs(
|
||||
sequence,
|
||||
[&](int texture_slot) {
|
||||
set_active_texture_unit(texture_slot);
|
||||
},
|
||||
[&](pp::paint_renderer::CanvasStrokeCommitTextureRole role) {
|
||||
switch (role) {
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::layer_scratch:
|
||||
canvas.m_tex2[i].bind();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::stroke:
|
||||
canvas.m_tmp[i].bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::selection_mask:
|
||||
canvas.m_smask.rtt(i).bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::dual_stroke:
|
||||
canvas.m_tmp_dual[i].bindTexture();
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::pattern:
|
||||
b->m_pattern_texture ? b->m_pattern_texture->bind() : unbind_texture_2d();
|
||||
break;
|
||||
}
|
||||
},
|
||||
[&](pp::paint_renderer::CanvasStrokeCommitTextureRole role, int texture_slot) {
|
||||
switch (role) {
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::layer_scratch:
|
||||
canvas.m_sampler.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::stroke:
|
||||
canvas.m_sampler_nearest.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::selection_mask:
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::dual_stroke:
|
||||
canvas.m_sampler.bind(texture_slot);
|
||||
break;
|
||||
case pp::paint_renderer::CanvasStrokeCommitTextureRole::pattern:
|
||||
canvas.m_sampler_stencil.bind(texture_slot);
|
||||
break;
|
||||
}
|
||||
});
|
||||
bind_commit_inputs(i);
|
||||
},
|
||||
[&](int) {
|
||||
pp::panopainter::execute_legacy_canvas_stroke_commit_erase(
|
||||
|
||||
Reference in New Issue
Block a user