Skip to content

Commit 1579256

Browse files
Rename light visibility class (#19986)
# Objective - prepare bevy_light for split - make struct named better - put it where it belongs ## Solution - do those things ## Testing - 3d_scene, lighting --------- Co-authored-by: Alice Cecile <[email protected]>
1 parent 8e89511 commit 1579256

File tree

7 files changed

+32
-22
lines changed

7 files changed

+32
-22
lines changed

crates/bevy_pbr/src/cluster/extract_and_prepare.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ use bevy_render::{
1313
};
1414
use tracing::warn;
1515

16-
use crate::{cluster::ClusterableObjectCounts, Clusters, GlobalClusterSettings, MeshPipeline};
16+
use super::{ClusterableObjectCounts, Clusters, GlobalClusterSettings};
17+
use crate::MeshPipeline;
1718

1819
// NOTE: this must be kept in sync with the same constants in
1920
// `mesh_view_types.wgsl`.

crates/bevy_pbr/src/cluster/mod.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use bevy_transform::components::Transform;
2222
use tracing::warn;
2323

2424
pub(crate) use crate::cluster::assign::assign_objects_to_clusters;
25-
use crate::LightVisibilityClass;
2625

2726
pub(crate) mod assign;
2827
mod extract_and_prepare;
@@ -115,6 +114,11 @@ pub struct Clusters {
115114
pub(crate) clusterable_objects: Vec<VisibleClusterableObjects>,
116115
}
117116

117+
/// The [`VisibilityClass`] used for clusterables (decals, point lights, directional lights, and spot lights).
118+
///
119+
/// [`VisibilityClass`]: bevy_camera::visibility::VisibilityClass
120+
pub struct ClusterVisibilityClass;
121+
118122
#[derive(Clone, Component, Debug, Default)]
119123
pub struct VisibleClusterableObjects {
120124
pub(crate) entities: Vec<Entity>,
@@ -157,7 +161,7 @@ struct ClusterableObjectCounts {
157161
#[derive(Component, Debug, Clone, Reflect, ExtractComponent)]
158162
#[reflect(Component, Debug, Clone)]
159163
#[require(Transform, Visibility, VisibilityClass)]
160-
#[component(on_add = visibility::add_visibility_class::<LightVisibilityClass>)]
164+
#[component(on_add = visibility::add_visibility_class::<ClusterVisibilityClass>)]
161165
pub struct ClusteredDecal {
162166
/// The image that the clustered decal projects.
163167
///

crates/bevy_pbr/src/light/directional_light.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ use bevy_image::Image;
1010
use bevy_reflect::prelude::*;
1111
use bevy_transform::components::Transform;
1212

13-
use crate::{cascade::CascadeShadowConfig, light_consts, Cascades, LightVisibilityClass};
13+
use super::{cascade::CascadeShadowConfig, light_consts, Cascades};
14+
use crate::cluster::ClusterVisibilityClass;
1415

1516
/// A Directional light.
1617
///
@@ -63,7 +64,7 @@ use crate::{cascade::CascadeShadowConfig, light_consts, Cascades, LightVisibilit
6364
Visibility,
6465
VisibilityClass
6566
)]
66-
#[component(on_add = visibility::add_visibility_class::<LightVisibilityClass>)]
67+
#[component(on_add = visibility::add_visibility_class::<ClusterVisibilityClass>)]
6768
pub struct DirectionalLight {
6869
/// The color of the light.
6970
///

crates/bevy_pbr/src/light/mod.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,24 @@ use bevy_transform::{components::GlobalTransform, TransformSystems};
1616
use bevy_utils::Parallel;
1717
use core::ops::DerefMut;
1818

19-
pub use crate::light::spot_light::{spot_light_clip_from_view, spot_light_world_from_view};
20-
use crate::{
21-
add_clusters, assign_objects_to_clusters,
22-
cascade::{build_directional_light_cascades, clear_directional_light_cascades},
23-
CascadeShadowConfig, Cascades, VisibleClusterableObjects,
24-
};
19+
use crate::cluster::{add_clusters, assign_objects_to_clusters, VisibleClusterableObjects};
2520

2621
mod ambient_light;
2722
pub use ambient_light::AmbientLight;
28-
2923
pub mod cascade;
24+
use cascade::{
25+
build_directional_light_cascades, clear_directional_light_cascades, CascadeShadowConfig,
26+
Cascades,
27+
};
3028
mod point_light;
3129
pub use point_light::{
3230
update_point_light_frusta, PointLight, PointLightShadowMap, PointLightTexture,
3331
};
3432
mod spot_light;
35-
pub use spot_light::{update_spot_light_frusta, SpotLight, SpotLightTexture};
33+
pub use spot_light::{
34+
spot_light_clip_from_view, spot_light_world_from_view, update_spot_light_frusta, SpotLight,
35+
SpotLightTexture,
36+
};
3637
mod directional_light;
3738
pub use directional_light::{
3839
update_directional_light_frusta, DirectionalLight, DirectionalLightShadowMap,
@@ -243,11 +244,6 @@ pub enum ShadowFilteringMethod {
243244
Temporal,
244245
}
245246

246-
/// The [`VisibilityClass`] used for all lights (point, directional, and spot).
247-
///
248-
/// [`VisibilityClass`]: bevy_camera::visibility::VisibilityClass
249-
pub struct LightVisibilityClass;
250-
251247
/// System sets used to run light-related systems.
252248
#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)]
253249
pub enum SimulationLightSystems {

crates/bevy_pbr/src/light/point_light.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use bevy_math::Mat4;
1010
use bevy_reflect::prelude::*;
1111
use bevy_transform::components::{GlobalTransform, Transform};
1212

13-
use crate::{GlobalVisibleClusterableObjects, LightVisibilityClass};
13+
use crate::cluster::{ClusterVisibilityClass, GlobalVisibleClusterableObjects};
1414

1515
/// A light that emits light in all directions from a central point.
1616
///
@@ -44,7 +44,7 @@ use crate::{GlobalVisibleClusterableObjects, LightVisibilityClass};
4444
Visibility,
4545
VisibilityClass
4646
)]
47-
#[component(on_add = visibility::add_visibility_class::<LightVisibilityClass>)]
47+
#[component(on_add = visibility::add_visibility_class::<ClusterVisibilityClass>)]
4848
pub struct PointLight {
4949
/// The color of this light source.
5050
pub color: Color,

crates/bevy_pbr/src/light/spot_light.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use bevy_reflect::prelude::*;
1111
use bevy_render::view::VisibleMeshEntities;
1212
use bevy_transform::components::{GlobalTransform, Transform};
1313

14-
use crate::{GlobalVisibleClusterableObjects, LightVisibilityClass};
14+
use crate::cluster::{ClusterVisibilityClass, GlobalVisibleClusterableObjects};
1515

1616
/// A light that emits light in a given direction from a central point.
1717
///
@@ -21,7 +21,7 @@ use crate::{GlobalVisibleClusterableObjects, LightVisibilityClass};
2121
#[derive(Component, Debug, Clone, Copy, Reflect)]
2222
#[reflect(Component, Default, Debug, Clone)]
2323
#[require(Frustum, VisibleMeshEntities, Transform, Visibility, VisibilityClass)]
24-
#[component(on_add = visibility::add_visibility_class::<LightVisibilityClass>)]
24+
#[component(on_add = visibility::add_visibility_class::<ClusterVisibilityClass>)]
2525
pub struct SpotLight {
2626
/// The color of the light.
2727
///
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: `LightVisibilityClass` renamed to `ClusterVisibilityClass`
3+
pull_requests: [19986]
4+
---
5+
6+
When clustered decals were added, they used `LightVisibilityClass` to share the clustering infrastructure.
7+
This revealed that this visibility class wasn't really about lights, but about clustering.
8+
It has been renamed to `ClusterVisibilityClass` and moved to live alongside clustering-specific types.

0 commit comments

Comments
 (0)