Fix panic in custom_render_phase
example (#17866)
# Objective Fix panic in `custom_render_phase`. This example was broken by #17764, but that breakage evolved into a panic after #17849. This new panic seems to illustrate the problem in a pretty straightforward way. ``` 2025-02-15T00:44:11.833622Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "macOS 15.3 Sequoia", kernel: "24.3.0", cpu: "Apple M4 Max", core_count: "16", memory: "64.0 GiB" } 2025-02-15T00:44:11.908328Z INFO bevy_render::renderer: AdapterInfo { name: "Apple M4 Max", vendor: 0, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Metal } 2025-02-15T00:44:12.314930Z INFO bevy_winit::system: Creating new window App (0v1) thread 'Compute Task Pool (1)' panicked at /Users/me/src/bevy/crates/bevy_ecs/src/system/function_system.rs:216:28: bevy_render::batching::gpu_preprocessing::batch_and_prepare_sorted_render_phase<custom_render_phase::Stencil3d, custom_render_phase::StencilPipeline> could not access system parameter ResMut<PhaseBatchedInstanceBuffers<Stencil3d, MeshUniform>> ``` ## Solution Add a `SortedRenderPhasePlugin` for the custom phase. ## Testing `cargo run --example custom_render_phase`
This commit is contained in:
parent
137878ac35
commit
e186c7ccf4
@ -43,7 +43,7 @@ use bevy::{
|
||||
render_phase::{
|
||||
sort_phase_system, AddRenderCommand, CachedRenderPipelinePhaseItem, DrawFunctionId,
|
||||
DrawFunctions, InputUniformIndex, PhaseItem, PhaseItemExtraIndex, SetItemPipeline,
|
||||
SortedPhaseItem, ViewSortedRenderPhases,
|
||||
SortedPhaseItem, SortedRenderPhasePlugin, ViewSortedRenderPhases,
|
||||
},
|
||||
render_resource::{
|
||||
CachedRenderPipelineId, ColorTargetState, ColorWrites, Face, FragmentState, FrontFace,
|
||||
@ -54,7 +54,7 @@ use bevy::{
|
||||
renderer::RenderContext,
|
||||
sync_world::MainEntity,
|
||||
view::{ExtractedView, RenderVisibleEntities, RetainedViewEntity, ViewTarget},
|
||||
Extract, Render, RenderApp, RenderSet,
|
||||
Extract, Render, RenderApp, RenderDebugFlags, RenderSet,
|
||||
},
|
||||
};
|
||||
use nonmax::NonMaxU32;
|
||||
@ -113,7 +113,10 @@ struct DrawStencil;
|
||||
struct MeshStencilPhasePlugin;
|
||||
impl Plugin for MeshStencilPhasePlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_plugins((ExtractComponentPlugin::<DrawStencil>::default(),));
|
||||
app.add_plugins((
|
||||
ExtractComponentPlugin::<DrawStencil>::default(),
|
||||
SortedRenderPhasePlugin::<Stencil3d, MeshPipeline>::new(RenderDebugFlags::default()),
|
||||
));
|
||||
// We need to get the render app from the main app
|
||||
let Some(render_app) = app.get_sub_app_mut(RenderApp) else {
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user