Enum bevy::render::render_resource::VertexFormat
#[repr(C)]pub enum VertexFormat {
Show 34 variants
Uint8x2 = 0,
Uint8x4 = 1,
Sint8x2 = 2,
Sint8x4 = 3,
Unorm8x2 = 4,
Unorm8x4 = 5,
Snorm8x2 = 6,
Snorm8x4 = 7,
Uint16x2 = 8,
Uint16x4 = 9,
Sint16x2 = 10,
Sint16x4 = 11,
Unorm16x2 = 12,
Unorm16x4 = 13,
Snorm16x2 = 14,
Snorm16x4 = 15,
Float16x2 = 16,
Float16x4 = 17,
Float32 = 18,
Float32x2 = 19,
Float32x3 = 20,
Float32x4 = 21,
Uint32 = 22,
Uint32x2 = 23,
Uint32x3 = 24,
Uint32x4 = 25,
Sint32 = 26,
Sint32x2 = 27,
Sint32x3 = 28,
Sint32x4 = 29,
Float64 = 30,
Float64x2 = 31,
Float64x3 = 32,
Float64x4 = 33,
}
Expand description
Vertex Format for a VertexAttribute
(input).
Corresponds to WebGPU GPUVertexFormat
.
Variants§
Uint8x2 = 0
Two unsigned bytes (u8). vec2<u32>
in shaders.
Uint8x4 = 1
Four unsigned bytes (u8). vec4<u32>
in shaders.
Sint8x2 = 2
Two signed bytes (i8). vec2<i32>
in shaders.
Sint8x4 = 3
Four signed bytes (i8). vec4<i32>
in shaders.
Unorm8x2 = 4
Two unsigned bytes (u8). [0, 255] converted to float [0, 1] vec2<f32>
in shaders.
Unorm8x4 = 5
Four unsigned bytes (u8). [0, 255] converted to float [0, 1] vec4<f32>
in shaders.
Snorm8x2 = 6
Two signed bytes (i8). [-127, 127] converted to float [-1, 1] vec2<f32>
in shaders.
Snorm8x4 = 7
Four signed bytes (i8). [-127, 127] converted to float [-1, 1] vec4<f32>
in shaders.
Uint16x2 = 8
Two unsigned shorts (u16). vec2<u32>
in shaders.
Uint16x4 = 9
Four unsigned shorts (u16). vec4<u32>
in shaders.
Sint16x2 = 10
Two signed shorts (i16). vec2<i32>
in shaders.
Sint16x4 = 11
Four signed shorts (i16). vec4<i32>
in shaders.
Unorm16x2 = 12
Two unsigned shorts (u16). [0, 65535] converted to float [0, 1] vec2<f32>
in shaders.
Unorm16x4 = 13
Four unsigned shorts (u16). [0, 65535] converted to float [0, 1] vec4<f32>
in shaders.
Snorm16x2 = 14
Two signed shorts (i16). [-32767, 32767] converted to float [-1, 1] vec2<f32>
in shaders.
Snorm16x4 = 15
Four signed shorts (i16). [-32767, 32767] converted to float [-1, 1] vec4<f32>
in shaders.
Float16x2 = 16
Two half-precision floats (no Rust equiv). vec2<f32>
in shaders.
Float16x4 = 17
Four half-precision floats (no Rust equiv). vec4<f32>
in shaders.
Float32 = 18
One single-precision float (f32). f32
in shaders.
Float32x2 = 19
Two single-precision floats (f32). vec2<f32>
in shaders.
Float32x3 = 20
Three single-precision floats (f32). vec3<f32>
in shaders.
Float32x4 = 21
Four single-precision floats (f32). vec4<f32>
in shaders.
Uint32 = 22
One unsigned int (u32). u32
in shaders.
Uint32x2 = 23
Two unsigned ints (u32). vec2<u32>
in shaders.
Uint32x3 = 24
Three unsigned ints (u32). vec3<u32>
in shaders.
Uint32x4 = 25
Four unsigned ints (u32). vec4<u32>
in shaders.
Sint32 = 26
One signed int (i32). i32
in shaders.
Sint32x2 = 27
Two signed ints (i32). vec2<i32>
in shaders.
Sint32x3 = 28
Three signed ints (i32). vec3<i32>
in shaders.
Sint32x4 = 29
Four signed ints (i32). vec4<i32>
in shaders.
Float64 = 30
One double-precision float (f64). f32
in shaders. Requires Features::VERTEX_ATTRIBUTE_64BIT
.
Float64x2 = 31
Two double-precision floats (f64). vec2<f32>
in shaders. Requires Features::VERTEX_ATTRIBUTE_64BIT
.
Float64x3 = 32
Three double-precision floats (f64). vec3<f32>
in shaders. Requires Features::VERTEX_ATTRIBUTE_64BIT
.
Float64x4 = 33
Four double-precision floats (f64). vec4<f32>
in shaders. Requires Features::VERTEX_ATTRIBUTE_64BIT
.
Implementations§
§impl VertexFormat
impl VertexFormat
pub const fn size(&self) -> u64
pub const fn size(&self) -> u64
Returns the byte size of the format.
Examples found in repository?
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
fn specialize(
&self,
key: Self::Key,
layout: &MeshVertexBufferLayoutRef,
) -> Result<RenderPipelineDescriptor, SpecializedMeshPipelineError> {
let mut descriptor = self.mesh_pipeline.specialize(key, layout)?;
descriptor.vertex.shader = self.shader.clone();
descriptor.vertex.buffers.push(VertexBufferLayout {
array_stride: std::mem::size_of::<InstanceData>() as u64,
step_mode: VertexStepMode::Instance,
attributes: vec![
VertexAttribute {
format: VertexFormat::Float32x4,
offset: 0,
shader_location: 3, // shader locations 0-2 are taken up by Position, Normal and UV attributes
},
VertexAttribute {
format: VertexFormat::Float32x4,
offset: VertexFormat::Float32x4.size(),
shader_location: 4,
},
],
});
descriptor.fragment.as_mut().unwrap().shader = self.shader.clone();
Ok(descriptor)
}
Trait Implementations§
§impl Clone for VertexFormat
impl Clone for VertexFormat
§fn clone(&self) -> VertexFormat
fn clone(&self) -> VertexFormat
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for VertexFormat
impl Debug for VertexFormat
§impl From<&VertexAttributeValues> for VertexFormat
impl From<&VertexAttributeValues> for VertexFormat
§fn from(values: &VertexAttributeValues) -> VertexFormat
fn from(values: &VertexAttributeValues) -> VertexFormat
§impl Hash for VertexFormat
impl Hash for VertexFormat
§impl PartialEq for VertexFormat
impl PartialEq for VertexFormat
§fn eq(&self, other: &VertexFormat) -> bool
fn eq(&self, other: &VertexFormat) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for VertexFormat
impl Serialize for VertexFormat
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
§impl VertexFormatSize for VertexFormat
impl VertexFormatSize for VertexFormat
impl Copy for VertexFormat
impl Eq for VertexFormat
impl StructuralPartialEq for VertexFormat
Auto Trait Implementations§
impl Freeze for VertexFormat
impl RefUnwindSafe for VertexFormat
impl Send for VertexFormat
impl Sync for VertexFormat
impl Unpin for VertexFormat
impl UnwindSafe for VertexFormat
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
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> ⓘ
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