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:
		
							parent
							
								
									0aa17d0aca
								
							
						
					
					
						commit
						4ad621fe0f
					
				@ -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;
 | 
			
		||||
@ -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) {
 | 
			
		||||
@ -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,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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())
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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,
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user