Skip to content

Commit ce474fd

Browse files
committed
No depth in 2D
1 parent f6262c6 commit ce474fd

File tree

4 files changed

+27
-32
lines changed

4 files changed

+27
-32
lines changed

crates/bevy_debug_draw/src/debuglines.wgsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn vertex(in: VertexInput) -> VertexOutput {
3333
fn fragment(in: VertexOutput) -> FragmentOutput {
3434
var out: FragmentOutput;
3535

36-
#ifdef DEPTH_TEST_ENABLED
36+
#ifdef DEPTH_TEST
3737
out.depth = in.pos.z;
3838
#else
3939
out.depth = 1.0;

crates/bevy_debug_draw/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl Plugin for DebugDrawPlugin {
4545

4646
app.init_resource::<DebugDraw>()
4747
.init_resource::<DebugDrawConfig>()
48-
.add_system_to_stage(CoreStage::PostUpdate, update)
48+
.add_system_to_stage(CoreStage::Last, update)
4949
.sub_app_mut(RenderApp)
5050
.add_system_to_stage(RenderStage::Extract, extract);
5151

@@ -82,6 +82,8 @@ pub struct DebugDrawConfig {
8282
/// Defaults to `true`.
8383
pub enabled: bool,
8484
/// Whether debug drawing should ignore depth and draw on top of everything else.
85+
///
86+
/// This setting only affects 3D. In 2D, debug drawing is always on top.
8587
///
8688
/// Defaults to `true`.
8789
pub always_on_top: bool,

crates/bevy_debug_draw/src/pipeline_2d.rs

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use bevy_render::{
1616
use bevy_sprite::*;
1717
use bevy_utils::FloatOrd;
1818

19-
use crate::{DebugDrawConfig, DebugDrawMesh, SHADER_HANDLE};
19+
use crate::{DebugDrawMesh, SHADER_HANDLE};
2020

2121
#[derive(Resource)]
2222
pub(crate) struct DebugLinePipeline {
@@ -93,47 +93,40 @@ pub(crate) type DrawDebugLines = (
9393

9494
#[allow(clippy::too_many_arguments)]
9595
pub(crate) fn queue(
96-
config: Res<DebugDrawConfig>,
9796
draw2d_functions: Res<DrawFunctions<Transparent2d>>,
9897
debug_line_pipeline: Res<DebugLinePipeline>,
9998
mut pipeline_cache: ResMut<PipelineCache>,
10099
mut specialized_pipelines: ResMut<SpecializedMeshPipelines<DebugLinePipeline>>,
101100
render_meshes: Res<RenderAssets<Mesh>>,
102101
msaa: Res<Msaa>,
103-
material_meshes: Query<(&Mesh2dUniform, &Mesh2dHandle), With<DebugDrawMesh>>,
102+
material_meshes: Query<&Mesh2dHandle, With<DebugDrawMesh>>,
104103
mut views: Query<(&VisibleEntities, &mut RenderPhase<Transparent2d>)>,
105104
) {
106105
for (view, mut phase) in &mut views {
107106
let draw_mesh2d = draw2d_functions.read().get_id::<DrawDebugLines>().unwrap();
108107
let msaa_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples);
109108

110109
for visible_entity in &view.entities {
111-
if let Ok((uniform, mesh_handle)) = material_meshes.get(*visible_entity) {
112-
if let Some(mesh) = render_meshes.get(&mesh_handle.0) {
113-
let mesh_key = msaa_key
114-
| Mesh2dPipelineKey::from_primitive_topology(PrimitiveTopology::LineList);
115-
let mesh_z = if config.always_on_top {
116-
f32::MAX
117-
} else {
118-
uniform.transform.w_axis.z
119-
};
120-
let pipeline = specialized_pipelines
121-
.specialize(
122-
&mut pipeline_cache,
123-
&debug_line_pipeline,
124-
mesh_key,
125-
&mesh.layout,
126-
)
127-
.unwrap();
128-
phase.add(Transparent2d {
129-
entity: *visible_entity,
130-
draw_function: draw_mesh2d,
131-
pipeline,
132-
sort_key: FloatOrd(mesh_z),
133-
batch_range: None,
134-
});
135-
}
136-
}
110+
let Ok(mesh_handle) = material_meshes.get(*visible_entity) else { continue; };
111+
let Some(mesh) = render_meshes.get(&mesh_handle.0) else { continue; };
112+
113+
let mesh_key =
114+
msaa_key | Mesh2dPipelineKey::from_primitive_topology(PrimitiveTopology::LineList);
115+
let pipeline = specialized_pipelines
116+
.specialize(
117+
&mut pipeline_cache,
118+
&debug_line_pipeline,
119+
mesh_key,
120+
&mesh.layout,
121+
)
122+
.unwrap();
123+
phase.add(Transparent2d {
124+
entity: *visible_entity,
125+
draw_function: draw_mesh2d,
126+
pipeline,
127+
sort_key: FloatOrd(f32::MAX),
128+
batch_range: None,
129+
});
137130
}
138131
}
139132
}

crates/bevy_debug_draw/src/pipeline_3d.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl SpecializedMeshPipeline for DebugLinePipeline {
4545
let mut shader_defs = Vec::new();
4646
shader_defs.push("DEBUG_LINES_3D".to_string());
4747
if depth_test {
48-
shader_defs.push("DEPTH_TEST_ENABLED".to_string());
48+
shader_defs.push("DEPTH_TEST".to_string());
4949
}
5050

5151
let vertex_buffer_layout = layout.get_layout(&[

0 commit comments

Comments
 (0)