7 #include "flutter/display_list/dl_builder.h"
8 #include "flutter/display_list/dl_paint.h"
9 #include "flutter/display_list/effects/dl_color_source.h"
10 #include "flutter/display_list/effects/dl_image_filter.h"
11 #include "flutter/display_list/effects/dl_runtime_effect.h"
21 std::shared_ptr<DlColorSource> MakeRuntimeEffect(
23 std::string_view name,
24 const std::shared_ptr<std::vector<uint8_t>>& uniform_data = {},
25 const std::vector<std::shared_ptr<DlColorSource>>& samplers = {}) {
26 auto runtime_stages = test->OpenAssetAsRuntimeStage(name.data());
29 FML_CHECK(runtime_stage);
30 FML_CHECK(runtime_stage->IsDirty());
34 return DlColorSource::MakeRuntimeEffect(dl_runtime_effect, samplers,
44 } frag_uniforms = {.iResolution =
Vector2(400, 400), .iTime = 100.0};
45 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
46 uniform_data->resize(
sizeof(FragUniforms));
47 memcpy(uniform_data->data(), &frag_uniforms,
sizeof(FragUniforms));
51 MakeRuntimeEffect(
this,
"runtime_stage_example.frag.iplr", uniform_data));
53 DisplayListBuilder builder;
55 builder.ClipRoundRect(
56 DlRoundRect::MakeRectXY(DlRect::MakeXYWH(0, 0, 400, 400), 10.0, 10.0),
57 DlClipOp::kIntersect);
58 builder.DrawRect(DlRect::MakeXYWH(0, 0, 400, 400), paint);
61 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
68 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
69 uniform_data->resize(
sizeof(FragUniforms));
70 memcpy(uniform_data->data(), &frag_uniforms,
sizeof(FragUniforms));
74 MakeRuntimeEffect(
this,
"gradient.frag.iplr", uniform_data));
76 DisplayListBuilder builder;
78 builder.Scale(GetContentScale().
x, GetContentScale().y);
79 builder.DrawPaint(paint);
82 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
87 OpenAssetAsRuntimeStage(
"runtime_stage_filter_example.frag.iplr");
89 std::shared_ptr<RuntimeStage> runtime_stage =
91 ASSERT_TRUE(runtime_stage);
92 ASSERT_TRUE(runtime_stage->IsDirty());
94 std::vector<std::shared_ptr<DlColorSource>> sampler_inputs = {
97 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
98 uniform_data->resize(
sizeof(
Vector2));
101 paint.setColor(DlColor::kAqua());
102 paint.setImageFilter(DlImageFilter::MakeRuntimeEffect(
106 DisplayListBuilder builder;
107 builder.DrawRect(DlRect::MakeXYWH(0, 0, 400, 400), paint);
109 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
116 std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
117 flutter::DlColor::kRed()};
118 const float stops[2] = {0.0, 1.0};
119 auto linear = flutter::DlColorSource::MakeLinear({0.0, 0.0}, {300.0, 300.0},
120 2, colors.data(), stops,
121 flutter::DlTileMode::kClamp);
122 std::vector<std::shared_ptr<DlColorSource>> sampler_inputs = {
126 auto uniform_data = std::make_shared<std::vector<uint8_t>>();
127 uniform_data->resize(
sizeof(
Vector2));
130 paint.setColorSource(
131 MakeRuntimeEffect(
this,
"runtime_stage_filter_example.frag.iplr",
132 uniform_data, sampler_inputs));
134 DisplayListBuilder builder;
135 builder.DrawPaint(paint);
137 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
static sk_sp< DlRuntimeEffect > Make(std::shared_ptr< impeller::RuntimeStage > runtime_stage)
TEST_P(AiksTest, DrawAtlasNoColor)
constexpr RuntimeStageBackend PlaygroundBackendToRuntimeStageBackend(PlaygroundBackend backend)
static constexpr TSize MakeWH(Type width, Type height)