Skip to main content

BaseMeshPipelineKey

Struct BaseMeshPipelineKey 

Source
pub struct BaseMeshPipelineKey(/* private fields */);
Available on crate feature bevy_mesh only.
Expand description

Our base mesh pipeline key bits start from the highest bit and go downward. The PBR mesh pipeline key bits start from the lowest bit and go upward. This allows the PBR bits in the downstream crate bevy_pbr to coexist in the same field without any shifts.

Implementations§

Source§

impl BaseMeshPipelineKey

Source§

impl BaseMeshPipelineKey

Source

pub const fn empty() -> BaseMeshPipelineKey

Get a flags value with all bits unset.

Source

pub const fn all() -> BaseMeshPipelineKey

Get a flags value with all known bits set.

Source

pub const fn bits(&self) -> u64

Get the underlying bits value.

The returned value is exactly the bits set in this flags value.

Examples found in repository?
examples/2d/mesh2d_manual.rs (line 611)
565fn queue_colored_mesh2d(
566    transparent_draw_functions: Res<DrawFunctions<TransparentColoredMesh2d>>,
567    colored_mesh2d_pipeline: Res<ColoredMesh2dPipeline>,
568    mut pipelines: ResMut<SpecializedRenderPipelines<ColoredMesh2dPipeline>>,
569    pipeline_cache: Res<PipelineCache>,
570    render_meshes: Res<RenderAssets<RenderMesh>>,
571    render_mesh_instances: Res<RenderColoredMesh2dInstances>,
572    mut transparent_render_phases: ResMut<ViewSortedRenderPhases<TransparentColoredMesh2d>>,
573    views: Query<(&RenderVisibleEntities, &ExtractedView, &Msaa)>,
574) {
575    if render_mesh_instances.is_empty() {
576        return;
577    }
578
579    // Iterate each view (a camera is a view)
580    for (visible_entities, view, msaa) in &views {
581        let Some(transparent_phase) = transparent_render_phases.get_mut(&view.retained_view_entity)
582        else {
583            continue;
584        };
585
586        let draw_colored_mesh2d = transparent_draw_functions
587            .read()
588            .id::<DrawTransparentColoredMesh2d>();
589
590        let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples())
591            | Mesh2dPipelineKey::from_target_format(view.target_format);
592
593        // Queue all entities visible to that view
594        let Some(visible_entities) = visible_entities.get::<Mesh2d>() else {
595            continue;
596        };
597        for (render_entity, visible_entity) in visible_entities.iter_visible() {
598            if let Some(mesh_instance) = render_mesh_instances.get(visible_entity) {
599                let mesh2d_handle = mesh_instance.mesh_asset_id;
600                let mesh2d_transforms = &mesh_instance.transforms;
601                // Get our specialized pipeline
602                let mut mesh2d_key = mesh_key;
603                let Some(mesh) = render_meshes.get(mesh2d_handle) else {
604                    continue;
605                };
606                mesh2d_key |= Mesh2dPipelineKey::from(
607                    BaseMeshPipelineKey::from_primitive_topology_and_strip_index(
608                        mesh.primitive_topology(),
609                        mesh.index_format(),
610                    )
611                    .bits(),
612                );
613
614                let pipeline_id =
615                    pipelines.specialize(&pipeline_cache, &colored_mesh2d_pipeline, mesh2d_key);
616
617                let mesh_z = mesh2d_transforms.world_from_local.translation.z;
618                transparent_phase.add_retained(TransparentColoredMesh2d {
619                    entity: (*render_entity, *visible_entity),
620                    draw_function: draw_colored_mesh2d,
621                    pipeline: pipeline_id,
622                    // The 2d render items are sorted according to their z value before rendering,
623                    // in order to get correct transparency
624                    sort_key: FloatOrd(mesh_z),
625                    // This material is not batched
626                    batch_range: 0..1,
627                    extra_index: PhaseItemExtraIndex::None,
628                    indexed: mesh.indexed(),
629                });
630            }
631        }
632    }
633}
Source

pub const fn from_bits(bits: u64) -> Option<BaseMeshPipelineKey>

Convert from a bits value.

This method will return None if any unknown bits are set.

