Skip to content

Commit be84baa

Browse files
authored
specialize texture format on HDR (#184)
1 parent a303422 commit be84baa

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/render/mod.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use bevy::{
2323
VertexBufferLayout, VertexFormat, VertexState, VertexStepMode,
2424
},
2525
texture::BevyDefault,
26-
view::{ComputedVisibility, Msaa, VisibleEntities},
26+
view::{ComputedVisibility, ExtractedView, Msaa, ViewTarget, VisibleEntities},
2727
Extract, RenderApp, RenderStage,
2828
},
2929
sprite::{
@@ -86,7 +86,11 @@ impl SpecializedRenderPipeline for ShapePipeline {
8686
shader_defs: Vec::new(),
8787
entry_point: "fragment".into(),
8888
targets: vec![Some(ColorTargetState {
89-
format: TextureFormat::bevy_default(),
89+
format: if key.contains(Mesh2dPipelineKey::HDR) {
90+
ViewTarget::TEXTURE_FORMAT_HDR
91+
} else {
92+
TextureFormat::bevy_default()
93+
},
9094
blend: Some(BlendState::ALPHA_BLENDING),
9195
write_mask: ColorWrites::ALL,
9296
})],
@@ -185,19 +189,24 @@ fn queue_shape(
185189
msaa: Res<Msaa>,
186190
render_meshes: Res<RenderAssets<Mesh>>,
187191
shape: Query<(&Mesh2dHandle, &Mesh2dUniform), With<Shape>>,
188-
mut views: Query<(&VisibleEntities, &mut RenderPhase<Transparent2d>)>,
192+
mut views: Query<(
193+
&ExtractedView,
194+
&VisibleEntities,
195+
&mut RenderPhase<Transparent2d>,
196+
)>,
189197
) {
190198
if shape.is_empty() {
191199
return;
192200
}
193201
// Iterate each view (a camera is a view)
194-
for (visible_entities, mut transparent_phase) in views.iter_mut() {
202+
for (view, visible_entities, mut transparent_phase) in views.iter_mut() {
195203
let draw_shape = transparent_draw_functions
196204
.read()
197205
.get_id::<DrawShape>()
198206
.unwrap();
199207

200-
let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples);
208+
let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples)
209+
| Mesh2dPipelineKey::from_hdr(view.hdr);
201210

202211
// Queue all entities visible to that view
203212
for visible_entity in &visible_entities.entities {

0 commit comments

Comments
 (0)