Module 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 render phases (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 BindGroups, 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 RenderCommands.

Structs§

BinnedRenderPhase
A collection of all rendering instructions, that will be executed by the GPU, for a single render phase for a single view.
BinnedRenderPhaseBatch
Information about a single batch of entities rendered using binned phase items.
BinnedRenderPhasePlugin
A convenient abstraction for adding all the systems necessary for a binned render phase to the render app.
DrawFunctionId
An identifier for a Draw function stored in DrawFunctions.
DrawFunctions
Stores all draw functions for the PhaseItem type hidden behind a reader-writer lock.
DrawFunctionsInternal
Stores all Draw functions for the PhaseItem type.
PhaseItemExtraIndex
The “extra index” associated with some PhaseItems, alongside the indirect instance index.
RenderCommandState
Wraps a RenderCommand into a state so that it can be used as a Draw function.
SetItemPipeline
A RenderCommand that sets the pipeline for the CachedRenderPipelinePhaseItem.
SortedRenderPhase
A collection of all items to be rendered that will be encoded to GPU commands for a single render phase for a single view.
SortedRenderPhasePlugin
A convenient abstraction for adding all the systems necessary for a sorted render phase to the render app.
TrackedRenderPass
A RenderPass, which tracks the current pipeline state to skip redundant operations.
UnbatchableBinnedEntities
Information about the unbatchable entities in a bin.
ViewBinnedRenderPhases
Stores the rendering instructions for a single phase that uses bins in all views.
ViewRangefinder3d
A distance calculator for the draw order of PhaseItems.
ViewSortedRenderPhases
Stores the rendering instructions for a single phase that sorts items in all views.

Enums§

BinnedRenderPhaseType
Identifies the list within BinnedRenderPhase that a phase item is to be placed in.
DrawError
RenderCommandResult
The result of a RenderCommand.

Traits§

AddRenderCommand
Registers a RenderCommand as a Draw function. They are stored inside the DrawFunctions resource of the app.
BinnedPhaseItem
Represents phase items that are placed into bins. The BinKey specifies which bin they’re to be placed in. Bin keys are sorted, and items within the same bin are eligible to be batched together. The elements within the bins aren’t themselves sorted.
CachedRenderPipelinePhaseItem
A PhaseItem item, that automatically sets the appropriate render pipeline, cached in the PipelineCache.
Draw
A draw function used to draw PhaseItems.
PhaseItem
An item (entity of the render world) which will be drawn to a texture or the screen, as part of a render phase.
RenderCommand
RenderCommands are modular standardized pieces of render logic that can be composed into Draw functions.
SortedPhaseItem
Represents phase items that must be sorted. The SortKey specifies the order that these items are drawn in. These are placed into a single array, and the array as a whole is then sorted.

Functions§

sort_phase_system
This system sorts the PhaseItems of all SortedRenderPhases of this type.