Source

pub const fn from_bits_truncate(bits: u64) -> BaseMeshPipelineKey

Convert from a bits value, unsetting any unknown bits.

Source

pub const fn from_bits_retain(bits: u64) -> BaseMeshPipelineKey

Convert from a bits value exactly.

Examples found in repository?
examples/2d/mesh2d_manual.rs (line 216)
174    fn specialize(&self, key: Self::Key) -> RenderPipelineDescriptor {
175        // Customize how to store the meshes' vertex attributes in the vertex buffer
176        // Our meshes only have position and color
177        let formats = vec![
178            // Position
179            VertexFormat::Float32x3,
180            // Color
181            VertexFormat::Uint32,
182        ];
183
184        let vertex_layout =
185            VertexBufferLayout::from_vertex_formats(VertexStepMode::Vertex, formats);
186
187        let format = key.target_format();
188
189        RenderPipelineDescriptor {
190            vertex: VertexState {
191                // Use our custom shader
192                shader: self.shader.clone(),
193                // Use our custom vertex buffer
194                buffers: vec![vertex_layout],
195                ..default()
196            },
197            fragment: Some(FragmentState {
198                // Use our custom shader
199                shader: self.shader.clone(),
200                targets: vec![Some(ColorTargetState {
201                    format,
202                    blend: Some(BlendState::ALPHA_BLENDING),
203                    write_mask: ColorWrites::ALL,
204                })],
205                ..default()
206            }),
207            // Use the two standard uniforms for 2d meshes
208            layout: vec![
209                // Bind group 0 is the view uniform
210                self.mesh2d_pipeline.view_layout.clone(),
211                // Bind group 1 is the mesh uniform
212                self.mesh2d_pipeline.mesh_layout.clone(),
213            ],
214            primitive: PrimitiveState {
215                cull_mode: Some(Face::Back),
216                topology: BaseMeshPipelineKey::from_bits_retain(key.bits()).primitive_topology(),
217                strip_index_format: BaseMeshPipelineKey::from_bits_retain(key.bits())
218                    .strip_index_format(),
219                ..default()
220            },
221            depth_stencil: Some(DepthStencilState {
222                format: CORE_2D_DEPTH_FORMAT,
223                depth_write_enabled: Some(false),
224                depth_compare: Some(CompareFunction::GreaterEqual),
225                stencil: StencilState {
226                    front: StencilFaceState::IGNORE,
227                    back: StencilFaceState::IGNORE,
228                    read_mask: 0,
229                    write_mask: 0,
230                },
231                bias: DepthBiasState {
232                    constant: 0,
233                    slope_scale: 0.0,
234                    clamp: 0.0,
235                },
236            }),
237            multisample: MultisampleState {
238                count: key.msaa_samples(),
239                mask: !0,
240                alpha_to_coverage_enabled: false,
241            },
242            label: Some("colored_mesh2d_pipeline".into()),
243            ..default()
244        }
245    }
Source

pub fn from_name(name: &str) -> Option<BaseMeshPipelineKey>

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.

Source

pub const fn is_empty(&self) -> bool

Whether all bits in self are unset.

Source

pub const fn is_all(&self) -> bool

Whether all known bits in this flags value are set.

Source

pub const fn intersects(&self, other: BaseMeshPipelineKey) -> bool

Whether any set bits in other are also set in self.

Source

pub const fn contains(&self, other: BaseMeshPipelineKey) -> bool

Whether all set bits in other are also set in self.

Source

pub fn insert(&mut self, other: BaseMeshPipelineKey)

The bitwise or (|) of the bits in self and other.

Source

pub fn remove(&mut self, other: BaseMeshPipelineKey)

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.

Source

pub fn toggle(&mut self, other: BaseMeshPipelineKey)

The bitwise exclusive-or (^) of the bits in self and other.

Source

pub fn set(&mut self, other: BaseMeshPipelineKey, value: bool)

Call insert when value is true or remove when value is false.

Source

pub const fn intersection( self, other: BaseMeshPipelineKey, ) -> BaseMeshPipelineKey

The bitwise and (&) of the bits in self and other.

Source

