Extract Canvas draw_merge plane setup helper

This commit is contained in:
2026-06-13 11:53:42 +02:00
parent 3f8c25d78b
commit bec8d4623d
5 changed files with 72 additions and 20 deletions

View File

@@ -1371,26 +1371,29 @@ void Canvas::draw_merge(bool draw_checkerboard, std::array<bool, 6> faces /*= SI
continue;
m_layers_merge.rtt(plane_index).bindFramebuffer();
m_layers_merge.rtt(plane_index).clear({ 1, 1, 1, 0 });
if (use_blend)
{
apply_canvas_capability(blend_state(), false);
m_layers_merge.rtt(plane_index).clear();
}
else
{
if (draw_checkerboard)
{
pp::panopainter::setup_legacy_canvas_draw_merge_checkerboard_shader(
pp::panopainter::LegacyCanvasDrawMergeCheckerboardUniforms {
.mvp = ortho,
.colorize = false,
});
m_plane.draw_fill();
}
apply_canvas_capability(blend_state(), true);
}
pp::panopainter::execute_legacy_canvas_draw_merge_plane_setup(
pp::panopainter::LegacyCanvasDrawMergePlaneSetupUniforms {
.checkerboard = {
.mvp = ortho,
.colorize = false,
},
.use_blend = use_blend,
.draw_checkerboard = draw_checkerboard,
},
pp::panopainter::LegacyCanvasDrawMergePlaneSetupExecution {
.clear_plane = [&] {
m_layers_merge.rtt(plane_index).clear({ 1, 1, 1, 0 });
},
.disable_blend = [&] {
apply_canvas_capability(blend_state(), false);
},
.enable_blend = [&] {
apply_canvas_capability(blend_state(), true);
},
.draw = [&] {
m_plane.draw_fill();
},
});
for (int layer_index = 0; layer_index < m_layers.size(); layer_index++)
{