Extract Canvas draw_merge final plane composite helper
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user