Reflect for Tonemapping and ClusterConfig (#6488)

# 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`
This commit is contained in:
Jakob Hellermann 2022-11-07 19:44:17 +00:00
parent 0aa17d0aca
commit 4ad621fe0f
3 changed files with 13 additions and 5 deletions

View File

@ -7,7 +7,7 @@ use bevy_app::prelude::*;
use bevy_asset::{load_internal_asset, HandleUntyped}; use bevy_asset::{load_internal_asset, HandleUntyped};
use bevy_ecs::prelude::*; use bevy_ecs::prelude::*;
use bevy_ecs::query::QueryItem; use bevy_ecs::query::QueryItem;
use bevy_reflect::TypeUuid; use bevy_reflect::{Reflect, TypeUuid};
use bevy_render::camera::Camera; use bevy_render::camera::Camera;
use bevy_render::extract_component::{ExtractComponent, ExtractComponentPlugin}; use bevy_render::extract_component::{ExtractComponent, ExtractComponentPlugin};
use bevy_render::renderer::RenderDevice; use bevy_render::renderer::RenderDevice;
@ -37,6 +37,8 @@ impl Plugin for TonemappingPlugin {
Shader::from_wgsl Shader::from_wgsl
); );
app.register_type::<Tonemapping>();
app.add_plugin(ExtractComponentPlugin::<Tonemapping>::default()); app.add_plugin(ExtractComponentPlugin::<Tonemapping>::default());
if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
@ -104,7 +106,8 @@ impl FromWorld for TonemappingPipeline {
} }
} }
#[derive(Component, Clone)] #[derive(Component, Clone, Reflect, Default)]
#[reflect(Component)]
pub struct Tonemapping { pub struct Tonemapping {
pub is_enabled: bool, pub is_enabled: bool,
} }

View File

@ -130,6 +130,9 @@ impl Plugin for PbrPlugin {
.register_asset_reflect::<StandardMaterial>() .register_asset_reflect::<StandardMaterial>()
.register_type::<AmbientLight>() .register_type::<AmbientLight>()
.register_type::<DirectionalLightShadowMap>() .register_type::<DirectionalLightShadowMap>()
.register_type::<ClusterConfig>()
.register_type::<ClusterZConfig>()
.register_type::<ClusterFarZMode>()
.register_type::<PointLightShadowMap>() .register_type::<PointLightShadowMap>()
.add_plugin(MeshRenderPlugin) .add_plugin(MeshRenderPlugin)
.add_plugin(MaterialPlugin::<StandardMaterial>::default()) .add_plugin(MaterialPlugin::<StandardMaterial>::default())

View File

@ -308,7 +308,7 @@ pub enum SimulationLightSystems {
/// Configure the far z-plane mode used for the furthest depth slice for clustered forward /// Configure the far z-plane mode used for the furthest depth slice for clustered forward
/// rendering /// rendering
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone, Reflect, FromReflect)]
pub enum ClusterFarZMode { pub enum ClusterFarZMode {
/// Calculate the required maximum z-depth based on currently visible lights. /// Calculate the required maximum z-depth based on currently visible lights.
/// Makes better use of available clusters, speeding up GPU lighting operations /// Makes better use of available clusters, speeding up GPU lighting operations
@ -320,7 +320,8 @@ pub enum ClusterFarZMode {
} }
/// Configure the depth-slicing strategy for clustered forward rendering /// Configure the depth-slicing strategy for clustered forward rendering
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone, Reflect, FromReflect)]
#[reflect(Default)]
pub struct ClusterZConfig { pub struct ClusterZConfig {
/// Far `Z` plane of the first depth slice /// Far `Z` plane of the first depth slice
pub first_slice_depth: f32, pub first_slice_depth: f32,
@ -338,7 +339,8 @@ impl Default for ClusterZConfig {
} }
/// Configuration of the clustering strategy for clustered forward rendering /// 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 { pub enum ClusterConfig {
/// Disable light cluster calculations for this view /// Disable light cluster calculations for this view
None, None,