Skip to content

Commit bc66cac

Browse files
committed
merged RenderCommand and Draw
1 parent 4fd092f commit bc66cac

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, ExtractSchedule, RenderApp, RenderSet,
@@ -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_schedule(ExtractSchedule, extract_core_2d_camera_phases)
5555
.add_system(sort_phase_system::<Transparent2d>.in_set(RenderSet::PhaseSort))
5656
.add_system(
@@ -108,7 +108,7 @@ pub struct Transparent2d {
108108
pub sort_key: FloatOrd,
109109
pub entity: Entity,
110110
pub pipeline: CachedRenderPipelineId,
111-
pub draw_function: DrawFunctionId,
111+
pub render_command: RenderCommandId,
112112
/// Range in the vertex buffer of this item
113113
pub batch_range: Option<Range<u32>>,
114114
}
@@ -127,8 +127,8 @@ impl PhaseItem for Transparent2d {
127127
}
128128

129129
#[inline]
130-
fn draw_function(&self) -> DrawFunctionId {
131-
self.draw_function
130+
fn render_command_id(&self) -> RenderCommandId {
131+
self.render_command
132132
}
133133

134134
#[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_schedule(ExtractSchedule, extract_core_3d_camera_phases)
7171
.add_system(prepare_core_3d_depth_textures.in_set(RenderSet::Prepare))
7272
.add_system(sort_phase_system::<Opaque3d>.in_set(RenderSet::PhaseSort))
@@ -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
@@ -51,7 +51,7 @@ use bevy_render::{
5151
extract_resource::ExtractResourcePlugin,
5252
prelude::Color,
5353
render_graph::RenderGraph,
54-
render_phase::{sort_phase_system, AddRenderCommand, DrawFunctions},
54+
render_phase::{sort_phase_system, AddRenderCommand, RenderCommands},
5555
render_resource::{Shader, SpecializedMeshPipelines},
5656
view::{ViewSet, VisibilitySystems},
5757
ExtractSchedule, RenderApp, RenderSet,
@@ -288,7 +288,7 @@ impl Plugin for PbrPlugin {
288288
.add_system(render::queue_shadow_view_bind_group.in_set(RenderSet::Queue))
289289
.add_system(sort_phase_system::<Shadow>.in_set(RenderSet::PhaseSort))
290290
.init_resource::<ShadowPipeline>()
291-
.init_resource::<DrawFunctions<Shadow>>()
291+
.init_resource::<RenderCommands<Shadow>>()
292292
.init_resource::<LightMeta>()
293293
.init_resource::<GlobalLightMeta>()
294294
.init_resource::<SpecializedMeshPipelines<ShadowPipeline>>();

crates/bevy_pbr/src/material.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use bevy_render::{
2323
prelude::Image,
2424
render_asset::{PrepareAssetLabel, RenderAssets},
2525
render_phase::{
26-
AddRenderCommand, DrawFunctions, PhaseItem, RenderCommand, RenderCommandResult,
26+
AddRenderCommand, PhaseItem, RenderCommand, RenderCommandResult, RenderCommands,
2727
RenderPhase, SetItemPipeline, TrackedRenderPass,
2828
},
2929
render_resource::{
@@ -355,9 +355,9 @@ impl<P: PhaseItem, M: Material, const I: usize> RenderCommand<P> for SetMaterial
355355

356356
#[allow(clippy::too_many_arguments)]
357357
pub fn queue_material_meshes<M: Material>(
358-
opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
359-
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3d>>,
360-
transparent_draw_functions: Res<DrawFunctions<Transparent3d>>,
358+
opaque_render_commands: Res<RenderCommands<Opaque3d>>,
359+
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3d>>,
360+
transparent_render_commands: Res<RenderCommands<Transparent3d>>,
361361
material_pipeline: Res<MaterialPipeline<M>>,
362362
mut pipelines: ResMut<SpecializedMeshPipelines<MaterialPipeline<M>>>,
363363
pipeline_cache: Res<PipelineCache>,
@@ -385,9 +385,9 @@ pub fn queue_material_meshes<M: Material>(
385385
mut transparent_phase,
386386
) in &mut views
387387
{
388-
let draw_opaque_pbr = opaque_draw_functions.read().id::<DrawMaterial<M>>();
389-
let draw_alpha_mask_pbr = alpha_mask_draw_functions.read().id::<DrawMaterial<M>>();
390-
let draw_transparent_pbr = transparent_draw_functions.read().id::<DrawMaterial<M>>();
388+
let draw_opaque_pbr = opaque_render_commands.id::<DrawMaterial<M>>();
389+
let draw_alpha_mask_pbr = alpha_mask_render_commands.id::<DrawMaterial<M>>();
390+
let draw_transparent_pbr = transparent_render_commands.id::<DrawMaterial<M>>();
391391

392392
let mut view_key = MeshPipelineKey::from_msaa_samples(msaa.samples())
393393
| MeshPipelineKey::from_hdr(view.hdr);
@@ -446,15 +446,15 @@ pub fn queue_material_meshes<M: Material>(
446446
AlphaMode::Opaque => {
447447
opaque_phase.add(Opaque3d {
448448
entity: *visible_entity,
449-
draw_function: draw_opaque_pbr,
449+
render_command_id: draw_opaque_pbr,
450450
pipeline: pipeline_id,
451451
distance,
452452
});
453453
}
454454
AlphaMode::Mask(_) => {
455455
alpha_mask_phase.add(AlphaMask3d {
456456
entity: *visible_entity,
457-
draw_function: draw_alpha_mask_pbr,
457+
render_command_id: draw_alpha_mask_pbr,
458458
pipeline: pipeline_id,
459459
distance,
460460
});
@@ -465,7 +465,7 @@ pub fn queue_material_meshes<M: Material>(
465465
| AlphaMode::Multiply => {
466466
transparent_phase.add(Transparent3d {
467467
entity: *visible_entity,
468-
draw_function: draw_transparent_pbr,
468+
render_command_id: draw_transparent_pbr,
469469
pipeline: pipeline_id,
470470
distance,
471471
});

crates/bevy_pbr/src/prepass/mod.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ use bevy_render::{
2121
prelude::{Camera, Mesh},
2222
render_asset::RenderAssets,
2323
render_phase::{
24-
sort_phase_system, AddRenderCommand, DrawFunctions, PhaseItem, RenderCommand,
25-
RenderCommandResult, RenderPhase, SetItemPipeline, TrackedRenderPass,
24+
sort_phase_system, AddRenderCommand, PhaseItem, RenderCommand, RenderCommandResult,
25+
RenderCommands, RenderPhase, SetItemPipeline, TrackedRenderPass,
2626
},
2727
render_resource::{
2828
BindGroup, BindGroupDescriptor, BindGroupEntry, BindGroupLayout, BindGroupLayoutDescriptor,
@@ -104,8 +104,8 @@ where
104104
.add_system(sort_phase_system::<Opaque3dPrepass>.in_set(RenderSet::PhaseSort))
105105
.add_system(sort_phase_system::<AlphaMask3dPrepass>.in_set(RenderSet::PhaseSort))
106106
.init_resource::<PrepassPipeline<M>>()
107-
.init_resource::<DrawFunctions<Opaque3dPrepass>>()
108-
.init_resource::<DrawFunctions<AlphaMask3dPrepass>>()
107+
.init_resource::<RenderCommands<Opaque3dPrepass>>()
108+
.init_resource::<RenderCommands<AlphaMask3dPrepass>>()
109109
.init_resource::<PrepassViewBindGroup>()
110110
.init_resource::<SpecializedMeshPipelines<PrepassPipeline<M>>>()
111111
.add_render_command::<Opaque3dPrepass, DrawPrepass<M>>()
@@ -473,8 +473,8 @@ pub fn queue_prepass_view_bind_group<M: Material>(
473473

474474
#[allow(clippy::too_many_arguments)]
475475
pub fn queue_prepass_material_meshes<M: Material>(
476-
opaque_draw_functions: Res<DrawFunctions<Opaque3dPrepass>>,
477-
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3dPrepass>>,
476+
opaque_render_commands: Res<RenderCommands<Opaque3dPrepass>>,
477+
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3dPrepass>>,
478478
prepass_pipeline: Res<PrepassPipeline<M>>,
479479
mut pipelines: ResMut<SpecializedMeshPipelines<PrepassPipeline<M>>>,
480480
pipeline_cache: Res<PipelineCache>,
@@ -493,14 +493,9 @@ pub fn queue_prepass_material_meshes<M: Material>(
493493
) where
494494
M::Data: PartialEq + Eq + Hash + Clone,
495495
{
496-
let opaque_draw_prepass = opaque_draw_functions
497-
.read()
498-
.get_id::<DrawPrepass<M>>()
499-
.unwrap();
500-
let alpha_mask_draw_prepass = alpha_mask_draw_functions
501-
.read()
502-
.get_id::<DrawPrepass<M>>()
503-
.unwrap();
496+
let opaque_draw_prepass = opaque_render_commands.id::<DrawPrepass<M>>();
497+
let alpha_mask_draw_prepass = alpha_mask_render_commands.id::<DrawPrepass<M>>();
498+
504499
for (
505500
view,
506501
visible_entities,
@@ -567,15 +562,15 @@ pub fn queue_prepass_material_meshes<M: Material>(
567562
AlphaMode::Opaque => {
568563
opaque_phase.add(Opaque3dPrepass {
569564
entity: *visible_entity,
570-
draw_function: opaque_draw_prepass,
565+
render_command_id: opaque_draw_prepass,
571566
pipeline_id,
572567
distance,
573568
});
574569
}
575570
AlphaMode::Mask(_) => {
576571
alpha_mask_phase.add(AlphaMask3dPrepass {
577572
entity: *visible_entity,
578-
draw_function: alpha_mask_draw_prepass,
573+
render_command_id: alpha_mask_draw_prepass,
579574
pipeline_id,
580575
distance,
581576
});

crates/bevy_pbr/src/render/light.rs

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

16951695
#[allow(clippy::too_many_arguments)]
16961696
pub fn queue_shadows(
1697-
shadow_draw_functions: Res<DrawFunctions<Shadow>>,
1697+
shadow_render_commands: Res<RenderCommands<Shadow>>,
16981698
shadow_pipeline: Res<ShadowPipeline>,
16991699
casting_meshes: Query<&Handle<Mesh>, Without<NotShadowCaster>>,
17001700
render_meshes: Res<RenderAssets<Mesh>>,
@@ -1707,7 +1707,7 @@ pub fn queue_shadows(
17071707
spot_light_entities: Query<&VisibleEntities, With<ExtractedPointLight>>,
17081708
) {
17091709
for (entity, view_lights) in &view_lights {
1710-
let draw_shadow_mesh = shadow_draw_functions.read().id::<DrawShadowMesh>();
1710+
let draw_shadow_mesh = shadow_render_commands.id::<DrawShadowMesh>();
17111711
for view_light_entity in view_lights.lights.iter().copied() {
17121712
let (light_entity, mut shadow_phase) =
17131713
view_light_shadow_phases.get_mut(view_light_entity).unwrap();
@@ -1761,7 +1761,7 @@ pub fn queue_shadows(
17611761
};
17621762

17631763
shadow_phase.add(Shadow {
1764-
draw_function: draw_shadow_mesh,
1764+
render_command: draw_shadow_mesh,
17651765
pipeline: pipeline_id,
17661766
entity,
17671767
distance: 0.0, // TODO: sort back-to-front
@@ -1777,7 +1777,7 @@ pub struct Shadow {
17771777
pub distance: f32,
17781778
pub entity: Entity,
17791779
pub pipeline: CachedRenderPipelineId,
1780-
pub draw_function: DrawFunctionId,
1780+
pub render_command: RenderCommandId,
17811781
}
17821782

17831783
impl PhaseItem for Shadow {
@@ -1794,8 +1794,8 @@ impl PhaseItem for Shadow {
17941794
}
17951795

17961796
#[inline]
1797-
fn draw_function(&self) -> DrawFunctionId {
1798-
self.draw_function
1797+
fn render_command_id(&self) -> RenderCommandId {
1798+
self.render_command
17991799
}
18001800

18011801
#[inline]

0 commit comments

Comments
 (0)