Skip to content

Commit 372d415

Browse files
committed
merged RenderCommand and Draw
1 parent 1cc8764 commit 372d415

File tree

15 files changed

+297
-393
lines changed

15 files changed

+297
-393
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(&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
@@ -29,8 +29,8 @@ use bevy_render::{
2929
prelude::Msaa,
3030
render_graph::{EmptyNode, RenderGraph, SlotInfo, SlotType},
3131
render_phase::{
32-
sort_phase_system, CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions, PhaseItem,
33-
RenderPhase,
32+
sort_phase_system, CachedRenderPipelinePhaseItem, PhaseItem, RenderCommandId,
33+
RenderCommands, RenderPhase,
3434
},
3535
render_resource::{
3636
CachedRenderPipelineId, Extent3d, TextureDescriptor, TextureDimension, TextureFormat,
@@ -59,9 +59,9 @@ impl Plugin for Core3dPlugin {
5959
};
6060

6161
render_app
62-
.init_resource::<DrawFunctions<Opaque3d>>()
63-
.init_resource::<DrawFunctions<AlphaMask3d>>()
64-
.init_resource::<DrawFunctions<Transparent3d>>()
62+
.init_resource::<RenderCommands<Opaque3d>>()
63+
.init_resource::<RenderCommands<AlphaMask3d>>()
64+
.init_resource::<RenderCommands<Transparent3d>>()
6565
.add_system_to_stage(RenderStage::Extract, extract_core_3d_camera_phases)
6666
.add_system_to_stage(RenderStage::Prepare, prepare_core_3d_depth_textures)
6767
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Opaque3d>)
@@ -117,7 +117,7 @@ pub struct Opaque3d {
117117
pub distance: f32,
118118
pub pipeline: CachedRenderPipelineId,
119119
pub entity: Entity,
120-
pub draw_function: DrawFunctionId,
120+
pub render_command: RenderCommandId,
121121
}
122122

123123
impl PhaseItem for Opaque3d {
@@ -135,8 +135,8 @@ impl PhaseItem for Opaque3d {
135135
}
136136

137137
#[inline]
138-
fn draw_function(&self) -> DrawFunctionId {
139-
self.draw_function
138+
fn render_command(&self) -> RenderCommandId {
139+
self.render_command
140140
}
141141

142142
#[inline]
@@ -157,7 +157,7 @@ pub struct AlphaMask3d {
157157
pub distance: f32,
158158
pub pipeline: CachedRenderPipelineId,
159159
pub entity: Entity,
160-
pub draw_function: DrawFunctionId,
160+
pub render_command: RenderCommandId,
161161
}
162162

163163
impl PhaseItem for AlphaMask3d {
@@ -175,8 +175,8 @@ impl PhaseItem for AlphaMask3d {
175175
}
176176

177177
#[inline]
178-
fn draw_function(&self) -> DrawFunctionId {
179-
self.draw_function
178+
fn render_command(&self) -> RenderCommandId {
179+
self.render_command
180180
}
181181

182182
#[inline]
@@ -197,7 +197,7 @@ pub struct Transparent3d {
197197
pub distance: f32,
198198
pub pipeline: CachedRenderPipelineId,
199199
pub entity: Entity,
200-
pub draw_function: DrawFunctionId,
200+
pub render_command: RenderCommandId,
201201
}
202202

203203
impl PhaseItem for Transparent3d {
@@ -215,8 +215,8 @@ impl PhaseItem for Transparent3d {
215215
}
216216

217217
#[inline]
218-
fn draw_function(&self) -> DrawFunctionId {
219-
self.draw_function
218+
fn render_command(&self) -> RenderCommandId {
219+
self.render_command
220220
}
221221

222222
#[inline]

crates/bevy_pbr/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use bevy_render::{
4646
extract_resource::ExtractResourcePlugin,
4747
prelude::Color,
4848
render_graph::RenderGraph,
49-
render_phase::{sort_phase_system, AddRenderCommand, DrawFunctions},
49+
render_phase::{sort_phase_system, AddRenderCommand, RenderCommands},
5050
render_resource::{Shader, SpecializedMeshPipelines},
5151
view::VisibilitySystems,
5252
RenderApp, RenderStage,
@@ -244,7 +244,7 @@ impl Plugin for PbrPlugin {
244244
.add_system_to_stage(RenderStage::Queue, render::queue_shadow_view_bind_group)
245245
.add_system_to_stage(RenderStage::PhaseSort, sort_phase_system::<Shadow>)
246246
.init_resource::<ShadowPipeline>()
247-
.init_resource::<DrawFunctions<Shadow>>()
247+
.init_resource::<RenderCommands<Shadow>>()
248248
.init_resource::<LightMeta>()
249249
.init_resource::<GlobalLightMeta>()
250250
.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::{
@@ -316,9 +316,9 @@ impl<P: PhaseItem, M: Material, const I: usize> RenderCommand<P> for SetMaterial
316316

317317
#[allow(clippy::too_many_arguments)]
318318
pub fn queue_material_meshes<M: Material>(
319-
opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
320-
alpha_mask_draw_functions: Res<DrawFunctions<AlphaMask3d>>,
321-
transparent_draw_functions: Res<DrawFunctions<Transparent3d>>,
319+
opaque_render_commands: Res<RenderCommands<Opaque3d>>,
320+
alpha_mask_render_commands: Res<RenderCommands<AlphaMask3d>>,
321+
transparent_render_commands: Res<RenderCommands<Transparent3d>>,
322322
material_pipeline: Res<MaterialPipeline<M>>,
323323
mut pipelines: ResMut<SpecializedMeshPipelines<MaterialPipeline<M>>>,
324324
mut pipeline_cache: ResMut<PipelineCache>,
@@ -346,9 +346,9 @@ pub fn queue_material_meshes<M: Material>(
346346
mut transparent_phase,
347347
) in &mut views
348348
{
349-
let draw_opaque_pbr = opaque_draw_functions.read().id::<DrawMaterial<M>>();
350-
let draw_alpha_mask_pbr = alpha_mask_draw_functions.read().id::<DrawMaterial<M>>();
351-
let draw_transparent_pbr = transparent_draw_functions.read().id::<DrawMaterial<M>>();
349+
let draw_opaque_pbr = opaque_render_commands.id::<DrawMaterial<M>>();
350+
let draw_alpha_mask_pbr = alpha_mask_render_commands.id::<DrawMaterial<M>>();
351+
let draw_transparent_pbr = transparent_render_commands.id::<DrawMaterial<M>>();
352352

353353
let mut view_key =
354354
MeshPipelineKey::from_msaa_samples(msaa.samples) | MeshPipelineKey::from_hdr(view.hdr);
@@ -401,23 +401,23 @@ pub fn queue_material_meshes<M: Material>(
401401
AlphaMode::Opaque => {
402402
opaque_phase.add(Opaque3d {
403403
entity: *visible_entity,
404-
draw_function: draw_opaque_pbr,
404+
render_command: draw_opaque_pbr,
405405
pipeline: pipeline_id,
406406
distance,
407407
});
408408
}
409409
AlphaMode::Mask(_) => {
410410
alpha_mask_phase.add(AlphaMask3d {
411411
entity: *visible_entity,
412-
draw_function: draw_alpha_mask_pbr,
412+
render_command: draw_alpha_mask_pbr,
413413
pipeline: pipeline_id,
414414
distance,
415415
});
416416
}
417417
AlphaMode::Blend => {
418418
transparent_phase.add(Transparent3d {
419419
entity: *visible_entity,
420-
draw_function: draw_transparent_pbr,
420+
render_command: draw_transparent_pbr,
421421
pipeline: pipeline_id,
422422
distance,
423423
});

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(&self) -> RenderCommandId {
1713+
self.render_command
17141714
}
17151715

17161716
#[inline]

crates/bevy_pbr/src/wireframe.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use bevy_render::{
1111
extract_resource::{ExtractResource, ExtractResourcePlugin},
1212
mesh::{Mesh, MeshVertexBufferLayout},
1313
render_asset::RenderAssets,
14-
render_phase::{AddRenderCommand, DrawFunctions, RenderPhase, SetItemPipeline},
14+
render_phase::{AddRenderCommand, RenderCommands, RenderPhase, SetItemPipeline},
1515
render_resource::{
1616
PipelineCache, PolygonMode, RenderPipelineDescriptor, Shader, SpecializedMeshPipeline,
1717
SpecializedMeshPipelineError, SpecializedMeshPipelines,
@@ -103,7 +103,7 @@ impl SpecializedMeshPipeline for WireframePipeline {
103103

104104
#[allow(clippy::too_many_arguments)]
105105
fn queue_wireframes(
106-
opaque_3d_draw_functions: Res<DrawFunctions<Opaque3d>>,
106+
opaque_3d_render_commands: Res<RenderCommands<Opaque3d>>,
107107
render_meshes: Res<RenderAssets<Mesh>>,
108108
wireframe_config: Res<WireframeConfig>,
109109
wireframe_pipeline: Res<WireframePipeline>,
@@ -116,7 +116,7 @@ fn queue_wireframes(
116116
)>,
117117
mut views: Query<(&ExtractedView, &VisibleEntities, &mut RenderPhase<Opaque3d>)>,
118118
) {
119-
let draw_custom = opaque_3d_draw_functions.read().id::<DrawWireframes>();
119+
let draw_custom = opaque_3d_render_commands.id::<DrawWireframes>();
120120
let msaa_key = MeshPipelineKey::from_msaa_samples(msaa.samples);
121121
for (view, visible_entities, mut opaque_phase) in &mut views {
122122
let rangefinder = view.rangefinder3d();
@@ -143,7 +143,7 @@ fn queue_wireframes(
143143
opaque_phase.add(Opaque3d {
144144
entity,
145145
pipeline: pipeline_id,
146-
draw_function: draw_custom,
146+
render_command: draw_custom,
147147
distance: rangefinder.distance(&mesh_uniform.transform),
148148
});
149149
}

0 commit comments

Comments
 (0)