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
impl SpriteBatch
pub fn new(desc: BatchDesc) -> SpriteBatch
pub fn with_id(id: impl Into<String>, desc: BatchDesc) -> SpriteBatch
pub fn id(&self) -> &str
pub fn clear(&mut self)
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn set_camera(&mut self, view_proj: Mat4)
pub fn set_camera(&mut self, view_proj: Mat4)
View-projection matrix, y-down screen convention (see
screen_camera).
Sourcepub fn upload(&mut self, upload: AtlasUpload)
pub fn upload(&mut self, upload: AtlasUpload)
Queue atlas uploads, applied in the next prepare.
Sourcepub fn extend_uploads(&mut self, uploads: impl IntoIterator<Item = AtlasUpload>)
pub fn extend_uploads(&mut self, uploads: impl IntoIterator<Item = AtlasUpload>)
Queue several uploads at once (per-frame atlas drains).
Sourcepub 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,
)
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.
Sourcepub 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,
)
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.
Sourcepub fn push_sprite(&mut self, s: &SpriteInstance)
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
impl SpriteBatch
Sourcepub fn prepare_with_uploads(
&self,
device: &Device,
queue: &Queue,
_encoder: &mut CommandEncoder,
screen: &ScreenDescriptor,
resources: &mut CallbackResources,
uploads: &[AtlasUpload],
) -> Vec<CommandBuffer>
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
impl WgpuCallback for SpriteBatch
fn resource_key(&self) -> Option<&str>
Source§fn prepare(
&self,
device: &Device,
queue: &Queue,
encoder: &mut CommandEncoder,
screen: &ScreenDescriptor,
resources: &mut CallbackResources,
) -> Vec<CommandBuffer>
fn prepare( &self, device: &Device, queue: &Queue, encoder: &mut CommandEncoder, screen: &ScreenDescriptor, resources: &mut CallbackResources, ) -> Vec<CommandBuffer>
repose render pass, with access to device/queue/encoder
for buffer uploads. Can return extra command buffers to be submitted.fn paint( &self, _info: PaintCallbackInfo, rpass: &mut CallbackRenderPass<'_, '_>, resources: &CallbackResources, )
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>
fn finish_prepare( &self, _device: &Device, _queue: &Queue, _encoder: &mut CommandEncoder, _screen_descriptor: &ScreenDescriptor, _resources: &mut CallbackResources, ) -> Vec<CommandBuffer>
prepare calls, before paint. For cross-callback sync.Auto Trait Implementations§
impl Freeze for SpriteBatch
impl RefUnwindSafe for SpriteBatch
impl Send for SpriteBatch
impl Sync for SpriteBatch
impl Unpin for SpriteBatch
impl UnsafeUnpin for SpriteBatch
impl UnwindSafe for SpriteBatch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.