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>;
fn render_frame_into_planes(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
layout: PixelLayout,
targets: &mut [PlaneTarget<'_>],
) -> 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 the GPU Renderer or the alpha2_render::CpuRenderer.
GPU-only readback and encoder paths are in GpuFrameRenderer.
Required Associated Types§
Sourcetype Image
type Image
A RenderedTexture on the GPU, an 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 a render graph without drawing.
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 from Self::build_frame_graph with its pending source work.
§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 into caller-owned planar YUV420 targets.
An incomplete source set writes nothing. The output size must be even.
§Errors
Returns RenderError for an invalid graph or a target too small.
Sourcefn render_frame_into_planes(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
layout: PixelLayout,
targets: &mut [PlaneTarget<'_>],
) -> Result<RenderReport, RenderError>
fn render_frame_into_planes( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, layout: PixelLayout, targets: &mut [PlaneTarget<'_>], ) -> Result<RenderReport, RenderError>
Self::render_frame_into_yuv420p for any layout, one target per plane in
PixelLayout::planes order.
§Errors
Returns RenderError for an invalid graph, a picture the layout
cannot subsample, 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.
Performs no fallback; players and exporters apply their own policy.
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.
An incomplete source set returns its report and draws nothing.
§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".