Skip to main content

Compositor

Struct Compositor 

Source
pub struct Compositor { /* private fields */ }
Expand description

Stateful high-level multi-layer GPU compositor.

Accepts a list of FrameLayers, sorts them by FrameLayer::z_order, uploads each frame to the GPU, applies per-layer transforms and blend modes, and returns the composited wgpu::Texture.

The wgpu render pipeline is built on the first call to composite and reused across frames. It is rebuilt only when the number of layers changes.

§Thread safety

Compositor is Send and can be moved to a background thread. When multiple threads need to share a compositor, wrap it in Arc<Mutex<Compositor>>.

Requires the wgpu feature.

Implementations§

Source§

impl Compositor

Source

pub fn new(ctx: Arc<RenderContext>, width: u32, height: u32) -> Self

Create a compositor targeting the given output resolution.

Source

pub fn composite( &mut self, layers: &mut [FrameLayer], ) -> Result<Texture, RenderError>

Composite layers into a single wgpu::Texture.

Layers are sorted by FrameLayer::z_order before compositing (ascending — lowest z_order is the bottom layer).

The wgpu pipeline is built on the first call and cached; it is rebuilt only when layers.len() changes between calls.

§Errors

Returns RenderError on GPU texture creation failure, unsupported pixel format, or render failure.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,