Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::sync::Mutex;
use crate::contrast_adaptive_sharpening::ViewCasPipeline;
use bevy_ecs::prelude::*;
use bevy_render::{
diagnostic::RecordDiagnostics,
extract_component::{ComponentUniforms, DynamicUniformIndex},
render_graph::{Node, NodeRunError, RenderGraphContext},
render_resource::{
Expand Down Expand Up @@ -66,6 +67,8 @@ impl Node for CasNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let view_target = target.post_process_write();
let source = view_target.source;
let destination = view_target.destination;
Expand Down Expand Up @@ -110,11 +113,14 @@ impl Node for CasNode {
let mut render_pass = render_context
.command_encoder()
.begin_render_pass(&pass_descriptor);
let pass_span = diagnostics.time_span(&mut render_pass, "contrast_adaptive_sharpening");

render_pass.set_pipeline(pipeline);
render_pass.set_bind_group(0, bind_group, &[uniform_index.index()]);
render_pass.draw(0..3, 0..1);

pass_span.end(&mut render_pass);

Ok(())
}
}
8 changes: 7 additions & 1 deletion crates/bevy_anti_aliasing/src/fxaa/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::sync::Mutex;
use crate::fxaa::{CameraFxaaPipeline, Fxaa, FxaaPipeline};
use bevy_ecs::{prelude::*, query::QueryItem};
use bevy_render::{
diagnostic::RecordDiagnostics,
render_graph::{NodeRunError, RenderGraphContext, ViewNode},
render_resource::{
BindGroup, BindGroupEntries, Operations, PipelineCache, RenderPassColorAttachment,
Expand Down Expand Up @@ -42,6 +43,8 @@ impl ViewNode for FxaaNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let post_process = target.post_process_write();
let source = post_process.source;
let destination = post_process.destination;
Expand All @@ -61,7 +64,7 @@ impl ViewNode for FxaaNode {
};

let pass_descriptor = RenderPassDescriptor {
label: Some("fxaa_pass"),
label: Some("fxaa"),
color_attachments: &[Some(RenderPassColorAttachment {
view: destination,
depth_slice: None,
Expand All @@ -76,11 +79,14 @@ impl ViewNode for FxaaNode {
let mut render_pass = render_context
.command_encoder()
.begin_render_pass(&pass_descriptor);
let pass_span = diagnostics.pass_span(&mut render_pass, "fxaa");

render_pass.set_pipeline(pipeline);
render_pass.set_bind_group(0, bind_group, &[]);
render_pass.draw(0..3, 0..1);

pass_span.end(&mut render_pass);

Ok(())
}
}
8 changes: 8 additions & 0 deletions crates/bevy_anti_aliasing/src/smaa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ use bevy_math::{vec4, Vec4};
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
use bevy_render::{
camera::ExtractedCamera,
diagnostic::RecordDiagnostics,
extract_component::{ExtractComponent, ExtractComponentPlugin},
render_asset::RenderAssets,
render_graph::{
Expand Down Expand Up @@ -824,6 +825,10 @@ impl ViewNode for SmaaNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();
render_context.command_encoder().push_debug_group("smaa");
let time_span = diagnostics.time_span(render_context.command_encoder(), "smaa");

// Fetch the framebuffer textures.
let postprocess = view_target.post_process_write();
let (source, destination) = (postprocess.source, postprocess.destination);
Expand Down Expand Up @@ -864,6 +869,9 @@ impl ViewNode for SmaaNode {
destination,
);

time_span.end(render_context.command_encoder());
render_context.command_encoder().pop_debug_group();

Ok(())
}
}
Expand Down
10 changes: 9 additions & 1 deletion crates/bevy_anti_aliasing/src/taa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use bevy_math::vec2;
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
use bevy_render::{
camera::{ExtractedCamera, MipBias, TemporalJitter},
diagnostic::RecordDiagnostics,
prelude::{Camera, Projection},
render_graph::{NodeRunError, RenderGraphContext, RenderGraphExt, ViewNode, ViewNodeRunner},
render_resource::{
Expand Down Expand Up @@ -181,6 +182,9 @@ impl ViewNode for TemporalAntiAliasNode {
) else {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let view_target = view_target.post_process_write();

let taa_bind_group = render_context.render_device().create_bind_group(
Expand All @@ -198,7 +202,7 @@ impl ViewNode for TemporalAntiAliasNode {

{
let mut taa_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor {
label: Some("taa_pass"),
label: Some("taa"),
color_attachments: &[
Some(RenderPassColorAttachment {
view: view_target.destination,
Expand All @@ -217,12 +221,16 @@ impl ViewNode for TemporalAntiAliasNode {
timestamp_writes: None,
occlusion_query_set: None,
});
let pass_span = diagnostics.pass_span(&mut taa_pass, "taa");

taa_pass.set_render_pipeline(taa_pipeline);
taa_pass.set_bind_group(0, &taa_bind_group, &[]);
if let Some(viewport) = camera.viewport.as_ref() {
taa_pass.set_camera_viewport(viewport);
}
taa_pass.draw(0..3, 0..1);

pass_span.end(&mut taa_pass);
}

Ok(())
Expand Down
8 changes: 7 additions & 1 deletion crates/bevy_core_pipeline/src/auto_exposure/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ use bevy_ecs::{
world::{FromWorld, World},
};
use bevy_render::{
diagnostic::RecordDiagnostics,
globals::GlobalsBuffer,
render_asset::RenderAssets,
render_graph::*,
Expand Down Expand Up @@ -98,6 +99,8 @@ impl Node for AutoExposureNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let compute_bind_group = render_context.render_device().create_bind_group(
None,
&pipeline.histogram_layout,
Expand All @@ -122,9 +125,10 @@ impl Node for AutoExposureNode {
render_context
.command_encoder()
.begin_compute_pass(&ComputePassDescriptor {
label: Some("auto_exposure_pass"),
label: Some("auto_exposure"),
timestamp_writes: None,
});
let pass_span = diagnostics.time_span(&mut compute_pass, "auto_exposure");

compute_pass.set_bind_group(0, &compute_bind_group, &[view_uniform_offset.offset]);
compute_pass.set_pipeline(histogram_pipeline);
Expand All @@ -136,6 +140,8 @@ impl Node for AutoExposureNode {
compute_pass.set_pipeline(average_pipeline);
compute_pass.dispatch_workgroups(1, 1, 1);

pass_span.end(&mut compute_pass);

Ok(())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ impl ViewNode for MainOpaquePass2dNode {

// Render pass setup
let render_pass = command_encoder.begin_render_pass(&RenderPassDescriptor {
label: Some("main_opaque_pass_2d"),
label: Some("main_opaque_2d_pass"),
Comment thread
jf908 marked this conversation as resolved.
Outdated
color_attachments: &color_attachments,
depth_stencil_attachment,
timestamp_writes: None,
occlusion_query_set: None,
});
let mut render_pass = TrackedRenderPass::new(&render_device, render_pass);
let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_pass_2d");
let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_2d_pass");

if let Some(viewport) = camera.viewport.as_ref() {
render_pass.set_camera_viewport(viewport);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,15 @@ impl ViewNode for MainTransparentPass2dNode {
let _main_pass_2d = info_span!("main_transparent_pass_2d").entered();

let render_pass = command_encoder.begin_render_pass(&RenderPassDescriptor {
label: Some("main_transparent_pass_2d"),
label: Some("main_transparent_2d_pass"),
color_attachments: &color_attachments,
depth_stencil_attachment,
timestamp_writes: None,
occlusion_query_set: None,
});
let mut render_pass = TrackedRenderPass::new(&render_device, render_pass);

let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_pass_2d");
let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_2d_pass");

if let Some(viewport) = camera.viewport.as_ref() {
render_pass.set_camera_viewport(viewport);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@ impl ViewNode for MainOpaquePass3dNode {

// Render pass setup
let render_pass = command_encoder.begin_render_pass(&RenderPassDescriptor {
label: Some("main_opaque_pass_3d"),
label: Some("main_opaque_3d_pass"),
color_attachments: &color_attachments,
depth_stencil_attachment,
timestamp_writes: None,
occlusion_query_set: None,
});
let mut render_pass = TrackedRenderPass::new(&render_device, render_pass);
let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_pass_3d");
let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_3d_pass");

if let Some(viewport) =
Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use bevy_ecs::{prelude::*, query::QueryItem};
use bevy_image::ToExtents;
use bevy_render::{
camera::{ExtractedCamera, MainPassResolutionOverride},
diagnostic::RecordDiagnostics,
render_graph::{NodeRunError, RenderGraphContext, ViewNode},
render_phase::ViewSortedRenderPhases,
render_resource::{RenderPassDescriptor, StoreOp},
Expand Down Expand Up @@ -53,10 +54,12 @@ impl ViewNode for MainTransmissivePass3dNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let physical_target_size = camera.physical_target_size.unwrap();

let render_pass_descriptor = RenderPassDescriptor {
label: Some("main_transmissive_pass_3d"),
label: Some("main_transmissive_3d_pass"),
color_attachments: &[Some(target.get_color_attachment())],
depth_stencil_attachment: Some(depth.get_attachment(StoreOp::Store)),
timestamp_writes: None,
Expand Down Expand Up @@ -95,6 +98,8 @@ impl ViewNode for MainTransmissivePass3dNode {

let mut render_pass =
render_context.begin_tracked_render_pass(render_pass_descriptor.clone());
let pass_span =
diagnostics.pass_span(&mut render_pass, "main_transmissive_3d_pass");

if let Some(viewport) = camera.viewport.as_ref() {
render_pass.set_camera_viewport(viewport);
Expand All @@ -106,10 +111,14 @@ impl ViewNode for MainTransmissivePass3dNode {
{
error!("Error encountered while rendering the transmissive phase {err:?}");
}

pass_span.end(&mut render_pass);
}
} else {
let mut render_pass =
render_context.begin_tracked_render_pass(render_pass_descriptor);
let pass_span =
diagnostics.pass_span(&mut render_pass, "main_transmissive_3d_pass");

if let Some(viewport) = Viewport::from_viewport_and_override(
camera.viewport.as_ref(),
Expand All @@ -121,6 +130,8 @@ impl ViewNode for MainTransmissivePass3dNode {
if let Err(err) = transmissive_phase.render(&mut render_pass, world, view_entity) {
error!("Error encountered while rendering the transmissive phase {err:?}");
}

pass_span.end(&mut render_pass);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ impl ViewNode for MainTransparentPass3dNode {
let diagnostics = render_context.diagnostic_recorder();

let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor {
label: Some("main_transparent_pass_3d"),
label: Some("main_transparent_3d_pass"),
color_attachments: &[Some(target.get_color_attachment())],
// NOTE: For the transparent pass we load the depth buffer. There should be no
// need to write to it, but store is set to `true` as a workaround for issue #3776,
Expand All @@ -68,7 +68,7 @@ impl ViewNode for MainTransparentPass3dNode {
occlusion_query_set: None,
});

let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_pass_3d");
let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_3d_pass");

if let Some(viewport) =
Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override)
Expand Down
9 changes: 8 additions & 1 deletion crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use bevy_ecs::prelude::*;
use bevy_image::ToExtents;
use bevy_render::{
camera::ExtractedCamera,
diagnostic::RecordDiagnostics,
render_resource::{binding_types::texture_2d, *},
renderer::RenderDevice,
texture::{CachedTexture, TextureCache},
Expand Down Expand Up @@ -77,14 +78,16 @@ impl ViewNode for CopyDeferredLightingIdNode {
return Ok(());
};

let diagnostics = render_context.diagnostic_recorder();

let bind_group = render_context.render_device().create_bind_group(
"copy_deferred_lighting_id_bind_group",
&copy_deferred_lighting_id_pipeline.layout,
&BindGroupEntries::single(&deferred_lighting_pass_id_texture.texture.default_view),
);

let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor {
label: Some("copy_deferred_lighting_id_pass"),
label: Some("copy_deferred_lighting_id"),
color_attachments: &[],
depth_stencil_attachment: Some(RenderPassDepthStencilAttachment {
view: &deferred_lighting_id_depth_texture.texture.default_view,
Expand All @@ -98,10 +101,14 @@ impl ViewNode for CopyDeferredLightingIdNode {
occlusion_query_set: None,
});

let pass_span = diagnostics.pass_span(&mut render_pass, "copy_deferred_lighting_id");

render_pass.set_render_pipeline(pipeline);
render_pass.set_bind_group(0, &bind_group, &[]);
render_pass.draw(0..3, 0..1);

pass_span.end(&mut render_pass);

Ok(())
}
}
Expand Down
5 changes: 5 additions & 0 deletions crates/bevy_core_pipeline/src/deferred/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use bevy_render::render_graph::ViewNode;
use bevy_render::view::{ExtractedView, NoIndirectDrawing};
use bevy_render::{
camera::ExtractedCamera,
diagnostic::RecordDiagnostics,
render_graph::{NodeRunError, RenderGraphContext},
render_phase::{TrackedRenderPass, ViewBinnedRenderPhases},
render_resource::{CommandEncoderDescriptor, RenderPassDescriptor, StoreOp},
Expand Down Expand Up @@ -131,6 +132,8 @@ fn run_deferred_prepass<'w>(
return Ok(());
};

let diagnostic = render_context.diagnostic_recorder();

let mut color_attachments = vec![];
color_attachments.push(
view_prepass_textures
Expand Down Expand Up @@ -223,6 +226,7 @@ fn run_deferred_prepass<'w>(
occlusion_query_set: None,
});
let mut render_pass = TrackedRenderPass::new(&render_device, render_pass);
let pass_span = diagnostic.pass_span(&mut render_pass, label);
if let Some(viewport) =
Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override)
{
Expand Down Expand Up @@ -251,6 +255,7 @@ fn run_deferred_prepass<'w>(
}
}

pass_span.end(&mut render_pass);
drop(render_pass);

// After rendering to the view depth texture, copy it to the prepass depth texture
Expand Down
Loading
Loading