Extract draw merge plane dispatch helper
This commit is contained in:
111
src/canvas.cpp
111
src/canvas.cpp
@@ -514,6 +514,16 @@ static void execute_canvas_draw_merge_plane_final_composite(
|
||||
bool draw_checkerboard,
|
||||
bool use_blend);
|
||||
|
||||
static void execute_canvas_draw_merge_plane_dispatch(
|
||||
Canvas& canvas,
|
||||
int plane_index,
|
||||
const std::vector<std::shared_ptr<Layer>>& layers,
|
||||
const Brush& brush,
|
||||
const glm::mat4& ortho,
|
||||
bool use_blend,
|
||||
bool copy_blend_destination,
|
||||
bool draw_checkerboard);
|
||||
|
||||
static pp::panopainter::LegacyCanvasDrawMergeLayerCompositeExecution make_canvas_draw_merge_branch_dispatch(
|
||||
Canvas& canvas,
|
||||
int plane_index,
|
||||
@@ -733,49 +743,70 @@ static void execute_canvas_draw_merge_plane_iteration(
|
||||
if (!faces[plane_index])
|
||||
continue;
|
||||
|
||||
canvas.m_layers_merge.rtt(plane_index).bindFramebuffer();
|
||||
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 = [&] {
|
||||
canvas.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 = [&] {
|
||||
canvas.m_plane.draw_fill();
|
||||
},
|
||||
});
|
||||
|
||||
for (int layer_index = 0; layer_index < layers.size(); layer_index++)
|
||||
{
|
||||
canvas.draw_merge_branch_orchestration(
|
||||
plane_index,
|
||||
layer_index,
|
||||
layers[layer_index],
|
||||
brush,
|
||||
ortho,
|
||||
use_blend,
|
||||
copy_blend_destination,
|
||||
draw_checkerboard);
|
||||
}
|
||||
|
||||
execute_canvas_draw_merge_plane_final_composite(canvas, ortho, draw_checkerboard, use_blend);
|
||||
canvas.m_layers_merge.rtt(plane_index).unbindFramebuffer();
|
||||
execute_canvas_draw_merge_plane_dispatch(
|
||||
canvas,
|
||||
plane_index,
|
||||
layers,
|
||||
brush,
|
||||
ortho,
|
||||
use_blend,
|
||||
copy_blend_destination,
|
||||
draw_checkerboard);
|
||||
}
|
||||
}
|
||||
|
||||
static void execute_canvas_draw_merge_plane_dispatch(
|
||||
Canvas& canvas,
|
||||
int plane_index,
|
||||
const std::vector<std::shared_ptr<Layer>>& layers,
|
||||
const Brush& brush,
|
||||
const glm::mat4& ortho,
|
||||
bool use_blend,
|
||||
bool copy_blend_destination,
|
||||
bool draw_checkerboard)
|
||||
{
|
||||
canvas.m_layers_merge.rtt(plane_index).bindFramebuffer();
|
||||
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 = [&] {
|
||||
canvas.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 = [&] {
|
||||
canvas.m_plane.draw_fill();
|
||||
},
|
||||
});
|
||||
|
||||
for (int layer_index = 0; layer_index < layers.size(); layer_index++)
|
||||
{
|
||||
canvas.draw_merge_branch_orchestration(
|
||||
plane_index,
|
||||
layer_index,
|
||||
layers[layer_index],
|
||||
brush,
|
||||
ortho,
|
||||
use_blend,
|
||||
copy_blend_destination,
|
||||
draw_checkerboard);
|
||||
}
|
||||
|
||||
execute_canvas_draw_merge_plane_final_composite(canvas, ortho, draw_checkerboard, use_blend);
|
||||
canvas.m_layers_merge.rtt(plane_index).unbindFramebuffer();
|
||||
}
|
||||
|
||||
static void execute_canvas_draw_merge_plane_final_composite(
|
||||
Canvas& canvas,
|
||||
const glm::mat4& ortho,
|
||||
|
||||
Reference in New Issue
Block a user