pub struct LightCuller {
pub tile_size_x: u32,
pub tile_size_y: u32,
pub screen_width: u32,
pub screen_height: u32,
pub tiles: Vec<LightTile>,
pub max_lights_per_tile: usize,
}Expand description
Tile-based light culler: divides the screen into NxM tiles and assigns only the visible lights to each tile.
Fields§
§tile_size_x: u32§tile_size_y: u32§screen_width: u32§screen_height: u32§tiles: Vec<LightTile>§max_lights_per_tile: usizeImplementations§
Source§impl LightCuller
impl LightCuller
pub fn new(screen_w: u32, screen_h: u32, tile_size: u32) -> Self
pub fn tile_count_x(&self) -> u32
pub fn tile_count_y(&self) -> u32
pub fn tile_index(&self, tx: u32, ty: u32) -> usize
Sourcepub fn cull_point_lights(&mut self, lights: &[PointLight], view_proj: Mat4)
pub fn cull_point_lights(&mut self, lights: &[PointLight], view_proj: Mat4)
Cull point lights against all tiles using screen-space bounding circles.
pub fn resize(&mut self, screen_w: u32, screen_h: u32)
Auto Trait Implementations§
impl Freeze for LightCuller
impl RefUnwindSafe for LightCuller
impl Send for LightCuller
impl Sync for LightCuller
impl Unpin for LightCuller
impl UnsafeUnpin for LightCuller
impl UnwindSafe for LightCuller
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
Mutably borrows from an owned value. Read more
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>
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>
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)
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)
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.