#include <runtime_effect_contents.h>
Classes | |
struct | TextureInput |
Public Member Functions | |
void | SetRuntimeStage (std::shared_ptr< RuntimeStage > runtime_stage) |
void | SetUniformData (std::shared_ptr< std::vector< uint8_t >> uniform_data) |
void | SetTextureInputs (std::vector< TextureInput > texture_inputs) |
bool | Render (const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override |
bool | BootstrapShader (const ContentContext &renderer) const |
Load the runtime effect and ensure a default PSO is initialized. More... | |
![]() | |
ColorSourceContents () | |
~ColorSourceContents () override | |
void | SetGeometry (const Geometry *geometry) |
Set the geometry that this contents will use to render. More... | |
const Geometry * | GetGeometry () const |
Get the geometry that this contents will use to render. More... | |
void | SetEffectTransform (Matrix matrix) |
Set the effect transform for this color source. More... | |
const Matrix & | GetInverseEffectTransform () const |
Set the inverted effect transform for this color source. More... | |
void | SetOpacityFactor (Scalar opacity) |
Set the opacity factor for this color source. More... | |
Scalar | GetOpacityFactor () const |
Get the opacity factor for this color source. More... | |
virtual bool | IsSolidColor () const |
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. More... | |
void | SetInheritedOpacity (Scalar opacity) override |
Inherit the provided opacity. More... | |
![]() | |
Contents () | |
virtual | ~Contents () |
void | SetCoverageHint (std::optional< Rect > coverage_hint) |
Hint that specifies the coverage area of this Contents that will actually be used during rendering. This is for optimization purposes only and can not be relied on as a clip. May optionally affect the result of GetCoverage() . More... | |
const std::optional< Rect > & | GetCoverageHint () const |
virtual bool | IsOpaque (const Matrix &transform) const |
Whether this Contents only emits opaque source colors from the fragment stage. This value does not account for any entity properties (e.g. the blend mode), clips/visibility culling, or inherited opacity. More... | |
virtual 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, std::string_view label="Snapshot") const |
Render this contents to a snapshot, respecting the entity's transform, path, clip depth, and blend mode. The result texture size is always the size of GetCoverage(entity) . More... | |
std::optional< Size > | GetColorSourceSize () const |
Return the color source's intrinsic size, if available. More... | |
void | SetColorSourceSize (Size size) |
virtual std::optional< Color > | AsBackgroundColor (const Entity &entity, ISize target_size) const |
Returns a color if this Contents will flood the given target_size with a color. This output color is the "Source" color that will be used for the Entity's blend operation. More... | |
virtual bool | ApplyColorFilter (const ColorFilterProc &color_filter_proc) |
If possible, applies a color filter to this contents inputs on the CPU. More... | |
Static Public Member Functions | |
static BufferView | EmplaceVulkanUniform (const std::shared_ptr< const std::vector< uint8_t >> &input_data, HostBuffer &host_buffer, const RuntimeUniformDescription &uniform, size_t minimum_uniform_alignment) |
![]() | |
template<typename VertexShaderT > | |
static bool | DrawGeometry (const Contents *contents, const Geometry *geometry, const ContentContext &renderer, const Entity &entity, RenderPass &pass, const PipelineBuilderCallback &pipeline_callback, typename VertexShaderT::FrameInfo frame_info, const BindFragmentCallback &bind_fragment_callback, bool force_stencil=false, const CreateGeometryCallback &create_geom_callback=DefaultCreateGeometryCallback) |
![]() | |
static std::shared_ptr< Contents > | MakeAnonymous (RenderProc render_proc, CoverageProc coverage_proc) |
Additional Inherited Members | |
![]() | |
using | BindFragmentCallback = std::function< bool(RenderPass &pass)> |
using | PipelineBuilderCallback = std::function< PipelineRef(ContentContextOptions)> |
using | CreateGeometryCallback = std::function< GeometryResult(const ContentContext &renderer, const Entity &entity, RenderPass &pass, const Geometry *geom)> |
![]() | |
using | ColorFilterProc = std::function< Color(Color)> |
using | RenderProc = std::function< bool(const ContentContext &renderer, const Entity &entity, RenderPass &pass)> |
using | CoverageProc = std::function< std::optional< Rect >(const Entity &entity)> |
![]() | |
bool | AppliesAlphaForStrokeCoverage (const Matrix &transform) const |
Whether the entity should be treated as non-opaque due to stroke geometry requiring alpha for coverage. More... | |
template<typename VertexShaderT > | |
bool | DrawGeometry (const ContentContext &renderer, const Entity &entity, RenderPass &pass, const PipelineBuilderCallback &pipeline_callback, typename VertexShaderT::FrameInfo frame_info, const BindFragmentCallback &bind_fragment_callback, bool force_stencil=false, const CreateGeometryCallback &create_geom_callback=DefaultCreateGeometryCallback) const |
![]() | |
static GeometryResult | DefaultCreateGeometryCallback (const ContentContext &renderer, const Entity &entity, RenderPass &pass, const Geometry *geom) |
Definition at line 18 of file runtime_effect_contents.h.
bool impeller::RuntimeEffectContents::BootstrapShader | ( | const ContentContext & | renderer | ) | const |
Load the runtime effect and ensure a default PSO is initialized.
Definition at line 102 of file runtime_effect_contents.cc.
References impeller::ContentContextOptions::color_attachment_pixel_format, and impeller::ContentContext::GetContext().
|
static |
Definition at line 33 of file runtime_effect_contents.cc.
References impeller::HostBuffer::Emplace(), and impeller::RuntimeUniformDescription::struct_layout.
Referenced by Render(), and impeller::testing::TEST_P().
|
overridevirtual |
Get or register shader. Flutter will do this when the runtime effect is first loaded, but this check is added to supporting testing of the Aiks API and non-flutter usage of Impeller.
Fragment stage uniforms.
Now that the descriptor set layouts are known, get the pipeline.
Implements impeller::Contents.
Definition at line 221 of file runtime_effect_contents.cc.
References impeller::RenderPass::BindDynamicResource(), impeller::ShaderUniformSlot::binding, impeller::SampledImageSlot::binding, impeller::RenderPass::BindResource(), buffer_view, EmplaceVulkanUniform(), impeller::ShaderUniformSlot::ext_res_0, impeller::ContentContext::GetCachedRuntimeEffectPipeline(), impeller::ContentContext::GetContext(), impeller::ContentContext::GetTransientsBuffer(), impeller::kFloat, impeller::kFragment, impeller::kSampledImage, impeller::kStruct, impeller::kUniformBuffer, impeller::Context::kVulkan, impeller::MakeShaderMetadata(), impeller::ShaderUniformSlot::name, impeller::SampledImageSlot::name, and impeller::SampledImageSlot::texture_index.
void impeller::RuntimeEffectContents::SetRuntimeStage | ( | std::shared_ptr< RuntimeStage > | runtime_stage | ) |
Definition at line 60 of file runtime_effect_contents.cc.
void impeller::RuntimeEffectContents::SetTextureInputs | ( | std::vector< TextureInput > | texture_inputs | ) |
Definition at line 70 of file runtime_effect_contents.cc.
void impeller::RuntimeEffectContents::SetUniformData | ( | std::shared_ptr< std::vector< uint8_t >> | uniform_data | ) |
Definition at line 65 of file runtime_effect_contents.cc.