Skip to main content

FrameRenderer

Trait FrameRenderer 

Source
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§

Source

type Image

The picture a frame renders to: a RenderedTexture on the GPU, a alpha2_render::CpuImage on the CPU.

Required Methods§

Source

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.

Source

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.

Source

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§

Source

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).

Source

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".

Implementations on Foreign Types§

Source§

impl FrameRenderer for CpuRenderer

Source§

type Image = Arc<CpuImage>

Source§

fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>

Source§

fn render_frame_graph( &self, graph: &RenderGraph<'_>, _pending: &[&PendingSourceWork], ) -> Result<Arc<CpuImage>, RenderError>

Source§

fn render_frame_into_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, targets: &mut Yuv420pTargets<'_>, ) -> Result<RenderReport, RenderError>

Source§

impl FrameRenderer for Renderer

Source§

type Image = RenderedTexture

Source§

fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>

Source§

fn render_frame_graph( &self, graph: &RenderGraph<'_>, pending: &[&PendingSourceWork], ) -> Result<RenderedTexture, RenderError>

Source§

fn render_frame_into_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, targets: &mut Yuv420pTargets<'_>, ) -> Result<RenderReport, RenderError>

Implementors§