Wrap stroke mix shell bundle

This commit is contained in:
2026-06-13 19:21:42 +02:00
parent a428f77db6
commit a6855fca05
5 changed files with 132 additions and 58 deletions

View File

@@ -387,6 +387,50 @@ struct LegacyCanvasStrokeMixPassSetup {
};
}
struct LegacyCanvasStrokeMixPassShell {
LegacyCanvasStrokeMixPassSetup setup;
LegacyCanvasStrokeMixPassRequest request;
};
template <typename BeginMixPass, typename EndMixPass>
[[nodiscard]] inline LegacyCanvasStrokeMixPassShell make_legacy_canvas_stroke_mix_pass_shell(
BeginMixPass&& begin_mix_pass,
EndMixPass&& end_mix_pass,
std::string_view context,
glm::vec2 resolution,
std::span<const LegacyCanvasStrokeMixPassPlane> planes,
std::function<void()> bind_mix_samplers,
std::function<void()> unbind_mix_samplers,
std::function<void(int, const glm::mat4&)> setup_plane_shader,
std::function<void(int)> bind_layer_texture,
std::function<void(int)> bind_stroke_texture,
std::function<void(int)> bind_mask_texture,
std::function<void()> draw_plane,
std::function<void(int)> unbind_mask_texture,
std::function<void(int)> unbind_stroke_texture,
std::function<void(int)> unbind_layer_texture)
{
return LegacyCanvasStrokeMixPassShell {
.setup = make_legacy_canvas_stroke_mix_pass_setup(
std::forward<BeginMixPass>(begin_mix_pass),
std::forward<EndMixPass>(end_mix_pass)),
.request = make_legacy_canvas_stroke_mix_pass_request(
context,
resolution,
planes,
std::move(bind_mix_samplers),
std::move(unbind_mix_samplers),
std::move(setup_plane_shader),
std::move(bind_layer_texture),
std::move(bind_stroke_texture),
std::move(bind_mask_texture),
std::move(draw_plane),
std::move(unbind_mask_texture),
std::move(unbind_stroke_texture),
std::move(unbind_layer_texture)),
};
}
struct LegacyCanvasStrokeDualPassRequest {
std::string_view context;
std::function<void()> bind_brush_tip;