7 #include "display_list/effects/dl_color_source.h"
10 #include "flutter/display_list/dl_builder.h"
11 #include "flutter/display_list/dl_paint.h"
13 #include "include/core/SkPath.h"
14 #include "include/core/SkRRect.h"
22 std::shared_ptr<DlRuntimeEffectColorSource> MakeRuntimeEffect(
24 std::string_view name,
25 const std::shared_ptr<std::vector<uint8_t>>& uniform_data = {},
26 const std::vector<std::shared_ptr<DlColorSource>>& samplers = {}) {
27 auto runtime_stages = test->OpenAssetAsRuntimeStage(name.data());
30 FML_CHECK(runtime_stage);
31 FML_CHECK(runtime_stage->IsDirty());
33 auto dl_runtime_effect = DlRuntimeEffect::MakeImpeller(runtime_stage);
35 return std::make_shared<DlRuntimeEffectColorSource>(dl_runtime_effect,
36 samplers, uniform_data);
45 } frag_uniforms = {.iResolution =
Vector2(400, 400), .iTime = 100.0};
46 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
47 uniform_data->resize(
sizeof(FragUniforms));
48 memcpy(uniform_data->data(), &frag_uniforms,
sizeof(FragUniforms));
52 MakeRuntimeEffect(
this,
"runtime_stage_example.frag.iplr", uniform_data));
54 DisplayListBuilder builder;
57 SkRRect::MakeRectXY(SkRect::MakeXYWH(0, 0, 400, 400), 10.0, 10.0),
58 DlCanvas::ClipOp::kIntersect);
59 builder.DrawRect(SkRect::MakeXYWH(0, 0, 400, 400), paint);
62 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
69 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
70 uniform_data->resize(
sizeof(FragUniforms));
71 memcpy(uniform_data->data(), &frag_uniforms,
sizeof(FragUniforms));
75 MakeRuntimeEffect(
this,
"gradient.frag.iplr", uniform_data));
77 DisplayListBuilder builder;
79 builder.Scale(GetContentScale().x, GetContentScale().y);
80 builder.DrawPaint(paint);
83 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));