pub struct MeshUniform {
pub world_from_local: [Vec4; 3],
pub previous_world_from_local: [Vec4; 3],
pub local_from_world_transpose_a: [Vec4; 2],
pub local_from_world_transpose_b: f32,
pub flags: u32,
pub lightmap_uv_rect: UVec2,
pub first_vertex_index: u32,
pub current_skin_index: u32,
pub material_and_lightmap_bind_group_slot: u32,
pub tag: u32,
pub pad: u32,
}
Fields§
§world_from_local: [Vec4; 3]
§previous_world_from_local: [Vec4; 3]
§local_from_world_transpose_a: [Vec4; 2]
§local_from_world_transpose_b: f32
§flags: u32
§lightmap_uv_rect: UVec2
§first_vertex_index: u32
The index of this mesh’s first vertex in the vertex buffer.
Multiple meshes can be packed into a single vertex buffer (see
MeshAllocator
). This value stores the offset of the first vertex in
this mesh in that buffer.
current_skin_index: u32
The current skin index, or u32::MAX
if there’s no skin.
material_and_lightmap_bind_group_slot: u32
The material and lightmap indices, packed into 32 bits.
Low 16 bits: index of the material inside the bind group data. High 16 bits: index of the lightmap in the binding array.
tag: u32
User supplied tag to identify this mesh instance.
pad: u32
Padding.
Implementations§
Source§impl MeshUniform
impl MeshUniform
pub fn new( mesh_transforms: &MeshTransforms, first_vertex_index: u32, material_bind_group_slot: MaterialBindGroupSlot, maybe_lightmap: Option<(LightmapSlotIndex, Rect)>, current_skin_index: Option<u32>, tag: Option<u32>, ) -> Self
Trait Implementations§
Source§impl Clone for MeshUniform
impl Clone for MeshUniform
Source§fn clone(&self) -> MeshUniform
fn clone(&self) -> MeshUniform
Returns a copy 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 CreateFrom for MeshUniformwhere
Self: ShaderType<ExtraMetadata = StructMetadata<11usize>>,
for<'__, '__> [Vec4; 3]: CreateFrom,
for<'__> [Vec4; 2]: CreateFrom,
for<'__> f32: CreateFrom,
for<'__, '__, '__, '__, '__, '__> u32: CreateFrom,
for<'__> UVec2: CreateFrom,
impl CreateFrom for MeshUniformwhere
Self: ShaderType<ExtraMetadata = StructMetadata<11usize>>,
for<'__, '__> [Vec4; 3]: CreateFrom,
for<'__> [Vec4; 2]: CreateFrom,
for<'__> f32: CreateFrom,
for<'__, '__, '__, '__, '__, '__> u32: CreateFrom,
for<'__> UVec2: CreateFrom,
fn create_from<B: BufferRef>(reader: &mut Reader<B>) -> Self
Source§impl ReadFrom for MeshUniform
impl ReadFrom for MeshUniform
Source§impl ShaderSize for MeshUniformwhere
[Vec4; 3]: ShaderSize,
[Vec4; 2]: ShaderSize,
f32: ShaderSize,
u32: ShaderSize,
UVec2: ShaderSize,
impl ShaderSize for MeshUniformwhere
[Vec4; 3]: ShaderSize,
[Vec4; 2]: ShaderSize,
f32: ShaderSize,
u32: ShaderSize,
UVec2: ShaderSize,
Source§const SHADER_SIZE: NonZero<u64> = _
const SHADER_SIZE: NonZero<u64> = _
Represents WGSL Size (equivalent to
ShaderType::min_size
)Source§impl ShaderType for MeshUniformwhere
[Vec4; 3]: ShaderType + ShaderSize,
[Vec4; 2]: ShaderType + ShaderSize,
f32: ShaderType + ShaderSize,
u32: ShaderType + ShaderSize,
UVec2: ShaderType + ShaderSize,
impl ShaderType for MeshUniformwhere
[Vec4; 3]: ShaderType + ShaderSize,
[Vec4; 2]: ShaderType + ShaderSize,
f32: ShaderType + ShaderSize,
u32: ShaderType + ShaderSize,
UVec2: ShaderType + ShaderSize,
Source§fn size(&self) -> NonZeroU64
fn size(&self) -> NonZeroU64
Returns the size of
Self
at runtime Read moreSource§fn assert_uniform_compat()
fn assert_uniform_compat()
Asserts that
Self
meets the requirements of the
uniform address space restrictions on stored values and the
uniform address space layout constraints Read moreSource§impl WriteInto for MeshUniform
impl WriteInto for MeshUniform
fn write_into<B: BufferMut>(&self, writer: &mut Writer<B>)
Auto Trait Implementations§
impl Freeze for MeshUniform
impl RefUnwindSafe for MeshUniform
impl Send for MeshUniform
impl Sync for MeshUniform
impl Unpin for MeshUniform
impl UnwindSafe for MeshUniform
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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<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>
Converts
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn 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>
Converts
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which 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)
Converts
&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)
Converts
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more