Skip to main content

SpriteBatch

Struct SpriteBatch 

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

Per-frame snapshot batch. Send + Sync so it can cross into the compositor thread via repose_render_wgpu::Callback.

Each batch id owns its pipelines/instances in CallbackResources (like FullscreenPass’s id map). Re-keying the atlas (a new BatchDesc or uploads_gen) drops its contents; the game re-fills it with the uploads that came with the new descriptor.

Implementations§

Source§

impl SpriteBatch

Source

pub fn new(desc: BatchDesc) -> SpriteBatch

Source

pub fn with_id(id: impl Into<String>, desc: BatchDesc) -> SpriteBatch

Source

pub fn id(&self) -> &str

Source

pub fn clear(&mut self)

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn set_camera(&mut self, view_proj: Mat4)

View-projection matrix, y-down screen convention (see screen_camera).

Source

pub fn upload(&mut self, upload: AtlasUpload)

Queue atlas uploads, applied in the next prepare.

Source

pub fn extend_uploads(&mut self, uploads: impl IntoIterator<Item = AtlasUpload>)

Queue several uploads at once (per-frame atlas drains).

Source

pub fn push( &mut self, center: [f32; 2], size: [f32; 2], rotation: f32, anchor: [f32; 2], flip_x: bool, flip_y: bool, uv_min: [f32; 2], uv_max: [f32; 2], tint: [f32; 4], page: u32, )

Push one textured quad.

Source

pub fn push_blended( &mut self, center: [f32; 2], size: [f32; 2], rotation: f32, anchor: [f32; 2], flip_x: bool, flip_y: bool, uv_min: [f32; 2], uv_max: [f32; 2], tint: [f32; 4], page: u32, z: f32, blend: SpriteBlend, )

Push with explicit z + blend.

Source

pub fn push_sprite(&mut self, s: &SpriteInstance)

Bridge a snapshot sprite into the batch.

The atlas and the render target are both Rgba8UnormSrgb, so the sampled texel and the written pixel are already in linear space and the tint has to be linearized here; Self::push takes one directly.

Source§

impl SpriteBatch

Source

pub fn prepare_with_uploads( &self, device: &Device, queue: &Queue, _encoder: &mut CommandEncoder, screen: &ScreenDescriptor, resources: &mut CallbackResources, uploads: &[AtlasUpload], ) -> Vec<CommandBuffer>

Game-owned passes can drive this batch into their OWN render target instead.

Trait Implementations§

Source§

impl WgpuCallback for SpriteBatch

Source§

fn resource_key(&self) -> Option<&str>

Source§

fn prepare( &self, device: &Device, queue: &Queue, encoder: &mut CommandEncoder, screen: &ScreenDescriptor, resources: &mut CallbackResources, ) -> Vec<CommandBuffer>

Called before the main repose render pass, with access to device/queue/encoder for buffer uploads. Can return extra command buffers to be submitted.
Source§

fn paint( &self, _info: PaintCallbackInfo, rpass: &mut CallbackRenderPass<'_, '_>, resources: &CallbackResources, )

Source§

fn resource_type_id(&self) -> TypeId

Source§

fn finish_prepare( &self, _device: &Device, _queue: &Queue, _encoder: &mut CommandEncoder, _screen_descriptor: &ScreenDescriptor, _resources: &mut CallbackResources, ) -> Vec<CommandBuffer>

Called after all prepare calls, before paint. For cross-callback sync.

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 for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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 = !

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

fn try_from(value: U) -> Result<T, !>

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,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more