Skip to content

Commit 0bacb15

Browse files
committed
Use RenderStartup for MaterialPipeline.
1 parent f90ec2f commit 0bacb15

File tree

2 files changed

+25
-29
lines changed

2 files changed

+25
-29
lines changed

crates/bevy_pbr/src/material.rs

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,15 @@ impl Plugin for MaterialsPlugin {
267267
.init_resource::<LightKeyCache>()
268268
.init_resource::<LightSpecializationTicks>()
269269
.init_resource::<SpecializedShadowMaterialPipelineCache>()
270+
.init_resource::<DrawFunctions<Shadow>>()
271+
.init_resource::<RenderMaterialInstances>()
272+
.init_resource::<MaterialBindGroupAllocators>()
273+
.add_render_command::<Shadow, DrawPrepass>()
274+
.add_render_command::<Transmissive3d, DrawMaterial>()
275+
.add_render_command::<Transparent3d, DrawMaterial>()
276+
.add_render_command::<Opaque3d, DrawMaterial>()
277+
.add_render_command::<AlphaMask3d, DrawMaterial>()
278+
.add_systems(RenderStartup, init_material_pipeline)
270279
.add_systems(
271280
Render,
272281
(
@@ -301,21 +310,6 @@ impl Plugin for MaterialsPlugin {
301310
);
302311
}
303312
}
304-
305-
fn finish(&self, app: &mut App) {
306-
if let Some(render_app) = app.get_sub_app_mut(RenderApp) {
307-
render_app
308-
.init_resource::<DrawFunctions<Shadow>>()
309-
.init_resource::<RenderMaterialInstances>()
310-
.init_resource::<MaterialPipeline>()
311-
.init_resource::<MaterialBindGroupAllocators>()
312-
.add_render_command::<Shadow, DrawPrepass>()
313-
.add_render_command::<Transmissive3d, DrawMaterial>()
314-
.add_render_command::<Transparent3d, DrawMaterial>()
315-
.add_render_command::<Opaque3d, DrawMaterial>()
316-
.add_render_command::<AlphaMask3d, DrawMaterial>();
317-
}
318-
}
319313
}
320314

321315
/// Adds the necessary ECS resources and render logic to enable rendering entities using the given [`Material`]
@@ -485,12 +479,10 @@ impl SpecializedMeshPipeline for MaterialPipelineSpecializer {
485479
}
486480
}
487481

488-
impl FromWorld for MaterialPipeline {
489-
fn from_world(world: &mut World) -> Self {
490-
MaterialPipeline {
491-
mesh_pipeline: world.resource::<MeshPipeline>().clone(),
492-
}
493-
}
482+
pub fn init_material_pipeline(mut commands: Commands, mesh_pipeline: Res<MeshPipeline>) {
483+
commands.insert_resource(MaterialPipeline {
484+
mesh_pipeline: mesh_pipeline.clone(),
485+
});
494486
}
495487

496488
pub type DrawMaterial = (

crates/bevy_pbr/src/prepass/mod.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ mod prepass_bindings;
22

33
use crate::{
44
alpha_mode_pipeline_key, binding_arrays_are_usable, buffer_layout,
5-
collect_meshes_for_gpu_building, set_mesh_motion_vector_flags, setup_morph_and_skinning_defs,
6-
skin, DeferredDrawFunction, DeferredFragmentShader, DeferredVertexShader, DrawMesh,
7-
EntitySpecializationTicks, ErasedMaterialPipelineKey, Material, MaterialPipeline,
8-
MaterialProperties, MeshLayouts, MeshPipeline, MeshPipelineKey, OpaqueRendererMethod,
9-
PreparedMaterial, PrepassDrawFunction, PrepassFragmentShader, PrepassVertexShader,
10-
RenderLightmaps, RenderMaterialInstances, RenderMeshInstanceFlags, RenderMeshInstances,
11-
RenderPhaseType, SetMaterialBindGroup, SetMeshBindGroup, ShadowView,
5+
collect_meshes_for_gpu_building, init_material_pipeline, set_mesh_motion_vector_flags,
6+
setup_morph_and_skinning_defs, skin, DeferredDrawFunction, DeferredFragmentShader,
7+
DeferredVertexShader, DrawMesh, EntitySpecializationTicks, ErasedMaterialPipelineKey, Material,
8+
MaterialPipeline, MaterialProperties, MeshLayouts, MeshPipeline, MeshPipelineKey,
9+
OpaqueRendererMethod, PreparedMaterial, PrepassDrawFunction, PrepassFragmentShader,
10+
PrepassVertexShader, RenderLightmaps, RenderMaterialInstances, RenderMeshInstanceFlags,
11+
RenderMeshInstances, RenderPhaseType, SetMaterialBindGroup, SetMeshBindGroup, ShadowView,
1212
};
1313
use bevy_app::{App, Plugin, PreUpdate};
1414
use bevy_render::{
@@ -89,7 +89,11 @@ impl Plugin for PrepassPipelinePlugin {
8989
render_app
9090
.add_systems(
9191
RenderStartup,
92-
(init_prepass_pipeline, init_prepass_view_bind_group).chain(),
92+
(
93+
init_prepass_pipeline.after(init_material_pipeline),
94+
init_prepass_view_bind_group,
95+
)
96+
.chain(),
9397
)
9498
.add_systems(
9599
Render,

0 commit comments

Comments
 (0)