pub struct MeshAttributeCompressionFlags(/* private fields */);bevy_mesh only.Expand description
If the corresponding attribute compression is enabled:
- Position will be Snorm16x4 relative to the mesh’s AABB. The w component is unused.
- Normal and tangent will be Snorm16x2 with octahedral encoding, using
octahedral_encode_signedandoctahedral_encode_tangent. - UV0 and UV1 will be Unorm16x2. UVs are remapped based on their min/max values so they can go beyond [0, 1], though a larger range will reduce precision.
Implementations§
Source§impl MeshAttributeCompressionFlags
impl MeshAttributeCompressionFlags
pub const COMPRESS_POSITION: MeshAttributeCompressionFlags
pub const COMPRESS_NORMAL: MeshAttributeCompressionFlags
pub const COMPRESS_TANGENT: MeshAttributeCompressionFlags
pub const COMPRESS_UV0: MeshAttributeCompressionFlags
pub const COMPRESS_UV1: MeshAttributeCompressionFlags
Source§impl MeshAttributeCompressionFlags
impl MeshAttributeCompressionFlags
Sourcepub const fn empty() -> MeshAttributeCompressionFlags
pub const fn empty() -> MeshAttributeCompressionFlags
Get a flags value with all bits unset.
Sourcepub const fn all() -> MeshAttributeCompressionFlags
pub const fn all() -> MeshAttributeCompressionFlags
Get a flags value with all known bits set.
Sourcepub const fn bits(&self) -> u8
pub const fn bits(&self) -> u8
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
Sourcepub const fn from_bits(bits: u8) -> Option<MeshAttributeCompressionFlags>
pub const fn from_bits(bits: u8) -> Option<MeshAttributeCompressionFlags>
Convert from a bits value.
This method will return None if any unknown bits are set.
Sourcepub const fn from_bits_truncate(bits: u8) -> MeshAttributeCompressionFlags
pub const fn from_bits_truncate(bits: u8) -> MeshAttributeCompressionFlags
Convert from a bits value, unsetting any unknown bits.
Sourcepub const fn from_bits_retain(bits: u8) -> MeshAttributeCompressionFlags
pub const fn from_bits_retain(bits: u8) -> MeshAttributeCompressionFlags
Convert from a bits value exactly.
Sourcepub fn from_name(name: &str) -> Option<MeshAttributeCompressionFlags>
pub fn from_name(name: &str) -> Option<MeshAttributeCompressionFlags>
Get a flags value with the bits of a flag with the given name set.
This method will return None if name is empty or doesn’t
correspond to any named flag.
Sourcepub const fn intersects(&self, other: MeshAttributeCompressionFlags) -> bool
pub const fn intersects(&self, other: MeshAttributeCompressionFlags) -> bool
Whether any set bits in other are also set in self.
Sourcepub const fn contains(&self, other: MeshAttributeCompressionFlags) -> bool
pub const fn contains(&self, other: MeshAttributeCompressionFlags) -> bool
Whether all set bits in other are also set in self.
Examples found in repository?
202 fn specialize(
203 &self,
204 key: Self::Key,
205 layout: &MeshVertexBufferLayoutRef,
206 ) -> Result<RenderPipelineDescriptor, SpecializedMeshPipelineError> {
207 let mut shader_defs = Vec::new();
208 // We will only use the position of the mesh in our shader so we only need to specify that
209 let mut vertex_attributes = Vec::new();
210 if layout.0.contains(Mesh::ATTRIBUTE_POSITION) {
211 // Handle compressed vertex positions.
212 if layout
213 .0
214 .get_attribute_compression()
215 .contains(MeshAttributeCompressionFlags::COMPRESS_POSITION)
216 {
217 shader_defs.push("VERTEX_POSITIONS_COMPRESSED".into());
218 }
219 // Make sure this matches the shader location
220 vertex_attributes.push(Mesh::ATTRIBUTE_POSITION.at_shader_location(0));
221 }
222 // This will automatically generate the correct `VertexBufferLayout` based on the vertex attributes
223 let vertex_buffer_layout = layout.0.get_layout(&vertex_attributes)?;
224 let view_layout = self
225 .mesh_pipeline
226 .get_view_layout(MeshPipelineViewLayoutKey::from(key));
227 Ok(RenderPipelineDescriptor {
228 label: Some("Specialized Mesh Pipeline".into()),
229 // We want to reuse the data from bevy so we use the same bind groups as the default
230 // mesh pipeline
231 layout: vec![
232 // Bind group 0 is the view uniform
233 view_layout.main_layout,
234 // Bind group 1 is empty
235 view_layout.empty_layout,
236 // Bind group 2 is the mesh uniform
237 self.mesh_pipeline.mesh_layouts.model_only.clone(),
238 ],
239 vertex: VertexState {
240 shader: self.shader_handle.clone(),
241 shader_defs: shader_defs.clone(),
242 buffers: vec![vertex_buffer_layout],
243 ..default()
244 },
245 fragment: Some(FragmentState {
246 shader: self.shader_handle.clone(),
247 shader_defs,
248 targets: vec![Some(ColorTargetState {
249 format: key.target_format(),
250 blend: None,
251 write_mask: ColorWrites::ALL,
252 })],
253 ..default()
254 }),
255 primitive: PrimitiveState {
256 topology: key.primitive_topology(),
257 strip_index_format: key.strip_index_format(),
258 cull_mode: Some(Face::Back),
259 ..default()
260 },
261 // It's generally recommended to specialize your pipeline for MSAA,
262 // but it's not always possible
263 ..default()
264 })
265 }More examples
215 fn specialize(
216 &self,
217 mesh_key: Self::Key,
218 layout: &MeshVertexBufferLayoutRef,
219 ) -> Result<RenderPipelineDescriptor, SpecializedMeshPipelineError> {
220 let mut shader_defs = Vec::new();
221 // Define the vertex attributes based on a standard bevy [`Mesh`]
222 let mut vertex_attributes = Vec::new();
223 if layout.0.contains(Mesh::ATTRIBUTE_POSITION) {
224 // Handle compressed vertex positions.
225 if layout
226 .0
227 .get_attribute_compression()
228 .contains(MeshAttributeCompressionFlags::COMPRESS_POSITION)
229 {
230 shader_defs.push("VERTEX_POSITIONS_COMPRESSED".into());
231 }
232 // Make sure this matches the shader location
233 vertex_attributes.push(Mesh::ATTRIBUTE_POSITION.at_shader_location(0));
234 }
235 if layout.0.contains(Mesh::ATTRIBUTE_COLOR) {
236 shader_defs.push("VERTEX_COLORS".into());
237 // Make sure this matches the shader location
238 vertex_attributes.push(Mesh::ATTRIBUTE_COLOR.at_shader_location(1));
239 }
240 // This will automatically generate the correct `VertexBufferLayout` based on the vertex attributes
241 let vertex_buffer_layout = layout.0.get_layout(&vertex_attributes)?;
242
243 let view_layout = self
244 .mesh_pipeline
245 .get_view_layout(MeshPipelineViewLayoutKey::from(mesh_key));
246
247 Ok(RenderPipelineDescriptor {
248 label: Some("Specialized Mesh Pipeline".into()),
249 layout: vec![
250 view_layout.main_layout,
251 view_layout.empty_layout,
252 self.mesh_pipeline.mesh_layouts.model_only.clone(),
253 ],
254 vertex: VertexState {
255 shader: self.shader_handle.clone(),
256 shader_defs: shader_defs.clone(),
257 // Customize how to store the meshes' vertex attributes in the vertex buffer
258 buffers: vec![vertex_buffer_layout],
259 ..default()
260 },
261 fragment: Some(FragmentState {
262 shader: self.shader_handle.clone(),
263 shader_defs,
264 targets: vec![Some(ColorTargetState {
265 // This isn't required, but bevy supports rendering different formats
266 // so it's generally recommended to specialize the pipeline for that
267 format: mesh_key.target_format(),
268 // For this example we only use opaque meshes,
269 // but if you wanted to use alpha blending you would need to set it here
270 blend: None,
271 write_mask: ColorWrites::ALL,
272 })],
273 ..default()
274 }),
275 primitive: PrimitiveState {
276 topology: mesh_key.primitive_topology(),
277 strip_index_format: mesh_key.strip_index_format(),
278 front_face: FrontFace::Ccw,
279 cull_mode: Some(Face::Back),
280 polygon_mode: PolygonMode::Fill,
281 ..default()
282 },
283 // Note that if your view has no depth buffer this will need to be
284 // changed.
285 depth_stencil: Some(DepthStencilState {
286 format: CORE_3D_DEPTH_FORMAT,
287 depth_write_enabled: Some(true),
288 depth_compare: Some(CompareFunction::GreaterEqual),
289 stencil: default(),
290 bias: default(),
291 }),
292 // It's generally recommended to specialize your pipeline for MSAA,
293 // but it's not always possible
294 multisample: MultisampleState {
295 count: mesh_key.msaa_samples(),
296 ..default()
297 },
298 ..default()
299 })
300 }Sourcepub fn insert(&mut self, other: MeshAttributeCompressionFlags)
pub fn insert(&mut self, other: MeshAttributeCompressionFlags)
The bitwise or (|) of the bits in self and other.
Sourcepub fn remove(&mut self, other: MeshAttributeCompressionFlags)
pub fn remove(&mut self, other: MeshAttributeCompressionFlags)
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
remove won’t truncate other, but the ! operator will.
Sourcepub fn toggle(&mut self, other: MeshAttributeCompressionFlags)
pub fn toggle(&mut self, other: MeshAttributeCompressionFlags)
The bitwise exclusive-or (^) of the bits in self and other.
Sourcepub fn set(&mut self, other: MeshAttributeCompressionFlags, value: bool)
pub fn set(&mut self, other: MeshAttributeCompressionFlags, value: bool)
Call insert when value is true or remove when value is false.
Sourcepub const fn intersection(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
pub const fn intersection( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise and (&) of the bits in self and other.
Sourcepub const fn union(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
pub const fn union( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise or (|) of the bits in self and other.
Sourcepub const fn difference(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
pub const fn difference( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Sourcepub const fn symmetric_difference(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
pub const fn symmetric_difference( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise exclusive-or (^) of the bits in self and other.
Sourcepub const fn complement(self) -> MeshAttributeCompressionFlags
pub const fn complement(self) -> MeshAttributeCompressionFlags
The bitwise negation (!) of the bits in self, truncating the result.
Source§impl MeshAttributeCompressionFlags
impl MeshAttributeCompressionFlags
Sourcepub const fn iter(&self) -> Iter<MeshAttributeCompressionFlags> ⓘ
pub const fn iter(&self) -> Iter<MeshAttributeCompressionFlags> ⓘ
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
Sourcepub const fn iter_names(&self) -> IterNames<MeshAttributeCompressionFlags> ⓘ
pub const fn iter_names(&self) -> IterNames<MeshAttributeCompressionFlags> ⓘ
Yield a set of contained named flags values.
This method is like iter, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Trait Implementations§
Source§impl BitAnd for MeshAttributeCompressionFlags
impl BitAnd for MeshAttributeCompressionFlags
Source§fn bitand(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
fn bitand( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise and (&) of the bits in self and other.
Source§type Output = MeshAttributeCompressionFlags
type Output = MeshAttributeCompressionFlags
& operator.Source§impl BitAndAssign for MeshAttributeCompressionFlags
impl BitAndAssign for MeshAttributeCompressionFlags
Source§fn bitand_assign(&mut self, other: MeshAttributeCompressionFlags)
fn bitand_assign(&mut self, other: MeshAttributeCompressionFlags)
The bitwise and (&) of the bits in self and other.
Source§impl BitOr for MeshAttributeCompressionFlags
impl BitOr for MeshAttributeCompressionFlags
Source§fn bitor(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
fn bitor( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise or (|) of the bits in self and other.
Source§type Output = MeshAttributeCompressionFlags
type Output = MeshAttributeCompressionFlags
| operator.Source§impl BitOrAssign for MeshAttributeCompressionFlags
impl BitOrAssign for MeshAttributeCompressionFlags
Source§fn bitor_assign(&mut self, other: MeshAttributeCompressionFlags)
fn bitor_assign(&mut self, other: MeshAttributeCompressionFlags)
The bitwise or (|) of the bits in self and other.
Source§impl BitXor for MeshAttributeCompressionFlags
impl BitXor for MeshAttributeCompressionFlags
Source§fn bitxor(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
fn bitxor( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The bitwise exclusive-or (^) of the bits in self and other.
Source§type Output = MeshAttributeCompressionFlags
type Output = MeshAttributeCompressionFlags
^ operator.Source§impl BitXorAssign for MeshAttributeCompressionFlags
impl BitXorAssign for MeshAttributeCompressionFlags
Source§fn bitxor_assign(&mut self, other: MeshAttributeCompressionFlags)
fn bitxor_assign(&mut self, other: MeshAttributeCompressionFlags)
The bitwise exclusive-or (^) of the bits in self and other.
Source§impl Clone for MeshAttributeCompressionFlags
impl Clone for MeshAttributeCompressionFlags
Source§fn clone(&self) -> MeshAttributeCompressionFlags
fn clone(&self) -> MeshAttributeCompressionFlags
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for MeshAttributeCompressionFlags
Source§impl<'de> Deserialize<'de> for MeshAttributeCompressionFlags
impl<'de> Deserialize<'de> for MeshAttributeCompressionFlags
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<MeshAttributeCompressionFlags, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<MeshAttributeCompressionFlags, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for MeshAttributeCompressionFlags
Source§impl Extend<MeshAttributeCompressionFlags> for MeshAttributeCompressionFlags
impl Extend<MeshAttributeCompressionFlags> for MeshAttributeCompressionFlags
Source§fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = MeshAttributeCompressionFlags>,
fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = MeshAttributeCompressionFlags>,
The bitwise or (|) of the bits in each flags value.
Source§fn extend_one(&mut self, item: T)
fn extend_one(&mut self, item: T)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl Flags for MeshAttributeCompressionFlags
impl Flags for MeshAttributeCompressionFlags
Source§const FLAGS: &'static [Flag<MeshAttributeCompressionFlags>]
const FLAGS: &'static [Flag<MeshAttributeCompressionFlags>]
Source§fn from_bits_retain(bits: u8) -> MeshAttributeCompressionFlags
fn from_bits_retain(bits: u8) -> MeshAttributeCompressionFlags
Source§fn all_named() -> MeshAttributeCompressionFlags
fn all_named() -> MeshAttributeCompressionFlags
Source§fn known_bits(&self) -> Self::Bits
fn known_bits(&self) -> Self::Bits
Source§fn unknown_bits(&self) -> Self::Bits
fn unknown_bits(&self) -> Self::Bits
Source§fn contains_unknown_bits(&self) -> bool
fn contains_unknown_bits(&self) -> bool
true if any unknown bits are set.Source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
Source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
Source§fn iter_names(&self) -> IterNames<Self> ⓘ
fn iter_names(&self) -> IterNames<Self> ⓘ
Source§fn iter_defined_names() -> IterDefinedNames<Self> ⓘ
fn iter_defined_names() -> IterDefinedNames<Self> ⓘ
Self::FLAGS.Source§fn iter_equal_names(&self) -> IterEqualNames<Self> ⓘ
fn iter_equal_names(&self) -> IterEqualNames<Self> ⓘ
Source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
other are also set in self.Source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
other are also set in self.Source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|) of the bits in self and other.Source§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^) of the bits in self and other.Source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&) of the bits in self and other.Source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
Source§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^) of the bits in self and other.Source§fn complement(self) -> Self
fn complement(self) -> Self
!) of the bits in self, truncating the result.Source§impl FromIterator<MeshAttributeCompressionFlags> for MeshAttributeCompressionFlags
impl FromIterator<MeshAttributeCompressionFlags> for MeshAttributeCompressionFlags
Source§fn from_iter<T>(iterator: T) -> MeshAttributeCompressionFlagswhere
T: IntoIterator<Item = MeshAttributeCompressionFlags>,
fn from_iter<T>(iterator: T) -> MeshAttributeCompressionFlagswhere
T: IntoIterator<Item = MeshAttributeCompressionFlags>,
The bitwise or (|) of the bits in each flags value.
Source§impl FromReflect for MeshAttributeCompressionFlags
impl FromReflect for MeshAttributeCompressionFlags
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<MeshAttributeCompressionFlags>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<MeshAttributeCompressionFlags>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetTypeRegistration for MeshAttributeCompressionFlags
impl GetTypeRegistration for MeshAttributeCompressionFlags
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(_registry: &mut TypeRegistry)
fn register_type_dependencies(_registry: &mut TypeRegistry)
Source§impl Hash for MeshAttributeCompressionFlags
impl Hash for MeshAttributeCompressionFlags
Source§impl IntoIterator for MeshAttributeCompressionFlags
impl IntoIterator for MeshAttributeCompressionFlags
Source§type Item = MeshAttributeCompressionFlags
type Item = MeshAttributeCompressionFlags
Source§type IntoIter = Iter<MeshAttributeCompressionFlags>
type IntoIter = Iter<MeshAttributeCompressionFlags>
Source§fn into_iter(self) -> <MeshAttributeCompressionFlags as IntoIterator>::IntoIter
fn into_iter(self) -> <MeshAttributeCompressionFlags as IntoIterator>::IntoIter
Source§impl IntoReturn for MeshAttributeCompressionFlags
impl IntoReturn for MeshAttributeCompressionFlags
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
MeshAttributeCompressionFlags: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
MeshAttributeCompressionFlags: 'into_return,
Source§impl Not for MeshAttributeCompressionFlags
impl Not for MeshAttributeCompressionFlags
Source§fn not(self) -> MeshAttributeCompressionFlags
fn not(self) -> MeshAttributeCompressionFlags
The bitwise negation (!) of the bits in self, truncating the result.
Source§type Output = MeshAttributeCompressionFlags
type Output = MeshAttributeCompressionFlags
! operator.Source§impl PartialReflect for MeshAttributeCompressionFlags
impl PartialReflect for MeshAttributeCompressionFlags
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn to_dynamic(&self) -> Result<Box<dyn PartialReflect>, ReflectCloneError>
fn to_dynamic(&self) -> Result<Box<dyn PartialReflect>, ReflectCloneError>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<MeshAttributeCompressionFlags>) -> ReflectOwned
fn reflect_owned(self: Box<MeshAttributeCompressionFlags>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<MeshAttributeCompressionFlags>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<MeshAttributeCompressionFlags>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(
self: Box<MeshAttributeCompressionFlags>,
) -> Box<dyn PartialReflect>
fn into_partial_reflect( self: Box<MeshAttributeCompressionFlags>, ) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails.Source§fn reflect_partial_cmp(
&self,
_value: &(dyn PartialReflect + 'static),
) -> Option<Ordering>
fn reflect_partial_cmp( &self, _value: &(dyn PartialReflect + 'static), ) -> Option<Ordering>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for MeshAttributeCompressionFlags
impl Reflect for MeshAttributeCompressionFlags
Source§fn into_any(self: Box<MeshAttributeCompressionFlags>) -> Box<dyn Any>
fn into_any(self: Box<MeshAttributeCompressionFlags>) -> Box<dyn Any>
Box<dyn Any>. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<MeshAttributeCompressionFlags>) -> Box<dyn Reflect>
fn into_reflect(self: Box<MeshAttributeCompressionFlags>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl Serialize for MeshAttributeCompressionFlags
impl Serialize for MeshAttributeCompressionFlags
Source§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 StructuralPartialEq for MeshAttributeCompressionFlags
Source§impl Sub for MeshAttributeCompressionFlags
impl Sub for MeshAttributeCompressionFlags
Source§fn sub(
self,
other: MeshAttributeCompressionFlags,
) -> MeshAttributeCompressionFlags
fn sub( self, other: MeshAttributeCompressionFlags, ) -> MeshAttributeCompressionFlags
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Source§type Output = MeshAttributeCompressionFlags
type Output = MeshAttributeCompressionFlags
- operator.Source§impl SubAssign for MeshAttributeCompressionFlags
impl SubAssign for MeshAttributeCompressionFlags
Source§fn sub_assign(&mut self, other: MeshAttributeCompressionFlags)
fn sub_assign(&mut self, other: MeshAttributeCompressionFlags)
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Source§impl TypePath for MeshAttributeCompressionFlags
impl TypePath for MeshAttributeCompressionFlags
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Auto Trait Implementations§
impl Freeze for MeshAttributeCompressionFlags
impl RefUnwindSafe for MeshAttributeCompressionFlags
impl Send for MeshAttributeCompressionFlags
impl Sync for MeshAttributeCompressionFlags
impl Unpin for MeshAttributeCompressionFlags
impl UnsafeUnpin for MeshAttributeCompressionFlags
impl UnwindSafe for MeshAttributeCompressionFlags
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
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConditionalSend for Twhere
T: Send,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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>
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>
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)
&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)
&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> 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>
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>
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)
&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)
&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> DowncastSync for T
impl<T> DowncastSync for T
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.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
key and return true if they are equal.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
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T> HitDataExtra for T
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
Source§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> 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> ⓘ
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 moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> PatchTemplate for Twhere
T: Template,
impl<T> PatchTemplate for Twhere
T: Template,
Source§fn patch_template<F>(func: F) -> TemplatePatch<F, T>
fn patch_template<F>(func: F) -> TemplatePatch<F, T>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Reflectable for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
impl<T> Settings for T
Source§impl<Ret> SpawnIfAsync<(), Ret> for Ret
impl<Ret> SpawnIfAsync<(), Ret> for Ret
Source§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
Source§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Source§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
Source§fn super_into(self) -> O
fn super_into(self) -> O
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.Source§impl<T> Template for T
impl<T> Template for T
Source§fn build_template(
&self,
_context: &mut TemplateContext<'_, '_>,
) -> Result<<T as Template>::Output, BevyError>
fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>
entity context to produce a Template::Output.Source§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.Source§impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
fn to_sample_(self) -> U
Source§impl<T> TypeData for T
impl<T> TypeData for T
Source§fn clone_type_data(&self) -> Box<dyn TypeData>
fn clone_type_data(&self) -> Box<dyn TypeData>
self.