Skip to content

Commit

Permalink
Reflect for Tonemapping and ClusterConfig (#6488)
Browse files Browse the repository at this point in the history
# Objective

- it would be useful to inspect these structs using reflection

## Solution

- derive and register reflect
- Note that `#[reflect(Component)]` requires `Default` (or `FromWorld`) until #6060, so I implemented `Default` for `Tonemapping` with `is_enabled: false`
  • Loading branch information
jakobhellermann committed Nov 7, 2022
1 parent 0aa17d0 commit 4ad621f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
7 changes: 5 additions & 2 deletions crates/bevy_core_pipeline/src/tonemapping/mod.rs
Expand Up @@ -7,7 +7,7 @@ use bevy_app::prelude::*;
use bevy_asset::{load_internal_asset, HandleUntyped};
use bevy_ecs::prelude::*;
use bevy_ecs::query::QueryItem;
use bevy_reflect::TypeUuid;
use bevy_reflect::{Reflect, TypeUuid};
use bevy_render::camera::Camera;
use bevy_render::extract_component::{ExtractComponent, ExtractComponentPlugin};
use bevy_render::renderer::RenderDevice;
Expand Down Expand Up @@ -37,6 +37,8 @@ impl Plugin for TonemappingPlugin {
Shader::from_wgsl
);

app.register_type::<Tonemapping>();

app.add_plugin(ExtractComponentPlugin::<Tonemapping>::default());

if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
Expand Down Expand Up @@ -104,7 +106,8 @@ impl FromWorld for TonemappingPipeline {
}
}

#[derive(Component, Clone)]
#[derive(Component, Clone, Reflect, Default)]
#[reflect(Component)]
pub struct Tonemapping {
pub is_enabled: bool,
}
Expand Down
3 changes: 3 additions & 0 deletions crates/bevy_pbr/src/lib.rs
Expand Up @@ -130,6 +130,9 @@ impl Plugin for PbrPlugin {
.register_asset_reflect::<StandardMaterial>()
.register_type::<AmbientLight>()
.register_type::<DirectionalLightShadowMap>()
.register_type::<ClusterConfig>()
.register_type::<ClusterZConfig>()
.register_type::<ClusterFarZMode>()
.register_type::<PointLightShadowMap>()
.add_plugin(MeshRenderPlugin)
.add_plugin(MaterialPlugin::<StandardMaterial>::default())
Expand Down
8 changes: 5 additions & 3 deletions crates/bevy_pbr/src/light.rs
Expand Up @@ -308,7 +308,7 @@ pub enum SimulationLightSystems {

/// Configure the far z-plane mode used for the furthest depth slice for clustered forward
/// rendering
#[derive(Debug, Copy, Clone)]
#[derive(Debug, Copy, Clone, Reflect, FromReflect)]
pub enum ClusterFarZMode {
/// Calculate the required maximum z-depth based on currently visible lights.
/// Makes better use of available clusters, speeding up GPU lighting operations
Expand All @@ -320,7 +320,8 @@ pub enum ClusterFarZMode {
}

/// Configure the depth-slicing strategy for clustered forward rendering
#[derive(Debug, Copy, Clone)]
#[derive(Debug, Copy, Clone, Reflect, FromReflect)]
#[reflect(Default)]
pub struct ClusterZConfig {
/// Far `Z` plane of the first depth slice
pub first_slice_depth: f32,
Expand All @@ -338,7 +339,8 @@ impl Default for ClusterZConfig {
}

/// Configuration of the clustering strategy for clustered forward rendering
#[derive(Debug, Copy, Clone, Component)]
#[derive(Debug, Copy, Clone, Component, Reflect)]
#[reflect(Component)]
pub enum ClusterConfig {
/// Disable light cluster calculations for this view
None,
Expand Down

0 comments on commit 4ad621f

Please sign in to comment.