Extract preview main pass texture dispatch

This commit is contained in:
2026-06-13 18:34:45 +02:00
parent 547a660412
commit 3a7151ae7f
4 changed files with 121 additions and 18 deletions

View File

@@ -234,6 +234,49 @@ struct LegacyNodeStrokePreviewPassOrchestrationPlan {
bool background_colorize = false;
};
struct LegacyNodeStrokePreviewMainPassTextureDispatch {
std::function<void(int)> activate_texture_unit;
std::function<void()> bind_brush_tip;
std::function<void()> bind_stroke_destination;
std::function<void()> bind_pattern;
std::function<void()> bind_mixer;
};
[[nodiscard]] inline LegacyNodeStrokePreviewMainPassTextureDispatch make_legacy_node_stroke_preview_main_pass_texture_dispatch(
std::function<void(int)> activate_texture_unit,
std::function<void()> bind_brush_tip,
std::function<void()> bind_stroke_destination,
std::function<void()> bind_pattern,
std::function<void()> bind_mixer)
{
return LegacyNodeStrokePreviewMainPassTextureDispatch {
.activate_texture_unit = std::move(activate_texture_unit),
.bind_brush_tip = std::move(bind_brush_tip),
.bind_stroke_destination = std::move(bind_stroke_destination),
.bind_pattern = std::move(bind_pattern),
.bind_mixer = std::move(bind_mixer),
};
}
inline void bind_legacy_node_stroke_preview_main_pass_textures(
const LegacyNodeStrokePreviewMainPassTextureDispatch& dispatch,
bool copy_stroke_destination,
bool uses_mixer)
{
dispatch.activate_texture_unit(0);
dispatch.bind_brush_tip();
if (copy_stroke_destination) {
dispatch.activate_texture_unit(1);
dispatch.bind_stroke_destination();
}
dispatch.activate_texture_unit(2);
dispatch.bind_pattern();
dispatch.activate_texture_unit(3);
if (uses_mixer) {
dispatch.bind_mixer();
}
}
template <typename Frame>
struct LegacyNodeStrokePreviewMainLivePassRequestT {
std::function<void()> setup_blend_uniforms;