Skip to main content

SpriteRegistryResident

Struct SpriteRegistryResident 

Source
pub struct SpriteRegistryResident {
    pub occupancy: Buffer,
    pub colors: Buffer,
    pub color_offsets: Buffer,
    pub model_meta: Buffer,
    pub instances: Buffer,
    pub instance_capacity: u32,
    pub tile_ranges: Buffer,
    pub tile_instances: Buffer,
    /* private fields */
}
Expand description

GPU-resident registry + instances: every model’s occupancy / colours / offsets concatenated into shared storage buffers, a per-model metadata table, and a capacity-sized instance buffer rewritten each frame with the frustum-visible subset (GPU.10.2). One bind group serves all models (same approach as the multi-grid scene).

Fields§

§occupancy: Buffer§colors: Buffer§color_offsets: Buffer§model_meta: Buffer§instances: Buffer

Holds up to instance_capacity instances; the visible subset is packed into [0, count) each frame by Self::cull_bin_upload.

§instance_capacity: u32§tile_ranges: Buffer

GPU.10.3 — per-tile (offset, count) into tile_instances, flat 2 * tiles_x * tiles_y u32s. Grown to fit the screen.

§tile_instances: Buffer

GPU.10.3 — flat list of visible-instance indices grouped by tile. Grown to fit the per-frame total.

Implementations§

Source§

impl SpriteRegistryResident

Source

pub fn upload( device: &Device, registry: &SpriteModelRegistry, instances: &[SpriteInstance], ) -> Self

Concatenate registry’s models into shared buffers and prepare instances for per-frame culling. Model-relative indices stay as built; the shader adds each model’s base offset from the metadata table.

Source

pub fn cull_bin_upload( &mut self, device: &Device, queue: &Queue, f: &ViewFrustum, screen_w: u32, screen_h: u32, tile_size: u32, lod_px: f32, ) -> (u32, u32, u32)

GPU.10.3 — frustum-cull, pack the visible subset into the instance buffer, then bin those instances into screen tiles: project each visible bounding sphere to a screen AABB and append its (visible) index to every overlapped tile. Uploads the instance buffer + tile_ranges (per-tile offset/count) + tile_instances (flat grouped indices), growing the tile buffers as needed. Returns (visible_count, tiles_x, tiles_y).

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