Flutter Engine
The Flutter Engine
|
Render passes encode render commands directed as one specific render target into an underlying command buffer. More...
#include <render_pass.h>
Public Member Functions | |
virtual | ~RenderPass () |
const std::shared_ptr< const Context > & | GetContext () const |
const RenderTarget & | GetRenderTarget () const |
ISize | GetRenderTargetSize () const |
const Matrix & | GetOrthographicTransform () const |
virtual bool | IsValid () const =0 |
void | SetLabel (std::string label) |
virtual void | ReserveCommands (size_t command_count) |
Reserve [command_count] commands in the HAL command buffer. More... | |
virtual void | SetPipeline (const std::shared_ptr< Pipeline< PipelineDescriptor > > &pipeline) |
The pipeline to use for this command. More... | |
virtual void | SetCommandLabel (std::string_view label) |
The debugging label to use for the command. More... | |
virtual void | SetStencilReference (uint32_t value) |
virtual void | SetBaseVertex (uint64_t value) |
virtual void | SetViewport (Viewport viewport) |
virtual void | SetScissor (IRect scissor) |
virtual void | SetInstanceCount (size_t count) |
virtual bool | SetVertexBuffer (VertexBuffer buffer) |
Specify the vertex and index buffer to use for this command. More... | |
virtual fml::Status | Draw () |
Record the currently pending command. More... | |
virtual bool | BindResource (ShaderStage stage, DescriptorType type, const ShaderUniformSlot &slot, const ShaderMetadata &metadata, BufferView view) override |
virtual bool | BindResource (ShaderStage stage, DescriptorType type, const ShaderUniformSlot &slot, const std::shared_ptr< const ShaderMetadata > &metadata, BufferView view) |
virtual bool | BindResource (ShaderStage stage, DescriptorType type, const SampledImageSlot &slot, const ShaderMetadata &metadata, std::shared_ptr< const Texture > texture, const std::unique_ptr< const Sampler > &sampler) override |
bool | EncodeCommands () const |
Encode the recorded commands to the underlying command buffer. More... | |
virtual const std::vector< Command > & | GetCommands () const |
Accessor for the current Commands. More... | |
SampleCount | GetSampleCount () const |
The sample count of the attached render target. More... | |
PixelFormat | GetRenderTargetPixelFormat () const |
The pixel format of the attached render target. More... | |
bool | HasDepthAttachment () const |
Whether the render target has a depth attachment. More... | |
bool | HasStencilAttachment () const |
Whether the render target has an stencil attachment. More... | |
Public Member Functions inherited from impeller::ResourceBinder | |
virtual | ~ResourceBinder ()=default |
virtual bool | BindResource (ShaderStage stage, DescriptorType type, const ShaderUniformSlot &slot, const ShaderMetadata &metadata, BufferView view)=0 |
virtual bool | BindResource (ShaderStage stage, DescriptorType type, const SampledImageSlot &slot, const ShaderMetadata &metadata, std::shared_ptr< const Texture > texture, const std::unique_ptr< const Sampler > &sampler)=0 |
Protected Member Functions | |
bool | AddCommand (Command &&command) |
Record a command for subsequent encoding to the underlying command buffer. No work is encoded into the command buffer at this time. More... | |
RenderPass (std::shared_ptr< const Context > context, const RenderTarget &target) | |
virtual void | OnSetLabel (std::string label)=0 |
virtual bool | OnEncodeCommands (const Context &context) const =0 |
Protected Attributes | |
const std::shared_ptr< const Context > | context_ |
const SampleCount | sample_count_ |
const PixelFormat | pixel_format_ |
const bool | has_depth_attachment_ |
const bool | has_stencil_attachment_ |
const ISize | render_target_size_ |
const RenderTarget | render_target_ |
std::vector< Command > | commands_ |
const Matrix | orthographic_ |
Render passes encode render commands directed as one specific render target into an underlying command buffer.
Render passes can be obtained from the command buffer in which the pass is meant to encode commands into.
CommandBuffer
Definition at line 33 of file render_pass.h.
|
virtual |
Definition at line 21 of file render_pass.cc.
|
protected |
Definition at line 10 of file render_pass.cc.
|
protected |
Record a command for subsequent encoding to the underlying command buffer. No work is encoded into the command buffer at this time.
[in] | command | The command |
Definition at line 58 of file render_pass.cc.
|
overridevirtual |
Implements impeller::ResourceBinder.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 156 of file render_pass.cc.
|
overridevirtual |
Implements impeller::ResourceBinder.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 138 of file render_pass.cc.
|
virtual |
Reimplemented in impeller::RecordingRenderPass.
Definition at line 146 of file render_pass.cc.
|
virtual |
Record the currently pending command.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 127 of file render_pass.cc.
bool impeller::RenderPass::EncodeCommands | ( | ) | const |
Encode the recorded commands to the underlying command buffer.
Definition at line 84 of file render_pass.cc.
|
inlinevirtual |
Accessor for the current Commands.
Visible for testing.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 149 of file render_pass.h.
const std::shared_ptr< const Context > & impeller::RenderPass::GetContext | ( | ) | const |
Definition at line 88 of file render_pass.cc.
const Matrix & impeller::RenderPass::GetOrthographicTransform | ( | ) | const |
Definition at line 47 of file render_pass.cc.
const RenderTarget & impeller::RenderPass::GetRenderTarget | ( | ) | const |
Definition at line 39 of file render_pass.cc.
PixelFormat impeller::RenderPass::GetRenderTargetPixelFormat | ( | ) | const |
The pixel format of the attached render target.
Definition at line 27 of file render_pass.cc.
ISize impeller::RenderPass::GetRenderTargetSize | ( | ) | const |
Definition at line 43 of file render_pass.cc.
SampleCount impeller::RenderPass::GetSampleCount | ( | ) | const |
The sample count of the attached render target.
Definition at line 23 of file render_pass.cc.
bool impeller::RenderPass::HasDepthAttachment | ( | ) | const |
Whether the render target has a depth attachment.
Definition at line 31 of file render_pass.cc.
bool impeller::RenderPass::HasStencilAttachment | ( | ) | const |
Whether the render target has an stencil attachment.
Definition at line 35 of file render_pass.cc.
|
pure virtual |
Implemented in impeller::RecordingRenderPass.
|
protectedpure virtual |
Implemented in impeller::RecordingRenderPass.
|
protectedpure virtual |
Implemented in impeller::RecordingRenderPass.
|
inlinevirtual |
Reserve [command_count] commands in the HAL command buffer.
Note: this is not the native command buffer.
Definition at line 52 of file render_pass.h.
|
virtual |
Reimplemented in impeller::RecordingRenderPass.
Definition at line 107 of file render_pass.cc.
|
virtual |
The debugging label to use for the command.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 97 of file render_pass.cc.
|
virtual |
The number of instances of the given set of vertices to render. Not all backends support rendering more than one instance at a time.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 119 of file render_pass.cc.
void impeller::RenderPass::SetLabel | ( | std::string | label | ) |
Definition at line 51 of file render_pass.cc.
|
virtual |
The pipeline to use for this command.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 92 of file render_pass.cc.
|
virtual |
The scissor rect to use for clipping writes to the render target. The scissor rect must lie entirely within the render target. If unset, no scissor is applied.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 115 of file render_pass.cc.
|
virtual |
The reference value to use in stenciling operations. Stencil configuration is part of pipeline setup and can be read from the pipelines descriptor.
Pipeline
PipelineDescriptor
Reimplemented in impeller::RecordingRenderPass.
Definition at line 103 of file render_pass.cc.
|
virtual |
Specify the vertex and index buffer to use for this command.
[in] | buffer | The vertex and index buffer definition. If possible, this value should be moved and not copied. |
Reimplemented in impeller::RecordingRenderPass.
Definition at line 123 of file render_pass.cc.
|
virtual |
The viewport coordinates that the rasterizer linearly maps normalized device coordinates to. If unset, the viewport is the size of the render target with a zero origin, znear=0, and zfar=1.
Reimplemented in impeller::RecordingRenderPass.
Definition at line 111 of file render_pass.cc.
|
protected |
Definition at line 180 of file render_pass.h.
|
protected |
Definition at line 168 of file render_pass.h.
|
protected |
Definition at line 176 of file render_pass.h.
|
protected |
Definition at line 177 of file render_pass.h.
|
protected |
Definition at line 181 of file render_pass.h.
|
protected |
Definition at line 175 of file render_pass.h.
|
protected |
Definition at line 179 of file render_pass.h.
|
protected |
Definition at line 178 of file render_pass.h.
|
protected |
Definition at line 174 of file render_pass.h.