 |
Flutter Impeller
|
|
Go to the documentation of this file.
5 #ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
6 #define FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
47 const Geometry* mask_geometry =
nullptr);
76 std::shared_ptr<Texture> y_texture,
77 std::shared_ptr<Texture> uv_texture,
103 const std::optional<Rect>& coverage_hint)
const;
117 std::optional<Rect> coverage_limit = std::nullopt,
118 const std::optional<SamplerDescriptor>& sampler_descriptor = std::nullopt,
119 bool msaa_enabled =
true,
120 int32_t mip_count = 1,
121 const std::string& label =
"Filter Snapshot")
const override;
157 const Rect& output_limit)
const;
194 virtual std::optional<Rect> GetFilterCoverage(
197 const Matrix& effect_transform)
const;
203 virtual std::optional<Rect> GetFilterSourceCoverage(
204 const Matrix& effect_transform,
205 const Rect& output_limit)
const = 0;
208 virtual std::optional<Entity> RenderFilter(
212 const Matrix& effect_transform,
213 const Rect& coverage,
214 const std::optional<Rect>& coverage_hint)
const = 0;
221 std::optional<Rect> GetLocalCoverage(
const Entity& local_entity)
const;
233 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
bool IsLeaf() const
Returns true if this filter does not have any FilterInput children.
void SetInputs(FilterInput::Vector inputs)
The input texture sources for this filter. Each input's emitted texture is expected to have premultip...
std::optional< Rect > GetSourceCoverage(const Matrix &effect_transform, const Rect &output_limit) const
Determines the coverage of source pixels that will be needed to produce results for the specified |ou...
void SetEffectTransform(const Matrix &effect_transform)
Sets the transform which gets appended to the effect of this filter. Note that this is in addition to...
Matrix GetTransform(const Matrix &parent_transform) const
@ kNormal
Blurred inside and outside.
bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
For convolution filters, the "radius" is the size of the convolution kernel to use on the local space...
@ kSolid
Solid inside, blurred outside.
virtual bool IsTranslationOnly() const
Returns true if this filter graph doesn't perform any basis transforms to the filtered content....
static std::shared_ptr< FilterContents > MakeDirectionalMorphology(FilterInput::Ref input, Radius radius, Vector2 direction, MorphType morph_type)
In filters that use Gaussian distributions, "sigma" is a size of one standard deviation in terms of t...
static std::shared_ptr< FilterContents > MakeBorderMaskBlur(FilterInput::Ref input, Sigma sigma_x, Sigma sigma_y, BlurStyle blur_style=BlurStyle::kNormal)
@ kInner
Blurred inside, nothing outside.
static const int32_t kBlurFilterRequiredMipCount
static std::shared_ptr< FilterContents > MakeYUVToRGBFilter(std::shared_ptr< Texture > y_texture, std::shared_ptr< Texture > uv_texture, YUVColorSpace yuv_color_space)
Render passes encode render commands directed as one specific render target into an underlying comman...
@ kOuter
Nothing inside, blurred outside.
static std::shared_ptr< FilterContents > MakeMorphology(FilterInput::Ref input, Radius radius_x, Radius radius_y, MorphType morph_type)
std::optional< Snapshot > RenderToSnapshot(const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit=std::nullopt, const std::optional< SamplerDescriptor > &sampler_descriptor=std::nullopt, bool msaa_enabled=true, int32_t mip_count=1, const std::string &label="Filter Snapshot") const override
Render this contents to a snapshot, respecting the entity's transform, path, clip depth,...
std::optional< Rect > GetCoverage(const Entity &entity) const override
Get the area of the render pass that will be affected when this contents is rendered.
std::optional< Entity > GetEntity(const ContentContext &renderer, const Entity &entity, const std::optional< Rect > &coverage_hint) const
Create an Entity that renders this filter's output.
void SetLeafInputs(const FilterInput::Vector &inputs)
Replaces the set of all leaf FilterContents with a new set of FilterInputs.
static std::shared_ptr< FilterContents > MakeMatrixFilter(FilterInput::Ref input, const Matrix &matrix, const SamplerDescriptor &desc)
virtual Matrix GetLocalTransform(const Matrix &parent_transform) const
virtual void SetRenderingMode(Entity::RenderingMode rendering_mode)
Marks this filter chain as applying in a subpass scenario.
static std::shared_ptr< FilterContents > MakeLocalMatrixFilter(FilterInput::Ref input, const Matrix &matrix)
~FilterContents() override
static std::shared_ptr< FilterContents > MakeGaussianBlur(const FilterInput::Ref &input, Sigma sigma_x, Sigma sigma_y, Entity::TileMode tile_mode=Entity::TileMode::kDecal, BlurStyle mask_blur_style=BlurStyle::kNormal, const Geometry *mask_geometry=nullptr)
const FilterContents * AsFilter() const override
Cast to a filter. Returns nullptr if this Contents is not a filter.
A 4x4 matrix using column-major storage.