Extract stroke dual pass boundary
This commit is contained in:
@@ -179,9 +179,42 @@ struct LegacyCanvasStrokeMixPassResult {
|
||||
std::size_t composed_planes = 0;
|
||||
};
|
||||
|
||||
struct LegacyCanvasStrokeDualPassRequest {
|
||||
std::string_view context;
|
||||
std::span<const LegacyCanvasStrokeMixPassPlane> planes;
|
||||
std::function<void()> bind_brush_tip;
|
||||
std::function<void()> unbind_brush_tip;
|
||||
std::function<void()> setup_dual_shader;
|
||||
std::function<void()> execute_frame_pass;
|
||||
};
|
||||
|
||||
struct LegacyCanvasStrokeDualPassResult {
|
||||
bool ok = false;
|
||||
std::size_t composed_planes = 0;
|
||||
};
|
||||
|
||||
[[nodiscard]] inline LegacyCanvasStrokeMixPassResult execute_legacy_canvas_stroke_mix_pass(
|
||||
const LegacyCanvasStrokeMixPassRequest& request);
|
||||
|
||||
[[nodiscard]] inline LegacyCanvasStrokeDualPassResult execute_legacy_canvas_stroke_dual_pass(
|
||||
const LegacyCanvasStrokeDualPassRequest& request)
|
||||
{
|
||||
LegacyCanvasStrokeDualPassResult result;
|
||||
if (!request.setup_dual_shader ||
|
||||
!request.bind_brush_tip ||
|
||||
!request.unbind_brush_tip ||
|
||||
!request.execute_frame_pass) {
|
||||
return result;
|
||||
}
|
||||
|
||||
request.setup_dual_shader();
|
||||
request.bind_brush_tip();
|
||||
request.execute_frame_pass();
|
||||
request.unbind_brush_tip();
|
||||
result.ok = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
template <std::size_t PlaneCount, typename HasTarget>
|
||||
[[nodiscard]] inline std::array<LegacyCanvasStrokeMixPassPlane, PlaneCount>
|
||||
plan_legacy_canvas_stroke_mix_pass_planes(
|
||||
|
||||
Reference in New Issue
Block a user