Module bevy_render::render_phase
source · Expand description
The modular rendering abstraction responsible for queuing, preparing, sorting and drawing entities as part of separate render phases.
In Bevy each view (camera, or shadow-casting light, etc.) has one or multiple RenderPhase
s
(e.g. opaque, transparent, shadow, etc).
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).
To draw an entity, a corresponding PhaseItem
has to be added to one or multiple of these
render phases for each view that it is visible in.
This must be done in the RenderSet::Queue
.
After that the render phase sorts them in the
RenderSet::PhaseSort
.
Finally the items are rendered using a single TrackedRenderPass
, during the
RenderSet::Render
.
Therefore each phase item is assigned a Draw
function.
These set up the state of the TrackedRenderPass
(i.e. select the
RenderPipeline
, configure the
BindGroup
s, etc.) and then issue a draw call,
for the corresponding item.
The Draw
function trait can either be implemented directly or such a function can be
created by composing multiple RenderCommand
s.
Structs
- An identifier for a
Draw
function stored inDrawFunctions
. - Stores all draw functions for the
PhaseItem
type hidden behind a reader-writer lock. - Wraps a
RenderCommand
into a state so that it can be used as aDraw
function. - A collection of all rendering instructions, that will be executed by the GPU, for a single render phase for a single view.
- A
RenderCommand
that sets the pipeline for theCachedRenderPipelinePhaseItem
. - A
RenderPass
, which tracks the current pipeline state to skip redundant operations. - A distance calculator for the draw order of
PhaseItem
s.
Enums
- The result of a
RenderCommand
.
Traits
- Registers a
RenderCommand
as aDraw
function. They are stored inside theDrawFunctions
resource of the app. - A
PhaseItem
item, that automatically sets the appropriate render pipeline, cached in thePipelineCache
. - A draw function used to draw
PhaseItem
s. - An item (entity of the render world) which will be drawn to a texture or the screen, as part of a
RenderPhase
. RenderCommand
s are modular standardized pieces of render logic that can be composed intoDraw
functions.
Functions
- This system sorts the
PhaseItem
s of allRenderPhase
s of this type.