Struct bevy_render::render_phase::BinnedRenderPhase

source ·
pub struct BinnedRenderPhase<BPI>
where BPI: BinnedPhaseItem,
{ pub batchable_mesh_keys: Vec<BPI::BinKey>, pub unbatchable_mesh_keys: Vec<BPI::BinKey>, pub non_mesh_items: Vec<(BPI::BinKey, Entity)>, /* private fields */ }
Expand description

A collection of all rendering instructions, that will be executed by the GPU, for a single render phase for a single view.

Each view (camera, or shadow-casting light, etc.) can have one or multiple render phases. They are used to queue entities for rendering. Multiple phases might be required due to different sorting/batching behaviors (e.g. opaque: front to back, transparent: back to front) or because one phase depends on the rendered texture of the previous phase (e.g. for screen-space reflections). All PhaseItems are then rendered using a single TrackedRenderPass. The render pass might be reused for multiple phases to reduce GPU overhead.

This flavor of render phase is used for phases in which the ordering is less critical: for example, Opaque3d. It’s generally faster than the alternative SortedRenderPhase.

Fields§

§batchable_mesh_keys: Vec<BPI::BinKey>

A list of BinKeys for batchable items.

These are accumulated in queue_material_meshes and then sorted in batch_and_prepare_binned_render_phase.

§unbatchable_mesh_keys: Vec<BPI::BinKey>

A list of BinKeys for unbatchable items.

These are accumulated in queue_material_meshes and then sorted in batch_and_prepare_binned_render_phase.

§non_mesh_items: Vec<(BPI::BinKey, Entity)>

Items in the bin that aren’t meshes at all.

Bevy itself doesn’t place anything in this list, but plugins or your app can in order to execute custom drawing commands. Draw functions for each entity are simply called in order at rendering time.

See the custom_phase_item example for an example of how to use this.

Implementations§

source§

impl<BPI> BinnedRenderPhase<BPI>
where BPI: BinnedPhaseItem,

source

pub fn add( &mut self, key: BPI::BinKey, entity: Entity, phase_type: BinnedRenderPhaseType, )

Bins a new entity.

The phase_type parameter specifies whether the entity is a preprocessable mesh and whether it can be binned with meshes of the same type.

source

pub fn render<'w>( &self, render_pass: &mut TrackedRenderPass<'w>, world: &'w World, view: Entity, )

Encodes the GPU commands needed to render all entities in this phase.

source

pub fn is_empty(&self) -> bool

source

pub fn clear(&mut self)

Trait Implementations§

source§

impl<BPI> Default for BinnedRenderPhase<BPI>
where BPI: BinnedPhaseItem,

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<BPI> Freeze for BinnedRenderPhase<BPI>

§

impl<BPI> RefUnwindSafe for BinnedRenderPhase<BPI>

§

impl<BPI> Send for BinnedRenderPhase<BPI>

§

impl<BPI> Sync for BinnedRenderPhase<BPI>

§

impl<BPI> Unpin for BinnedRenderPhase<BPI>
where <BPI as BinnedPhaseItem>::BinKey: Unpin,

§

impl<BPI> UnwindSafe for BinnedRenderPhase<BPI>

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<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

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

source§

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

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<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromWorld for T
where T: Default,

source§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given World.
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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

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

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

source§

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

source§

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

source§

impl<T> WasmNotSendSync for T

source§

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