Skip to content

Commit 08edef5

Browse files
committed
merged RenderCommand and Draw
1 parent cab065b commit 08edef5

File tree

17 files changed

+383
-419
lines changed

17 files changed

+383
-419
lines changed

crates/bevy_core_pipeline/src/core_2d/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use bevy_render::{
2727
render_graph::{EmptyNode, RenderGraph, SlotInfo, SlotType},
2828
render_phase::{
2929
batch_phase_system, sort_phase_system, BatchedPhaseItem, CachedRenderPipelinePhaseItem,
30-
DrawFunctionId, DrawFunctions, PhaseItem, RenderPhase,
30+
PhaseItem, RenderCommandId, RenderCommands, RenderPhase,
3131
},
3232
render_resource::CachedRenderPipelineId,
3333
Extract, RenderApp, RenderStage,
@@ -50,7 +50,7 @@ impl Plugin for Core2dPlugin {
5050
};
5151

5252
render_app
53-
.init_resource::<DrawFunctions<Transparent2d>>()
53+
.init_resource::<RenderCommands<Transparent2d>>()
5454
.add_system_to_stage(RenderStage::Extract, extract_core_2d_camera_phases)
5555
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Transparent2d>)
5656
.add_system_to_stage(
@@ -107,7 +107,7 @@ pub struct Transparent2d {
107107
pub sort_key: FloatOrd,
108108
pub entity: Entity,
109109
pub pipeline: CachedRenderPipelineId,
110-
pub draw_function: DrawFunctionId,
110+
pub render_command: RenderCommandId,
111111
/// Range in the vertex buffer of this item
112112
pub batch_range: Option<Range<u32>>,
113113
}
@@ -126,8 +126,8 @@ impl PhaseItem for Transparent2d {
126126
}
127127

128128
#[inline]
129-
fn draw_function(&self) -> DrawFunctionId {
130-
self.draw_function
129+
fn render_command_id(&self) -> RenderCommandId {
130+
self.render_command
131131
}
132132

133133
#[inline]

crates/bevy_core_pipeline/src/core_3d/mod.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ use bevy_render::{
3030
prelude::Msaa,
3131
render_graph::{EmptyNode, RenderGraph, SlotInfo, SlotType},
3232
render_phase::{
33-
sort_phase_system, CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions, PhaseItem,
34-
RenderPhase,
33+
sort_phase_system, CachedRenderPipelinePhaseItem, PhaseItem, RenderCommandId,
34+
RenderCommands, RenderPhase,
3535
},
3636
render_resource::{
3737
CachedRenderPipelineId, Extent3d, TextureDescriptor, TextureDimension, TextureFormat,
@@ -64,9 +64,9 @@ impl Plugin for Core3dPlugin {
6464
};
6565

6666
render_app
67-
.init_resource::<DrawFunctions<Opaque3d>>()
68-
.init_resource::<DrawFunctions<AlphaMask3d>>()
69-
.init_resource::<DrawFunctions<Transparent3d>>()
67+
.init_resource::<RenderCommands<Opaque3d>>()
68+
.init_resource::<RenderCommands<AlphaMask3d>>()
69+
.init_resource::<RenderCommands<Transparent3d>>()
7070
.add_system_to_stage(RenderStage::Extract, extract_core_3d_camera_phases)
7171
.add_system_to_stage(RenderStage::Prepare, prepare_core_3d_depth_textures)
7272
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Opaque3d>)
@@ -132,7 +132,7 @@ pub struct Opaque3d {
132132
pub distance: f32,
133133
pub pipeline: CachedRenderPipelineId,
134134
pub entity: Entity,
135-
pub draw_function: DrawFunctionId,
135+
pub render_command_id: RenderCommandId,
136136
}
137137

138138
impl PhaseItem for Opaque3d {
@@ -150,8 +150,8 @@ impl PhaseItem for Opaque3d {
150150
}
151151

152152
#[inline]
153-
fn draw_function(&self) -> DrawFunctionId {
154-
self.draw_function
153+
fn render_command_id(&self) -> RenderCommandId {
154+
self.render_command_id
155155
}
156156

157157
#[inline]
@@ -172,7 +172,7 @@ pub struct AlphaMask3d {
172172
pub distance: f32,
173173
pub pipeline: CachedRenderPipelineId,
174174
pub entity: Entity,
175-
pub draw_function: DrawFunctionId,
175+
pub render_command_id: RenderCommandId,
176176
}
177177

178178
impl PhaseItem for AlphaMask3d {
@@ -190,8 +190,8 @@ impl PhaseItem for AlphaMask3d {
190190
}
191191

192192
#[inline]
193-
fn draw_function(&self) -> DrawFunctionId {
194-
self.draw_function
193+
fn render_command_id(&self) -> RenderCommandId {
194+
self.render_command_id
195195
}
196196

197197
#[inline]
@@ -212,7 +212,7 @@ pub struct Transparent3d {
212212
pub distance: f32,
213213
pub pipeline: CachedRenderPipelineId,
214214
pub entity: Entity,
215-
pub draw_function: DrawFunctionId,
215+
pub render_command_id: RenderCommandId,
216216
}
217217

218218
impl PhaseItem for Transparent3d {
@@ -230,8 +230,8 @@ impl PhaseItem for Transparent3d {
230230
}
231231

232232
#[inline]
233-
fn draw_function(&self) -> DrawFunctionId {
234-
self.draw_function
233+
fn render_command_id(&self) -> RenderCommandId {
234+
self.render_command_id
235235
}
236236

237237
#[inline]

crates/bevy_core_pipeline/src/prepass/mod.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ pub mod node;
2828

2929
use bevy_ecs::prelude::*;
3030
use bevy_reflect::Reflect;
31+
use bevy_render::render_phase::RenderCommandId;
3132
use bevy_render::{
32-
render_phase::{CachedRenderPipelinePhaseItem, DrawFunctionId, PhaseItem},
33+
render_phase::{CachedRenderPipelinePhaseItem, PhaseItem},
3334
render_resource::{CachedRenderPipelineId, Extent3d, TextureFormat},
3435
texture::CachedTexture,
3536
};
@@ -71,7 +72,7 @@ pub struct Opaque3dPrepass {
7172
pub distance: f32,
7273
pub entity: Entity,
7374
pub pipeline_id: CachedRenderPipelineId,
74-
pub draw_function: DrawFunctionId,
75+
pub render_command_id: RenderCommandId,
7576
}
7677

7778
impl PhaseItem for Opaque3dPrepass {
@@ -87,8 +88,8 @@ impl PhaseItem for Opaque3dPrepass {
8788
}
8889

8990
#[inline]
90-
fn draw_function(&self) -> DrawFunctionId {
91-
self.draw_function
91+
fn render_command_id(&self) -> RenderCommandId {
92+
self.render_command_id
9293
}
9394

9495
#[inline]
@@ -113,7 +114,7 @@ pub struct AlphaMask3dPrepass {
113114
pub distance: f32,
114115
pub entity: Entity,
115116
pub pipeline_id: CachedRenderPipelineId,
116-
pub draw_function: DrawFunctionId,
117+
pub render_command_id: RenderCommandId,
117118
}
118119

119120
impl PhaseItem for AlphaMask3dPrepass {
@@ -129,8 +130,8 @@ impl PhaseItem for AlphaMask3dPrepass {
129130
}
130131

131132
#[inline]
132-
fn draw_function(&self) -> DrawFunctionId {
133-
self.draw_function
133+
fn render_command_id(&self) -> RenderCommandId {
134+
self.render_command_id
134135
}
135136

136137
#[inline]

crates/bevy_pbr/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ use bevy_render::{
4949
extract_resource::ExtractResourcePlugin,
5050
prelude::Color,
5151
render_graph::RenderGraph,
52-
render_phase::{sort_phase_system, AddRenderCommand, DrawFunctions},
52+
render_phase::{sort_phase_system, AddRenderCommand, RenderCommands},
5353
render_resource::{Shader, SpecializedMeshPipelines},
5454
view::VisibilitySystems,
5555
RenderApp, RenderStage,
@@ -268,7 +268,7 @@ impl Plugin for PbrPlugin {
268268
.add_system_to_stage(RenderStage::Queue, render::queue_shadow_view_bind_group)
269269
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Shadow>)
270270
.init_resource::<ShadowPipeline>()
271-
.init_resource::<DrawFunctions<Shadow>>()
271+
.init_resource::<RenderCommands<Shadow>>()
272272
.init_resource::<LightMeta>()
273273
.init_resource::<GlobalLightMeta>()
274274
.init_resource::<SpecializedMeshPipelines<ShadowPipeline>>();

crates/bevy_pbr/src/material.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use bevy_render::{
2626
prelude::Image,
2727
render_asset::{PrepareAssetLabel, RenderAssets},
2828
render_phase::{
29-
AddRenderCommand, DrawFunctions, PhaseItem, RenderCommand, RenderCommandResult,
29+
AddRenderCommand, PhaseItem, RenderCommand, RenderCommandResult, RenderCommands,
3030
RenderPhase, SetItemPipeline, TrackedRenderPass,
3131
},
3232
render_resource::{
@@ -357,9 +357,9 @@ impl<P: PhaseItem, M: Material, const I: usize> RenderCommand<P> for SetMaterial
357357

358358
#[allow(clippy::too_many_arguments)]
359359
pub fn queue_material_meshes<M: Material>(
360-
opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
361-
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3d>>,
362-
transparent_draw_functions: Res<DrawFunctions<Transparent3d>>,
360+
opaque_render_commands: Res<RenderCommands<Opaque3d>>,
361+
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3d>>,
362+
transparent_render_commands: Res<RenderCommands<Transparent3d>>,
363363
material_pipeline: Res<MaterialPipeline<M>>,
364364
mut pipelines: ResMut<SpecializedMeshPipelines<MaterialPipeline<M>>>,
365365
pipeline_cache: Res<PipelineCache>,
@@ -387,9 +387,9 @@ pub fn queue_material_meshes<M: Material>(
387387
mut transparent_phase,
388388
) in &mut views
389389
{
390-
let draw_opaque_pbr = opaque_draw_functions.read().id::<DrawMaterial<M>>();
391-
let draw_alpha_mask_pbr = alpha_mask_draw_functions.read().id::<DrawMaterial<M>>();
392-
let draw_transparent_pbr = transparent_draw_functions.read().id::<DrawMaterial<M>>();
390+
let draw_opaque_pbr = opaque_render_commands.id::<DrawMaterial<M>>();
391+
let draw_alpha_mask_pbr = alpha_mask_render_commands.id::<DrawMaterial<M>>();
392+
let draw_transparent_pbr = transparent_render_commands.id::<DrawMaterial<M>>();
393393

394394
let mut view_key =
395395
MeshPipelineKey::from_msaa_samples(msaa.samples) | MeshPipelineKey::from_hdr(view.hdr);
@@ -442,23 +442,23 @@ pub fn queue_material_meshes<M: Material>(
442442
AlphaMode::Opaque => {
443443
opaque_phase.add(Opaque3d {
444444
entity: *visible_entity,
445-
draw_function: draw_opaque_pbr,
445+
render_command_id: draw_opaque_pbr,
446446
pipeline: pipeline_id,
447447
distance,
448448
});
449449
}
450450
AlphaMode::Mask(_) => {
451451
alpha_mask_phase.add(AlphaMask3d {
452452
entity: *visible_entity,
453-
draw_function: draw_alpha_mask_pbr,
453+
render_command_id: draw_alpha_mask_pbr,
454454
pipeline: pipeline_id,
455455
distance,
456456
});
457457
}
458458
AlphaMode::Blend => {
459459
transparent_phase.add(Transparent3d {
460460
entity: *visible_entity,
461-
draw_function: draw_transparent_pbr,
461+
render_command_id: draw_transparent_pbr,
462462
pipeline: pipeline_id,
463463
distance,
464464
});

crates/bevy_pbr/src/prepass/mod.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ use bevy_render::{
2323
prelude::{Camera, Mesh},
2424
render_asset::RenderAssets,
2525
render_phase::{
26-
sort_phase_system, AddRenderCommand, DrawFunctions, PhaseItem, RenderCommand,
27-
RenderCommandResult, RenderPhase, SetItemPipeline, TrackedRenderPass,
26+
sort_phase_system, AddRenderCommand, PhaseItem, RenderCommand, RenderCommandResult,
27+
RenderCommands, RenderPhase, SetItemPipeline, TrackedRenderPass,
2828
},
2929
render_resource::{
3030
BindGroup, BindGroupDescriptor, BindGroupEntry, BindGroupLayout, BindGroupLayoutDescriptor,
@@ -99,8 +99,8 @@ where
9999
sort_phase_system::<AlphaMask3dPrepass>,
100100
)
101101
.init_resource::<PrepassPipeline<M>>()
102-
.init_resource::<DrawFunctions<Opaque3dPrepass>>()
103-
.init_resource::<DrawFunctions<AlphaMask3dPrepass>>()
102+
.init_resource::<RenderCommands<Opaque3dPrepass>>()
103+
.init_resource::<RenderCommands<AlphaMask3dPrepass>>()
104104
.init_resource::<PrepassViewBindGroup>()
105105
.init_resource::<SpecializedMeshPipelines<PrepassPipeline<M>>>()
106106
.add_render_command::<Opaque3dPrepass, DrawPrepass<M>>()
@@ -462,8 +462,8 @@ pub fn queue_prepass_view_bind_group<M: Material>(
462462

463463
#[allow(clippy::too_many_arguments)]
464464
pub fn queue_prepass_material_meshes<M: Material>(
465-
opaque_draw_functions: Res<DrawFunctions<Opaque3dPrepass>>,
466-
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3dPrepass>>,
465+
opaque_render_commands: Res<RenderCommands<Opaque3dPrepass>>,
466+
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3dPrepass>>,
467467
prepass_pipeline: Res<PrepassPipeline<M>>,
468468
mut pipelines: ResMut<SpecializedMeshPipelines<PrepassPipeline<M>>>,
469469
pipeline_cache: Res<PipelineCache>,
@@ -482,14 +482,9 @@ pub fn queue_prepass_material_meshes<M: Material>(
482482
) where
483483
M::Data: PartialEq + Eq + Hash + Clone,
484484
{
485-
let opaque_draw_prepass = opaque_draw_functions
486-
.read()
487-
.get_id::<DrawPrepass<M>>()
488-
.unwrap();
489-
let alpha_mask_draw_prepass = alpha_mask_draw_functions
490-
.read()
491-
.get_id::<DrawPrepass<M>>()
492-
.unwrap();
485+
let opaque_draw_prepass = opaque_render_commands.id::<DrawPrepass<M>>();
486+
let alpha_mask_draw_prepass = alpha_mask_render_commands.id::<DrawPrepass<M>>();
487+
493488
for (
494489
view,
495490
visible_entities,
@@ -553,15 +548,15 @@ pub fn queue_prepass_material_meshes<M: Material>(
553548
AlphaMode::Opaque => {
554549
opaque_phase.add(Opaque3dPrepass {
555550
entity: *visible_entity,
556-
draw_function: opaque_draw_prepass,
551+
render_command_id: opaque_draw_prepass,
557552
pipeline_id,
558553
distance,
559554
});
560555
}
561556
AlphaMode::Mask(_) => {
562557
alpha_mask_phase.add(AlphaMask3dPrepass {
563558
entity: *visible_entity,
564-
draw_function: alpha_mask_draw_prepass,
559+
render_command_id: alpha_mask_draw_prepass,
565560
pipeline_id,
566561
distance,
567562
});

crates/bevy_pbr/src/render/light.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ use bevy_render::{
1818
render_asset::RenderAssets,
1919
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
2020
render_phase::{
21-
CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions, PhaseItem, RenderCommand,
22-
RenderCommandResult, RenderPhase, SetItemPipeline, TrackedRenderPass,
21+
CachedRenderPipelinePhaseItem, PhaseItem, RenderCommand, RenderCommandId,
22+
RenderCommandResult, RenderCommands, RenderPhase, SetItemPipeline, TrackedRenderPass,
2323
},
2424
render_resource::*,
2525
renderer::{RenderContext, RenderDevice, RenderQueue},
@@ -1621,7 +1621,7 @@ pub fn queue_shadow_view_bind_group(
16211621

16221622
#[allow(clippy::too_many_arguments)]
16231623
pub fn queue_shadows(
1624-
shadow_draw_functions: Res<DrawFunctions<Shadow>>,
1624+
shadow_render_commands: Res<RenderCommands<Shadow>>,
16251625
shadow_pipeline: Res<ShadowPipeline>,
16261626
casting_meshes: Query<&Handle<Mesh>, Without<NotShadowCaster>>,
16271627
render_meshes: Res<RenderAssets<Mesh>>,
@@ -1634,7 +1634,7 @@ pub fn queue_shadows(
16341634
spot_light_entities: Query<&VisibleEntities, With<ExtractedPointLight>>,
16351635
) {
16361636
for view_lights in &view_lights {
1637-
let draw_shadow_mesh = shadow_draw_functions.read().id::<DrawShadowMesh>();
1637+
let draw_shadow_mesh = shadow_render_commands.id::<DrawShadowMesh>();
16381638
for view_light_entity in view_lights.lights.iter().copied() {
16391639
let (light_entity, mut shadow_phase) =
16401640
view_light_shadow_phases.get_mut(view_light_entity).unwrap();
@@ -1676,7 +1676,7 @@ pub fn queue_shadows(
16761676
};
16771677

16781678
shadow_phase.add(Shadow {
1679-
draw_function: draw_shadow_mesh,
1679+
render_command: draw_shadow_mesh,
16801680
pipeline: pipeline_id,
16811681
entity,
16821682
distance: 0.0, // TODO: sort back-to-front
@@ -1692,7 +1692,7 @@ pub struct Shadow {
16921692
pub distance: f32,
16931693
pub entity: Entity,
16941694
pub pipeline: CachedRenderPipelineId,
1695-
pub draw_function: DrawFunctionId,
1695+
pub render_command: RenderCommandId,
16961696
}
16971697

16981698
impl PhaseItem for Shadow {
@@ -1709,8 +1709,8 @@ impl PhaseItem for Shadow {
17091709
}
17101710

17111711
#[inline]
1712-
fn draw_function(&self) -> DrawFunctionId {
1713-
self.draw_function
1712+
fn render_command_id(&self) -> RenderCommandId {
1713+
self.render_command
17141714
}
17151715

17161716
#[inline]

0 commit comments

Comments
 (0)