pub const fn union(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

The bitwise or (|) of the bits in self and other.

Source

pub const fn difference(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

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

pub const fn symmetric_difference( self, other: BaseMeshPipelineKey, ) -> BaseMeshPipelineKey

The bitwise exclusive-or (^) of the bits in self and other.

Source

pub const fn complement(self) -> BaseMeshPipelineKey

The bitwise negation (!) of the bits in self, truncating the result.

Source§

impl BaseMeshPipelineKey

Source

pub const fn iter(&self) -> Iter<BaseMeshPipelineKey> ⓘ

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.

Source

pub const fn iter_names(&self) -> IterNames<BaseMeshPipelineKey> ⓘ

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.

Source§

impl BaseMeshPipelineKey

Source

pub const MORPH_TARGETS_SHIFT_BITS: u64

Source

pub const PRIMITIVE_TOPOLOGY_MASK_BITS: u64 = 0b111

Source

pub const PRIMITIVE_TOPOLOGY_SHIFT_BITS: u64

Source

pub const STRIP_INDEX_FORMAT_MASK_BITS: u64 = 0b11

Source

pub const STRIP_INDEX_FORMAT_SHIFT_BITS: u64

Source

pub fn from_primitive_topology_and_strip_index( primitive_topology: PrimitiveTopology, strip_index_format: Option<IndexFormat>, ) -> BaseMeshPipelineKey

Create a BaseMeshPipelineKey from mesh primitive topology and index format.

For non-strip topologies, Self::STRIP_INDEX_FORMAT_NONE is set regardless of the strip_index_format argument.

Examples found in repository?
examples/2d/mesh2d_manual.rs (lines 607-610)
565fn queue_colored_mesh2d(
566    transparent_draw_functions: Res<DrawFunctions<TransparentColoredMesh2d>>,
567    colored_mesh2d_pipeline: Res<ColoredMesh2dPipeline>,
568    mut pipelines: ResMut<SpecializedRenderPipelines<ColoredMesh2dPipeline>>,
569    pipeline_cache: Res<PipelineCache>,
570    render_meshes: Res<RenderAssets<RenderMesh>>,
571    render_mesh_instances: Res<RenderColoredMesh2dInstances>,
572    mut transparent_render_phases: ResMut<ViewSortedRenderPhases<TransparentColoredMesh2d>>,
573    views: Query<(&RenderVisibleEntities, &ExtractedView, &Msaa)>,
574) {
575    if render_mesh_instances.is_empty() {
576        return;
577    }
578
579    // Iterate each view (a camera is a view)
580    for (visible_entities, view, msaa) in &views {
581        let Some(transparent_phase) = transparent_render_phases.get_mut(&view.retained_view_entity)
582        else {
583            continue;
584        };
585
586        let draw_colored_mesh2d = transparent_draw_functions
587            .read()
588            .id::<DrawTransparentColoredMesh2d>();
589
590        let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples())
591            | Mesh2dPipelineKey::from_target_format(view.target_format);
592
593        // Queue all entities visible to that view
594        let Some(visible_entities) = visible_entities.get::<Mesh2d>() else {
595            continue;
596        };
597        for (render_entity, visible_entity) in visible_entities.iter_visible() {
598            if let Some(mesh_instance) = render_mesh_instances.get(visible_entity) {
599                let mesh2d_handle = mesh_instance.mesh_asset_id;
600                let mesh2d_transforms = &mesh_instance.transforms;
601                // Get our specialized pipeline
602                let mut mesh2d_key = mesh_key;
603                let Some(mesh) = render_meshes.get(mesh2d_handle) else {
604                    continue;
605                };
606                mesh2d_key |= Mesh2dPipelineKey::from(
607                    BaseMeshPipelineKey::from_primitive_topology_and_strip_index(
608                        mesh.primitive_topology(),
609                        mesh.index_format(),
610                    )
611                    .bits(),
612                );
613
614                let pipeline_id =
615                    pipelines.specialize(&pipeline_cache, &colored_mesh2d_pipeline, mesh2d_key);
616
617                let mesh_z = mesh2d_transforms.world_from_local.translation.z;
618                transparent_phase.add_retained(TransparentColoredMesh2d {
619                    entity: (*render_entity, *visible_entity),
620                    draw_function: draw_colored_mesh2d,
621                    pipeline: pipeline_id,
622                    // The 2d render items are sorted according to their z value before rendering,
623                    // in order to get correct transparency
624                    sort_key: FloatOrd(mesh_z),
625                    // This material is not batched
626                    batch_range: 0..1,
627                    extra_index: PhaseItemExtraIndex::None,
628                    indexed: mesh.indexed(),
629                });
630            }
631        }
632    }
633}
Source

pub fn primitive_topology(&self) -> PrimitiveTopology

Examples found in repository?
examples/2d/mesh2d_manual.rs (line 216)
174    fn specialize(&self, key: Self::Key) -> RenderPipelineDescriptor {
175        // Customize how to store the meshes' vertex attributes in the vertex buffer
176        // Our meshes only have position and color
177        let formats = vec![
178            // Position
179            VertexFormat::Float32x3,
180            // Color
181            VertexFormat::Uint32,
182        ];
183
184        let vertex_layout =
185            VertexBufferLayout::from_vertex_formats(VertexStepMode::Vertex, formats);
186
187        let format = key.target_format();
188
189        RenderPipelineDescriptor {
190            vertex: VertexState {
191                // Use our custom shader
192                shader: self.shader.clone(),
193                // Use our custom vertex buffer
194                buffers: vec![vertex_layout],
195                ..default()
196            },
197            fragment: Some(FragmentState {
198                // Use our custom shader
199                shader: self.shader.clone(),
200                targets: vec![Some(ColorTargetState {
201                    format,
202                    blend: Some(BlendState::ALPHA_BLENDING),
203                    write_mask: ColorWrites::ALL,
204                })],
205                ..default()
206            }),
207            // Use the two standard uniforms for 2d meshes
208            layout: vec![
209                // Bind group 0 is the view uniform
210                self.mesh2d_pipeline.view_layout.clone(),
211                // Bind group 1 is the mesh uniform
212                self.mesh2d_pipeline.mesh_layout.clone(),
213            ],
214            primitive: PrimitiveState {
215                cull_mode: Some(Face::Back),
216                topology: BaseMeshPipelineKey::from_bits_retain(key.bits()).primitive_topology(),
217                strip_index_format: BaseMeshPipelineKey::from_bits_retain(key.bits())
218                    .strip_index_format(),
219                ..default()
220            },
221            depth_stencil: Some(DepthStencilState {
222                format: CORE_2D_DEPTH_FORMAT,
223                depth_write_enabled: Some(false),
224                depth_compare: Some(CompareFunction::GreaterEqual),
225                stencil: StencilState {
226                    front: StencilFaceState::IGNORE,
227                    back: StencilFaceState::IGNORE,
228                    read_mask: 0,
229                    write_mask: 0,
230                },
231                bias: DepthBiasState {
232                    constant: 0,
233                    slope_scale: 0.0,
234                    clamp: 0.0,
235                },
236            }),
237            multisample: MultisampleState {
238                count: key.msaa_samples(),
239                mask: !0,
240                alpha_to_coverage_enabled: false,
241            },
242            label: Some("colored_mesh2d_pipeline".into()),
243            ..default()
244        }
245    }
Source

pub fn strip_index_format(&self) -> Option<IndexFormat>

Returns the IndexFormat that this mesh pipeline key specifies.

Examples found in repository?
examples/2d/mesh2d_manual.rs (line 218)
174    fn specialize(&self, key: Self::Key) -> RenderPipelineDescriptor {
175        // Customize how to store the meshes' vertex attributes in the vertex buffer
176        // Our meshes only have position and color
177        let formats = vec![
178            // Position
179            VertexFormat::Float32x3,
180            // Color
181            VertexFormat::Uint32,
182        ];
183
184        let vertex_layout =
185            VertexBufferLayout::from_vertex_formats(VertexStepMode::Vertex, formats);
186
187        let format = key.target_format();
188
189        RenderPipelineDescriptor {
190            vertex: VertexState {
191                // Use our custom shader
192                shader: self.shader.clone(),
193                // Use our custom vertex buffer
194                buffers: vec![vertex_layout],
195                ..default()
196            },
197            fragment: Some(FragmentState {
198                // Use our custom shader
199                shader: self.shader.clone(),
200                targets: vec![Some(ColorTargetState {
201                    format,
202                    blend: Some(BlendState::ALPHA_BLENDING),
203                    write_mask: ColorWrites::ALL,
204                })],
205                ..default()
206            }),
207            // Use the two standard uniforms for 2d meshes
208            layout: vec![
209                // Bind group 0 is the view uniform
210                self.mesh2d_pipeline.view_layout.clone(),
211                // Bind group 1 is the mesh uniform
212                self.mesh2d_pipeline.mesh_layout.clone(),
213            ],
214            primitive: PrimitiveState {
215                cull_mode: Some(Face::Back),
216                topology: BaseMeshPipelineKey::from_bits_retain(key.bits()).primitive_topology(),
217                strip_index_format: BaseMeshPipelineKey::from_bits_retain(key.bits())
218                    .strip_index_format(),
219                ..default()
220            },
221            depth_stencil: Some(DepthStencilState {
222                format: CORE_2D_DEPTH_FORMAT,
223                depth_write_enabled: Some(false),
224                depth_compare: Some(CompareFunction::GreaterEqual),
225                stencil: StencilState {
226                    front: StencilFaceState::IGNORE,
227                    back: StencilFaceState::IGNORE,
228                    read_mask: 0,
229                    write_mask: 0,
230                },
231                bias: DepthBiasState {
232                    constant: 0,
233                    slope_scale: 0.0,
234                    clamp: 0.0,
235                },
236            }),
237            multisample: MultisampleState {
238                count: key.msaa_samples(),
239                mask: !0,
240                alpha_to_coverage_enabled: false,
241            },
242            label: Some("colored_mesh2d_pipeline".into()),
243            ..default()
244        }
245    }

Trait Implementations§

Source§

impl Binary for BaseMeshPipelineKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl BitAnd for BaseMeshPipelineKey

Source§

fn bitand(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

The bitwise and (&) of the bits in self and other.

Source§

type Output = BaseMeshPipelineKey

The resulting type after applying the & operator.
Source§

impl BitAndAssign for BaseMeshPipelineKey

Source§

fn bitand_assign(&mut self, other: BaseMeshPipelineKey)

The bitwise and (&) of the bits in self and other.

Source§

impl BitOr for BaseMeshPipelineKey

Source§

fn bitor(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

The bitwise or (|) of the bits in self and other.

Source§

type Output = BaseMeshPipelineKey

The resulting type after applying the | operator.
Source§

impl BitOrAssign for BaseMeshPipelineKey

Source§

fn bitor_assign(&mut self, other: BaseMeshPipelineKey)

The bitwise or (|) of the bits in self and other.

Source§

impl BitXor for BaseMeshPipelineKey

Source§

fn bitxor(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

The bitwise exclusive-or (^) of the bits in self and other.

Source§

type Output = BaseMeshPipelineKey

The resulting type after applying the ^ operator.
Source§

impl BitXorAssign for BaseMeshPipelineKey

Source§

fn bitxor_assign(&mut self, other: BaseMeshPipelineKey)

The bitwise exclusive-or (^) of the bits in self and other.

Source§

impl Clone for BaseMeshPipelineKey

Source§

fn clone(&self) -> BaseMeshPipelineKey

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BaseMeshPipelineKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Extend<BaseMeshPipelineKey> for BaseMeshPipelineKey

Source§

fn extend<T>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

Source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Flags for BaseMeshPipelineKey

Source§

const FLAGS: &'static [Flag<BaseMeshPipelineKey>]

The set of defined flags.
Source§

type Bits = u64

The underlying bits type.
Source§

fn bits(&self) -> u64

Get the underlying bits value. Read more
Source§

fn from_bits_retain(bits: u64) -> BaseMeshPipelineKey

Convert from a bits value exactly.
Source§

fn all_named() -> BaseMeshPipelineKey

Get a flags value with all bits from named flags set. Read more
Source§

fn empty() -> Self

Get a flags value with all bits unset.
Source§

fn all() -> Self

Get a flags value with all known bits set.
Source§

fn known_bits(&self) -> Self::Bits

Get the known bits from a flags value.
Source§

fn unknown_bits(&self) -> Self::Bits

Get the unknown bits from a flags value.
Source§

fn contains_unknown_bits(&self) -> bool

This method will return true if any unknown bits are set.
Source§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
Source§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
Source§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
Source§

fn iter(&self) -> Iter<Self> ⓘ

Yield a set of contained flags values. Read more
Source§

fn iter_names(&self) -> IterNames<Self> ⓘ

Yield a set of contained named flags values. Read more
Source§

fn iter_defined_names() -> IterDefinedNames<Self> ⓘ

Yield a set of all named flags defined by Self::FLAGS.
Source§

fn iter_equal_names(&self) -> IterEqualNames<Self> ⓘ

Get an iterator over all defined names for this flags value. Read more
Source§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
Source§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
Source§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in other are also set in self.
Source§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in other are also set in self.
Source§

fn truncate(&mut self)
where Self: Sized,

Remove any unknown bits from the flags.
Source§

fn insert(&mut self, other: Self)
where Self: Sized,

The bitwise or (|) of the bits in self and other.
Source§

fn remove(&mut self, other: Self)
where Self: Sized,

The intersection of self with the complement of other (&!). Read more
Source§

fn toggle(&mut self, other: Self)
where Self: Sized,

The bitwise exclusive-or (^) of the bits in self and other.
Source§

fn set(&mut self, other: Self, value: bool)
where Self: Sized,

Call Flags::insert when value is true or Flags::remove when value is false.
Source§

fn clear(&mut self)
where Self: Sized,

Unsets all bits in the flags.
Source§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in self and other.
Source§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in self and other.
Source§

fn difference(self, other: Self) -> Self

The intersection of self with the complement of other (&!). Read more
Source§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in self and other.
Source§

fn complement(self) -> Self

The bitwise negation (!) of the bits in self, truncating the result.
Source§

impl FromIterator<BaseMeshPipelineKey> for BaseMeshPipelineKey

Source§

fn from_iter<T>(iterator: T) -> BaseMeshPipelineKey

The bitwise or (|) of the bits in each flags value.

Source§

impl IntoIterator for BaseMeshPipelineKey

Source§

type Item = BaseMeshPipelineKey

The type of the elements being iterated over.
Source§

type IntoIter = Iter<BaseMeshPipelineKey>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> <BaseMeshPipelineKey as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
Source§

impl LowerHex for BaseMeshPipelineKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Not for BaseMeshPipelineKey

Source§

fn not(self) -> BaseMeshPipelineKey

The bitwise negation (!) of the bits in self, truncating the result.

Source§

type Output = BaseMeshPipelineKey

The resulting type after applying the ! operator.
Source§

impl Octal for BaseMeshPipelineKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Sub for BaseMeshPipelineKey

Source§

fn sub(self, other: BaseMeshPipelineKey) -> BaseMeshPipelineKey

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 = BaseMeshPipelineKey

The resulting type after applying the - operator.
Source§

impl SubAssign for BaseMeshPipelineKey

Source§

fn sub_assign(&mut self, other: BaseMeshPipelineKey)

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 UpperHex for BaseMeshPipelineKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

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> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

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>

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)

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)

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> Downcast for T
where T: Any,

Source§

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>

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)

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)

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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> HitDataExtra for T
where T: Send + Sync + Debug + Any + 'static,

Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

impl<T> PatchTemplate for T
where T: Template,

Source§

fn patch_template<F>(func: F) -> TemplatePatch<F, T>
where F: FnOnce(&mut T, &mut ResolveContext<'_>),

Takes a “patch function” func that patches this Template, and turns it into a TemplatePatch.
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Settings for T
where T: 'static + Send + Sync,

Source§

impl<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> Template for T
where T: Clone + Unpin,

Source§

type Output = T

The type of value produced by this Template.
Source§

fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>

Uses this template and the given entity context to produce a Template::Output.
Source§

fn clone_template(&self) -> T

Clones this template. See Clone.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

Source§

fn clone_type_data(&self) -> Box<dyn TypeData>

Creates a type-erased clone of self.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more