pub struct MaterialSortKey(pub u64);Expand description
A compact sorting key for materials, used to minimize GPU state changes by batching objects with similar materials together.
Layout (64 bits):
- Bits 63..56: transparency flag (0=opaque, 1=transparent)
- Bits 55..48: material ID
- Bits 47..32: shader program handle (low 16 bits)
- Bits 31..16: albedo texture handle (low 16 bits)
- Bits 15..0: other texture handle (low 16 bits)
Tuple Fields§
§0: u64Implementations§
Source§impl MaterialSortKey
impl MaterialSortKey
pub fn new(key: u64) -> Self
Sourcepub fn from_material(mat: &PbrMaterial) -> Self
pub fn from_material(mat: &PbrMaterial) -> Self
Build a sort key from a PBR material.
Sourcepub fn is_transparent(&self) -> bool
pub fn is_transparent(&self) -> bool
Extract the transparency flag.
Sourcepub fn material_id(&self) -> u8
pub fn material_id(&self) -> u8
Extract the material ID.
Trait Implementations§
Source§impl Clone for MaterialSortKey
impl Clone for MaterialSortKey
Source§fn clone(&self) -> MaterialSortKey
fn clone(&self) -> MaterialSortKey
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for MaterialSortKey
impl Debug for MaterialSortKey
Source§impl Default for MaterialSortKey
impl Default for MaterialSortKey
Source§impl Hash for MaterialSortKey
impl Hash for MaterialSortKey
Source§impl Ord for MaterialSortKey
impl Ord for MaterialSortKey
Source§fn cmp(&self, other: &MaterialSortKey) -> Ordering
fn cmp(&self, other: &MaterialSortKey) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for MaterialSortKey
impl PartialEq for MaterialSortKey
Source§impl PartialOrd for MaterialSortKey
impl PartialOrd for MaterialSortKey
impl Copy for MaterialSortKey
impl Eq for MaterialSortKey
impl StructuralPartialEq for MaterialSortKey
Auto Trait Implementations§
impl Freeze for MaterialSortKey
impl RefUnwindSafe for MaterialSortKey
impl Send for MaterialSortKey
impl Sync for MaterialSortKey
impl Unpin for MaterialSortKey
impl UnsafeUnpin for MaterialSortKey
impl UnwindSafe for MaterialSortKey
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.