Extract Canvas draw_merge final plane composite helper

This commit is contained in:
2026-06-13 11:33:56 +02:00
parent 3ec4f25889
commit 67c594129d
5 changed files with 89 additions and 26 deletions

View File

@@ -80,6 +80,22 @@ struct LegacyCanvasDrawMergeLayerBlendExecution {
std::function<void()> unbind_merge_texture;
};
struct LegacyCanvasDrawMergeFinalPlaneCompositeUniforms {
LegacyCanvasDrawMergeCheckerboardUniforms checkerboard;
LegacyCanvasDrawMergeTextureUniforms texture;
bool draw_checkerboard = false;
};
struct LegacyCanvasDrawMergeFinalPlaneCompositeExecution {
std::function<void()> bind_merged_texture_copy_target;
std::function<void()> copy_merged_framebuffer;
std::function<void()> enable_blend;
std::function<void()> draw;
std::function<void()> bind_sampler;
std::function<void()> bind_merged_texture;
std::function<void()> unbind_merged_texture;
};
[[nodiscard]] inline LegacyCanvasDrawMergeShaderExecution legacy_shader_manager_draw_merge_execution() noexcept
{
return {
@@ -257,4 +273,25 @@ inline void execute_legacy_canvas_draw_merge_layer_blend(
execution.unbind_merge_texture();
}
inline void execute_legacy_canvas_draw_merge_final_plane_composite(
const LegacyCanvasDrawMergeFinalPlaneCompositeUniforms& uniforms,
const LegacyCanvasDrawMergeFinalPlaneCompositeExecution& execution)
{
execution.bind_merged_texture_copy_target();
execution.copy_merged_framebuffer();
execution.enable_blend();
if (uniforms.draw_checkerboard) {
setup_legacy_canvas_draw_merge_checkerboard_shader(uniforms.checkerboard);
execution.draw();
}
execution.bind_sampler();
execution.bind_merged_texture();
setup_legacy_canvas_draw_merge_texture_shader(uniforms.texture);
execution.draw();
execution.unbind_merged_texture();
}
} // namespace pp::panopainter