Skip to content

Commit 1a3b26d

Browse files
authored
Use PluginGroup for SolariPlugins (#20044)
1 parent d45ae74 commit 1a3b26d

File tree

5 files changed

+24
-22
lines changed

5 files changed

+24
-22
lines changed

crates/bevy_solari/src/lib.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
//! Provides raytraced lighting.
44
//!
5-
//! See [`SolariPlugin`] for more info.
5+
//! See [`SolariPlugins`] for more info.
66
//!
77
//! ![`bevy_solari` logo](https://raw.githubusercontent.com/bevyengine/bevy/assets/branding/bevy_solari.svg)
88
pub mod pathtracer;
@@ -13,33 +13,35 @@ pub mod scene;
1313
///
1414
/// This includes the most common types in this crate, re-exported for your convenience.
1515
pub mod prelude {
16-
pub use super::SolariPlugin;
16+
pub use super::SolariPlugins;
1717
pub use crate::realtime::SolariLighting;
1818
pub use crate::scene::RaytracingMesh3d;
1919
}
2020

2121
use crate::realtime::SolariLightingPlugin;
2222
use crate::scene::RaytracingScenePlugin;
23-
use bevy_app::{App, Plugin};
23+
use bevy_app::{PluginGroup, PluginGroupBuilder};
2424
use bevy_render::settings::WgpuFeatures;
2525

26-
/// An experimental plugin for raytraced lighting.
26+
/// An experimental set of plugins for raytraced lighting.
2727
///
28-
/// This plugin provides:
28+
/// This plugin group provides:
2929
/// * [`SolariLightingPlugin`] - Raytraced direct and indirect lighting (indirect lighting not yet implemented).
3030
/// * [`RaytracingScenePlugin`] - BLAS building, resource and lighting binding.
31-
/// * [`pathtracer::PathtracingPlugin`] - A non-realtime pathtracer for validation purposes.
31+
/// * [`pathtracer::PathtracingPlugin`] - A non-realtime pathtracer for validation purposes (not added by default).
3232
///
3333
/// To get started, add `RaytracingMesh3d` and `MeshMaterial3d::<StandardMaterial>` to your entities.
34-
pub struct SolariPlugin;
34+
pub struct SolariPlugins;
3535

36-
impl Plugin for SolariPlugin {
37-
fn build(&self, app: &mut App) {
38-
app.add_plugins((RaytracingScenePlugin, SolariLightingPlugin));
36+
impl PluginGroup for SolariPlugins {
37+
fn build(self) -> PluginGroupBuilder {
38+
PluginGroupBuilder::start::<Self>()
39+
.add(RaytracingScenePlugin)
40+
.add(SolariLightingPlugin)
3941
}
4042
}
4143

42-
impl SolariPlugin {
44+
impl SolariPlugins {
4345
/// [`WgpuFeatures`] required for this plugin to function.
4446
pub fn required_wgpu_features() -> WgpuFeatures {
4547
WgpuFeatures::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE

crates/bevy_solari/src/pathtracer/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ mod extract;
22
mod node;
33
mod prepare;
44

5-
use crate::SolariPlugin;
5+
use crate::SolariPlugins;
66
use bevy_app::{App, Plugin};
77
use bevy_asset::embedded_asset;
88
use bevy_core_pipeline::core_3d::graph::{Core3d, Node3d};
@@ -37,10 +37,10 @@ impl Plugin for PathtracingPlugin {
3737

3838
let render_device = render_app.world().resource::<RenderDevice>();
3939
let features = render_device.features();
40-
if !features.contains(SolariPlugin::required_wgpu_features()) {
40+
if !features.contains(SolariPlugins::required_wgpu_features()) {
4141
warn!(
4242
"PathtracingPlugin not loaded. GPU lacks support for required features: {:?}.",
43-
SolariPlugin::required_wgpu_features().difference(features)
43+
SolariPlugins::required_wgpu_features().difference(features)
4444
);
4545
return;
4646
}

crates/bevy_solari/src/realtime/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ mod extract;
22
mod node;
33
mod prepare;
44

5-
use crate::SolariPlugin;
5+
use crate::SolariPlugins;
66
use bevy_app::{App, Plugin};
77
use bevy_asset::embedded_asset;
88
use bevy_core_pipeline::{
@@ -38,10 +38,10 @@ impl Plugin for SolariLightingPlugin {
3838

3939
let render_device = render_app.world().resource::<RenderDevice>();
4040
let features = render_device.features();
41-
if !features.contains(SolariPlugin::required_wgpu_features()) {
41+
if !features.contains(SolariPlugins::required_wgpu_features()) {
4242
warn!(
4343
"SolariLightingPlugin not loaded. GPU lacks support for required features: {:?}.",
44-
SolariPlugin::required_wgpu_features().difference(features)
44+
SolariPlugins::required_wgpu_features().difference(features)
4545
);
4646
return;
4747
}

crates/bevy_solari/src/scene/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ mod types;
66
pub use binder::RaytracingSceneBindings;
77
pub use types::RaytracingMesh3d;
88

9-
use crate::SolariPlugin;
9+
use crate::SolariPlugins;
1010
use bevy_app::{App, Plugin};
1111
use bevy_ecs::schedule::IntoScheduleConfigs;
1212
use bevy_render::{
@@ -41,10 +41,10 @@ impl Plugin for RaytracingScenePlugin {
4141
let render_app = app.sub_app_mut(RenderApp);
4242
let render_device = render_app.world().resource::<RenderDevice>();
4343
let features = render_device.features();
44-
if !features.contains(SolariPlugin::required_wgpu_features()) {
44+
if !features.contains(SolariPlugins::required_wgpu_features()) {
4545
warn!(
4646
"RaytracingScenePlugin not loaded. GPU lacks support for required features: {:?}.",
47-
SolariPlugin::required_wgpu_features().difference(features)
47+
SolariPlugins::required_wgpu_features().difference(features)
4848
);
4949
return;
5050
}

examples/3d/solari.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use bevy::{
1010
scene::SceneInstanceReady,
1111
solari::{
1212
pathtracer::{Pathtracer, PathtracingPlugin},
13-
prelude::{RaytracingMesh3d, SolariLighting, SolariPlugin},
13+
prelude::{RaytracingMesh3d, SolariLighting, SolariPlugins},
1414
},
1515
};
1616
use camera_controller::{CameraController, CameraControllerPlugin};
@@ -28,7 +28,7 @@ fn main() {
2828
let args: Args = argh::from_env();
2929

3030
let mut app = App::new();
31-
app.add_plugins((DefaultPlugins, SolariPlugin, CameraControllerPlugin))
31+
app.add_plugins((DefaultPlugins, SolariPlugins, CameraControllerPlugin))
3232
.insert_resource(args)
3333
.add_systems(Startup, setup);
3434

0 commit comments

Comments
 (0)