pub trait FrameRenderer: EffectCatalog + RenderControls {
type Image;
// Required methods
fn build_frame_graph<'a>(
&self,
size: RenderSize,
frame: &'a FrameDesc<'a>,
frames: &'a dyn FrameProvider,
) -> Result<FrameGraph<'a>, RenderError>;
fn render_frame_graph(
&self,
graph: &RenderGraph<'_>,
pending: &[&PendingSourceWork],
) -> Result<Self::Image, RenderError>;
fn render_frame_into_yuv420p(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
targets: &mut Yuv420pTargets<'_>,
) -> Result<RenderReport, RenderError>;
// Provided methods
fn inspect_frame(
&self,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> RenderReport { ... }
fn render_frame(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> Result<FrameRender<Self::Image>, RenderError> { ... }
}Expand description
Timeline-frame rendering on whichever renderer draws the frames: the GPU
Renderer or the alpha2_render::CpuRenderer.
Implemented for both; import it to call these methods on one. The GPU’s
readback and hardware-encoder paths are GpuFrameRenderer.
Required Associated Types§
Sourcetype Image
type Image
The picture a frame renders to: a RenderedTexture on the GPU, a
alpha2_render::CpuImage on the CPU.
Required Methods§
Sourcefn build_frame_graph<'a>(
&self,
size: RenderSize,
frame: &'a FrameDesc<'a>,
frames: &'a dyn FrameProvider,
) -> Result<FrameGraph<'a>, RenderError>
fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>
Compiles one evaluator result into the render graph every render method below submits, without drawing anything.
The graph borrows the frame’s effect and parameter names and the provider’s textures; an incomplete source set returns its report and no graph.
§Errors
Returns RenderError when an effect is unknown or a visual or
caption is invalid.
Sourcefn render_frame_graph(
&self,
graph: &RenderGraph<'_>,
pending: &[&PendingSourceWork],
) -> Result<Self::Image, RenderError>
fn render_frame_graph( &self, graph: &RenderGraph<'_>, pending: &[&PendingSourceWork], ) -> Result<Self::Image, RenderError>
Draws a graph Self::build_frame_graph built, with the source work
behind it.
§Errors
Returns RenderError when a pass fails.
Sourcefn render_frame_into_yuv420p(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
targets: &mut Yuv420pTargets<'_>,
) -> Result<RenderReport, RenderError>
fn render_frame_into_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, targets: &mut Yuv420pTargets<'_>, ) -> Result<RenderReport, RenderError>
Renders one evaluator result and converts it to planar YUV420 in
targets, caller-owned plane memory such as an encoder’s frame.
An incomplete source set writes nothing and returns its report. The output size must be even for chroma subsampling.
§Errors
Returns RenderError for an invalid graph or a target too small.
Provided Methods§
Sourcefn inspect_frame(
&self,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> RenderReport
fn inspect_frame( &self, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> RenderReport
Resolves the textures required by an evaluated frame.
This performs no fallback rendering: it is the common availability pass used by a real-time player (which may reuse an older image) and a deterministic exporter (which waits and retries).
Sourcefn render_frame(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> Result<FrameRender<Self::Image>, RenderError>
fn render_frame( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> Result<FrameRender<Self::Image>, RenderError>
Renders one pure evaluator result using sources supplied by the host.
Source availability is checked before anything is drawn. An incomplete attempt returns its missing-source report with no partially rendered picture, allowing real-time and deterministic runners to apply their own hold or wait policy.
§Errors
Returns RenderError when a visual or render target is invalid.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".