Skip to content

Commit badca1c

Browse files
authored
move Hdr to bevy_camera (#22683)
# Objective - whether a Camera needs to draw Hdr content or not is an aspect of scene description - as such, it should live in a non-rendering crate ## Solution - move it to bevy_camera - dont extract it to the render world anymore. audited all usages of it and none are in the render world queries, instead `ExtractedCamera::hdr` is used. ## Testing - manual spot check of a few examples - example runner regression test
1 parent 6b175cf commit badca1c

File tree

30 files changed

+60
-50
lines changed

30 files changed

+60
-50
lines changed

crates/bevy_anti_alias/src/dlss/extract.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use super::{prepare::DlssRenderContext, Dlss, DlssFeature};
2-
use bevy_camera::{Camera, MainPassResolutionOverride, Projection};
2+
use bevy_camera::{Camera, Hdr, MainPassResolutionOverride, Projection};
33
use bevy_ecs::{
44
query::{Has, With},
55
system::{Commands, Query, ResMut},
66
};
7-
use bevy_render::{sync_world::RenderEntity, view::Hdr, MainWorld};
7+
use bevy_render::{sync_world::RenderEntity, MainWorld};
88

99
pub fn extract_dlss<F: DlssFeature>(
1010
mut commands: Commands,

crates/bevy_camera/src/components.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ impl From<Camera3dDepthLoadOp> for LoadOp<f32> {
107107
}
108108
}
109109

110+
/// If this component is added to a camera, the camera will use an intermediate "high dynamic range" render texture.
111+
/// This allows rendering with a wider range of lighting values. However, this does *not* affect
112+
/// whether the camera will render with hdr display output (which bevy does not support currently)
113+
/// and only affects the intermediate render texture.
114+
#[derive(Component, Default, Copy, Clone, Reflect, PartialEq, Eq, Hash, Debug)]
115+
#[reflect(Component, Default, PartialEq, Hash, Debug)]
116+
pub struct Hdr;
117+
110118
/// The quality of the screen space transmission blur effect, applied to whatever's “behind” transmissive
111119
/// objects when their `roughness` is greater than `0.0`.
112120
///

crates/bevy_pbr/src/atmosphere/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub mod resources;
3939

4040
use bevy_app::{App, Plugin, Update};
4141
use bevy_asset::{embedded_asset, AssetId, Handle};
42-
use bevy_camera::Camera3d;
42+
use bevy_camera::{Camera3d, Hdr};
4343
use bevy_core_pipeline::core_3d::graph::Node3d;
4444
use bevy_ecs::{
4545
component::Component,
@@ -52,7 +52,6 @@ use bevy_reflect::{std_traits::ReflectDefault, Reflect};
5252
use bevy_render::{
5353
extract_component::UniformComponentPlugin,
5454
render_resource::{DownlevelFlags, ShaderType, SpecializedRenderPipelines},
55-
view::Hdr,
5655
RenderStartup,
5756
};
5857
use bevy_render::{

crates/bevy_post_process/src/auto_exposure/settings.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ use core::ops::RangeInclusive;
22

33
use super::compensation_curve::AutoExposureCompensationCurve;
44
use bevy_asset::Handle;
5+
use bevy_camera::Hdr;
56
use bevy_ecs::{prelude::Component, reflect::ReflectComponent};
67
use bevy_image::Image;
78
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
8-
use bevy_render::{extract_component::ExtractComponent, view::Hdr};
9+
use bevy_render::extract_component::ExtractComponent;
910
use bevy_utils::default;
1011

1112
/// Component that enables auto exposure for an HDR-enabled 2d or 3d camera.

crates/bevy_post_process/src/bloom/settings.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use super::downsampling_pipeline::BloomUniforms;
2-
use bevy_camera::Camera;
2+
use bevy_camera::{Camera, Hdr};
33
use bevy_ecs::{
44
prelude::Component,
55
query::{QueryItem, With},
66
reflect::ReflectComponent,
77
};
88
use bevy_math::{AspectRatio, URect, UVec4, Vec2, Vec4};
99
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
10-
use bevy_render::{extract_component::ExtractComponent, view::Hdr};
10+
use bevy_render::extract_component::ExtractComponent;
1111

1212
/// Applies a bloom effect to an HDR-enabled 2d or 3d camera.
1313
///

crates/bevy_render/src/camera.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::{
88
sync_world::{RenderEntity, SyncToRenderWorld},
99
texture::{GpuImage, ManualTextureViews},
1010
view::{
11-
ColorGrading, ExtractedView, ExtractedWindows, Hdr, Msaa, NoIndirectDrawing,
11+
ColorGrading, ExtractedView, ExtractedWindows, Msaa, NoIndirectDrawing,
1212
RenderVisibleEntities, RetainedViewEntity, ViewUniformOffset,
1313
},
1414
Extract, ExtractSchedule, Render, RenderApp, RenderSystems,
@@ -20,7 +20,7 @@ use bevy_camera::{
2020
primitives::Frustum,
2121
visibility::{self, RenderLayers, VisibleEntities},
2222
Camera, Camera2d, Camera3d, CameraMainTextureUsages, CameraOutputMode, CameraUpdateSystems,
23-
ClearColor, ClearColorConfig, Exposure, ManualTextureViewHandle, MsaaWriteback,
23+
ClearColor, ClearColorConfig, Exposure, Hdr, ManualTextureViewHandle, MsaaWriteback,
2424
NormalizedRenderTarget, Projection, RenderTarget, RenderTargetInfo, Viewport,
2525
};
2626
use bevy_derive::{Deref, DerefMut};

crates/bevy_render/src/view/mod.rs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ impl Plugin for ViewPlugin {
103103
app
104104
// NOTE: windows.is_changed() handles cases where a window was resized
105105
.add_plugins((
106-
ExtractComponentPlugin::<Hdr>::default(),
107106
ExtractComponentPlugin::<Msaa>::default(),
108107
ExtractComponentPlugin::<OcclusionCulling>::default(),
109108
RenderVisibilityRangePlugin,
@@ -191,16 +190,6 @@ impl Msaa {
191190
}
192191
}
193192

194-
/// If this component is added to a camera, the camera will use an intermediate "high dynamic range" render texture.
195-
/// This allows rendering with a wider range of lighting values. However, this does *not* affect
196-
/// whether the camera will render with hdr display output (which bevy does not support currently)
197-
/// and only affects the intermediate render texture.
198-
#[derive(
199-
Component, Default, Copy, Clone, ExtractComponent, Reflect, PartialEq, Eq, Hash, Debug,
200-
)]
201-
#[reflect(Component, Default, PartialEq, Hash, Debug)]
202-
pub struct Hdr;
203-
204193
/// An identifier for a view that is stable across frames.
205194
///
206195
/// We can't use [`Entity`] for this because render world entities aren't

crates/bevy_solari/src/pathtracer/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ mod prepare;
55
use crate::SolariPlugins;
66
use bevy_app::{App, Plugin};
77
use bevy_asset::embedded_asset;
8+
use bevy_camera::Hdr;
89
use bevy_core_pipeline::core_3d::graph::{Core3d, Node3d};
910
use bevy_ecs::{component::Component, reflect::ReflectComponent, schedule::IntoScheduleConfigs};
1011
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
1112
use bevy_render::{
1213
render_graph::{RenderGraphExt, ViewNodeRunner},
1314
renderer::RenderDevice,
14-
view::Hdr,
1515
ExtractSchedule, Render, RenderApp, RenderSystems,
1616
};
1717
use extract::extract_pathtracer;

crates/bevy_solari/src/realtime/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ mod prepare;
55
use crate::SolariPlugins;
66
use bevy_app::{App, Plugin};
77
use bevy_asset::embedded_asset;
8+
use bevy_camera::Hdr;
89
use bevy_core_pipeline::{
910
core_3d::graph::{Core3d, Node3d},
1011
prepass::{
@@ -18,7 +19,6 @@ use bevy_reflect::{std_traits::ReflectDefault, Reflect};
1819
use bevy_render::{
1920
render_graph::{RenderGraphExt, ViewNodeRunner},
2021
renderer::RenderDevice,
21-
view::Hdr,
2222
ExtractSchedule, Render, RenderApp, RenderSystems,
2323
};
2424
use bevy_shader::load_shader_library;

crates/bevy_ui_render/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub mod ui_texture_slice_pipeline;
2020
mod debug_overlay;
2121

2222
use bevy_camera::visibility::InheritedVisibility;
23-
use bevy_camera::{Camera, Camera2d, Camera3d, RenderTarget};
23+
use bevy_camera::{Camera, Camera2d, Camera3d, Hdr, RenderTarget};
2424
use bevy_reflect::prelude::ReflectDefault;
2525
use bevy_reflect::Reflect;
2626
use bevy_shader::load_shader_library;
@@ -51,7 +51,7 @@ use bevy_render::{
5151
renderer::{RenderContext, RenderDevice, RenderQueue},
5252
sync_world::{MainEntity, RenderEntity, TemporaryRenderEntity},
5353
texture::GpuImage,
54-
view::{ExtractedView, Hdr, RetainedViewEntity, ViewUniforms},
54+
view::{ExtractedView, RetainedViewEntity, ViewUniforms},
5555
Extract, ExtractSchedule, Render, RenderApp, RenderStartup, RenderSystems,
5656
};
5757
use bevy_sprite::BorderRect;

0 commit comments

Comments
 (0)