-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Bloom not restricted to cameras with BloomSettings? #7361
Copy link
Copy link
Closed
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenC-BugAn unexpected or incorrect behaviorAn unexpected or incorrect behavior
Description
Bevy version
- latest main
- bevy 0.9
- PR [Merged by Bors] - Revamp Bloom #6677 as of 1/27
Relevant system information
AdapterInfo { name: "Apple M1 Max", vendor: 0, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Metal }
SystemInfo { os: "MacOS 13.1 ", kernel: "22.2.0", cpu: "Apple M1 Max", core_count: "10", memory: "64.0 GiB" }
What you did
I want bloom to be applied only to a subset of my scene, so I added a separate camera with BloomSettings.
use bevy::{
core_pipeline::{bloom::BloomSettings, clear_color::ClearColorConfig},
prelude::*,
render::view::RenderLayers,
sprite::MaterialMesh2dBundle,
};
fn main() {
App::new()
.insert_resource(ClearColor(Color::rgb(0.1, 0.1, 0.1)))
.add_plugins(DefaultPlugins)
.add_startup_system(setup)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>,
) {
let no_bloom_layer = RenderLayers::layer(0);
let bloom_layer = RenderLayers::layer(1);
commands.spawn((
Camera2dBundle {
camera: Camera {
hdr: true,
..default()
},
..default()
},
no_bloom_layer,
));
commands.spawn((
Camera2dBundle {
camera_2d: Camera2d {
clear_color: ClearColorConfig::None,
..default()
},
camera: Camera {
hdr: true,
order: 1,
..default()
},
..default()
},
bloom_layer,
BloomSettings {
threshold: 0.5,
..default()
},
));
let (saturation, lightness, alpha) = (0.8, 0.7, 1.0);
// Circle
commands.spawn((
MaterialMesh2dBundle {
mesh: meshes.add(shape::Circle::new(100.).into()).into(),
material: materials.add(ColorMaterial::from(Color::Hsla {
hue: 180.,
saturation,
lightness,
alpha,
})),
transform: Transform::from_translation(Vec3::new(-125., 0., 0.)),
..default()
},
no_bloom_layer,
));
// Hexagon
commands.spawn((
MaterialMesh2dBundle {
mesh: meshes
.add(shape::RegularPolygon::new(100., 6).into())
.into(),
material: materials.add(ColorMaterial::from(Color::Hsla {
hue: 120.,
saturation,
lightness,
alpha,
})),
transform: Transform::from_translation(Vec3::new(125., 0., 0.)),
..default()
},
bloom_layer,
));
}What went wrong
BloomSettings is only on the camera that renders the hexagon, so I expected only the hexagon to get bloom.
Instead, both shapes get bloom.
Additional information
It's not clear if this is user error, a known limitation, or a bug.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenC-BugAn unexpected or incorrect behaviorAn unexpected or incorrect behavior
