Skip to content

Commit c809779

Browse files
Fix crash when enabling HDR on 2d cameras (#8151)
I forgot to specialize the 2d gizmo pipeline on HDR. Oops.
1 parent caa6622 commit c809779

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

crates/bevy_gizmos/src/pipeline_2d.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use bevy_render::{
1212
render_phase::{DrawFunctions, RenderPhase, SetItemPipeline},
1313
render_resource::*,
1414
texture::BevyDefault,
15-
view::Msaa,
15+
view::{ExtractedView, Msaa, ViewTarget},
1616
};
1717
use bevy_sprite::*;
1818
use bevy_utils::FloatOrd;
@@ -47,6 +47,12 @@ impl SpecializedMeshPipeline for GizmoLinePipeline {
4747
Mesh::ATTRIBUTE_COLOR.at_shader_location(1),
4848
])?;
4949

50+
let format = if key.contains(Mesh2dPipelineKey::HDR) {
51+
ViewTarget::TEXTURE_FORMAT_HDR
52+
} else {
53+
TextureFormat::bevy_default()
54+
};
55+
5056
Ok(RenderPipelineDescriptor {
5157
vertex: VertexState {
5258
shader: self.shader.clone_weak(),
@@ -59,7 +65,7 @@ impl SpecializedMeshPipeline for GizmoLinePipeline {
5965
shader_defs: vec![],
6066
entry_point: "fragment".into(),
6167
targets: vec![Some(ColorTargetState {
62-
format: TextureFormat::bevy_default(),
68+
format,
6369
blend: Some(BlendState::ALPHA_BLENDING),
6470
write_mask: ColorWrites::ALL,
6571
})],
@@ -97,11 +103,12 @@ pub(crate) fn queue_gizmos_2d(
97103
gpu_meshes: Res<RenderAssets<Mesh>>,
98104
msaa: Res<Msaa>,
99105
mesh_handles: Query<(Entity, &Mesh2dHandle), With<GizmoMesh>>,
100-
mut views: Query<&mut RenderPhase<Transparent2d>>,
106+
mut views: Query<(&ExtractedView, &mut RenderPhase<Transparent2d>)>,
101107
) {
102108
let draw_function = draw_functions.read().get_id::<DrawGizmoLines>().unwrap();
103109
let key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples());
104-
for mut phase in &mut views {
110+
for (view, mut phase) in &mut views {
111+
let key = key | Mesh2dPipelineKey::from_hdr(view.hdr);
105112
for (entity, mesh_handle) in &mesh_handles {
106113
let Some(mesh) = gpu_meshes.get(&mesh_handle.0) else { continue; };
107114

0 commit comments

Comments
 (0)