Struct bevy::render::render_phase::SortedRenderPhase
source · pub struct SortedRenderPhase<I>where
I: SortedPhaseItem,{
pub items: Vec<I>,
}Expand description
A collection of all items to be rendered that will be encoded to GPU commands 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 only for meshes that need to be sorted
back-to-front, such as transparent meshes. For items that don’t need strict
sorting, BinnedRenderPhase is preferred, for performance.
Fields§
§items: Vec<I>The items within this SortedRenderPhase.
Implementations§
source§impl<I> SortedRenderPhase<I>where
I: SortedPhaseItem,
impl<I> SortedRenderPhase<I>where
I: SortedPhaseItem,
sourcepub fn iter_entities(&self) -> impl Iterator<Item = Entity>
pub fn iter_entities(&self) -> impl Iterator<Item = Entity>
sourcepub fn render<'w>(
&self,
render_pass: &mut TrackedRenderPass<'w>,
world: &'w World,
view: Entity
)
pub fn render<'w>( &self, render_pass: &mut TrackedRenderPass<'w>, world: &'w World, view: Entity )
Renders all of its PhaseItems using their corresponding draw functions.
sourcepub fn render_range<'w>(
&self,
render_pass: &mut TrackedRenderPass<'w>,
world: &'w World,
view: Entity,
range: impl SliceIndex<[I], Output = [I]>
)
pub fn render_range<'w>( &self, render_pass: &mut TrackedRenderPass<'w>, world: &'w World, view: Entity, range: impl SliceIndex<[I], Output = [I]> )
Renders all PhaseItems in the provided range (based on their index in self.items) using their corresponding draw functions.
Trait Implementations§
source§impl<I> Default for SortedRenderPhase<I>where
I: SortedPhaseItem,
impl<I> Default for SortedRenderPhase<I>where
I: SortedPhaseItem,
source§fn default() -> SortedRenderPhase<I>
fn default() -> SortedRenderPhase<I>
Auto Trait Implementations§
impl<I> Freeze for SortedRenderPhase<I>
impl<I> RefUnwindSafe for SortedRenderPhase<I>where
I: RefUnwindSafe,
impl<I> Send for SortedRenderPhase<I>
impl<I> Sync for SortedRenderPhase<I>
impl<I> Unpin for SortedRenderPhase<I>where
I: Unpin,
impl<I> UnwindSafe for SortedRenderPhase<I>where
I: UnwindSafe,
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
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> DowncastSync for T
impl<T> DowncastSync for T
source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given World.