Skip to content

Commit 2e20d04

Browse files
use better set inheritance in render systems (#7524)
# Objective Some render systems that have system set used as a label so that they can be referenced from somewhere else. The 1:1 translation from `add_system_to_stage(Prepare, prepare_lights.label(PrepareLights))` is `add_system(prepare_lights.in_set(Prepare).in_set(PrepareLights)`, but configuring the `PrepareLights` set to be in `Prepare` would match the intention better (there are no systems in `PrepareLights` outside of `Prepare`) and it is easier for visualization tools to deal with. # Solution - replace ```rust prepare_lights in PrepareLights prepare_lights in Prepare ``` with ```rs prepare_lights in PrepareLights PrepareLights in Prepare ``` **Before** ![before](https://user-images.githubusercontent.com/22177966/216961792-a0f5eba7-f161-4994-b5a4-33e98763a3b0.svg) **After** ![after](https://user-images.githubusercontent.com/22177966/216961790-857d0062-7943-49ef-8927-e602dfbab714.svg)
1 parent d26b63a commit 2e20d04

File tree

5 files changed

+21
-37
lines changed

5 files changed

+21
-37
lines changed

crates/bevy_pbr/src/lib.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ impl Plugin for PbrPlugin {
254254

255255
// Extract the required data from the main world
256256
render_app
257+
.configure_set(RenderLightSystems::PrepareLights.in_set(RenderSet::Prepare))
258+
.configure_set(RenderLightSystems::PrepareClusters.in_set(RenderSet::Prepare))
259+
.configure_set(RenderLightSystems::QueueShadows.in_set(RenderSet::Queue))
257260
.add_systems_to_schedule(
258261
ExtractSchedule,
259262
(
@@ -264,8 +267,7 @@ impl Plugin for PbrPlugin {
264267
.add_system(
265268
render::prepare_lights
266269
.before(ViewSet::PrepareUniforms)
267-
.in_set(RenderLightSystems::PrepareLights)
268-
.in_set(RenderSet::Prepare),
270+
.in_set(RenderLightSystems::PrepareLights),
269271
)
270272
// A sync is needed after prepare_lights, before prepare_view_uniforms,
271273
// because prepare_lights creates new views for shadow mapping
@@ -277,14 +279,9 @@ impl Plugin for PbrPlugin {
277279
.add_system(
278280
render::prepare_clusters
279281
.after(render::prepare_lights)
280-
.in_set(RenderLightSystems::PrepareClusters)
281-
.in_set(RenderSet::Prepare),
282-
)
283-
.add_system(
284-
render::queue_shadows
285-
.in_set(RenderLightSystems::QueueShadows)
286-
.in_set(RenderSet::Queue),
282+
.in_set(RenderLightSystems::PrepareClusters),
287283
)
284+
.add_system(render::queue_shadows.in_set(RenderLightSystems::QueueShadows))
288285
.add_system(render::queue_shadow_view_bind_group.in_set(RenderSet::Queue))
289286
.add_system(sort_phase_system::<Shadow>.in_set(RenderSet::PhaseSort))
290287
.init_resource::<ShadowPipeline>()

crates/bevy_pbr/src/material.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,7 @@ where
196196
.init_resource::<RenderMaterials<M>>()
197197
.init_resource::<SpecializedMeshPipelines<MaterialPipeline<M>>>()
198198
.add_system_to_schedule(ExtractSchedule, extract_materials::<M>)
199-
.add_system(
200-
prepare_materials::<M>
201-
.after(PrepareAssetLabel::PreAssetPrepare)
202-
.in_set(RenderSet::Prepare),
203-
)
199+
.add_system(prepare_materials::<M>.after(PrepareAssetLabel::PreAssetPrepare))
204200
.add_system(queue_material_meshes::<M>.in_set(RenderSet::Queue));
205201
}
206202

crates/bevy_render/src/render_asset.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,24 +79,21 @@ impl<A: RenderAsset> Default for RenderAssetPlugin<A> {
7979
impl<A: RenderAsset> Plugin for RenderAssetPlugin<A> {
8080
fn build(&self, app: &mut App) {
8181
if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
82-
let prepare_asset_system = prepare_assets::<A>.in_set(self.prepare_asset_label.clone());
83-
84-
let prepare_asset_system = match self.prepare_asset_label {
85-
PrepareAssetLabel::PreAssetPrepare => prepare_asset_system,
86-
PrepareAssetLabel::AssetPrepare => {
87-
prepare_asset_system.after(PrepareAssetLabel::PreAssetPrepare)
88-
}
89-
PrepareAssetLabel::PostAssetPrepare => {
90-
prepare_asset_system.after(PrepareAssetLabel::AssetPrepare)
91-
}
92-
};
93-
9482
render_app
83+
.configure_sets(
84+
(
85+
PrepareAssetLabel::PreAssetPrepare,
86+
PrepareAssetLabel::AssetPrepare,
87+
PrepareAssetLabel::PostAssetPrepare,
88+
)
89+
.chain()
90+
.in_set(RenderSet::Prepare),
91+
)
9592
.init_resource::<ExtractedAssets<A>>()
9693
.init_resource::<RenderAssets<A>>()
9794
.init_resource::<PrepareNextFrameAssets<A>>()
9895
.add_system_to_schedule(ExtractSchedule, extract_render_asset::<A>)
99-
.add_system(prepare_asset_system.in_set(RenderSet::Prepare));
96+
.add_system(prepare_assets::<A>.in_set(self.prepare_asset_label.clone()));
10097
}
10198
}
10299
}

crates/bevy_render/src/view/mod.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,8 @@ impl Plugin for ViewPlugin {
4545
if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
4646
render_app
4747
.init_resource::<ViewUniforms>()
48-
.add_system(
49-
prepare_view_uniforms
50-
.in_set(RenderSet::Prepare)
51-
.in_set(ViewSet::PrepareUniforms),
52-
)
48+
.configure_set(ViewSet::PrepareUniforms.in_set(RenderSet::Prepare))
49+
.add_system(prepare_view_uniforms.in_set(ViewSet::PrepareUniforms))
5350
.add_system(
5451
prepare_view_targets
5552
.after(WindowSystem::Prepare)

crates/bevy_render/src/view/window.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,8 @@ impl Plugin for WindowRenderPlugin {
3333
.init_resource::<WindowSurfaces>()
3434
.init_non_send_resource::<NonSendMarker>()
3535
.add_system_to_schedule(ExtractSchedule, extract_windows)
36-
.add_system(
37-
prepare_windows
38-
.in_set(WindowSystem::Prepare)
39-
.in_set(RenderSet::Prepare),
40-
);
36+
.configure_set(WindowSystem::Prepare.in_set(RenderSet::Prepare))
37+
.add_system(prepare_windows.in_set(WindowSystem::Prepare));
4138
}
4239
}
4340
}

0 commit comments

Comments
 (0)