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

Source

type Image

A RenderedTexture on the GPU, an 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 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.

Source

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.

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

Source

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§

Source

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.

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.

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

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§

fn render_frame_into_planes( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, layout: PixelLayout, targets: &mut [PlaneTarget<'_>], ) -> 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>

Source§

fn render_frame_into_planes( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, layout: PixelLayout, targets: &mut [PlaneTarget<'_>], ) -> Result<RenderReport, RenderError>

Implementors§