Repository navigation
Closed
Labels
A-DiagnosticsLogging, crash handling, error reporting and performance analysisLogging, crash handling, error reporting and performance analysisA-RenderingDrawing game state to the screenDrawing game state to the screenD-TrivialNice and easy! A great choice to get started with BevyNice and easy! A great choice to get started with BevyS-Waiting-on-AuthorThe author needs to make changes or address concerns before this can be mergedThe author needs to make changes or address concerns before this can be merged
Milestone
Description
https://dev-docs.bevyengine.org/bevy_render/diagnostic/struct.RenderDiagnosticsPlugin.html
Ideally we nest the diagnostics so that each view has it's own diagnostic subpath, although we'll have to figure out how shadow passes fit into that, as well as non-view-specific nodes like MeshPreprocessing.
Also would be nice to further group by category, e.g. prepass/gbuffer, mainpass, post processing, etc.
Total path would look like /render/view_<NameOrEntityId>/main3d/opaque/gpu_time, using the Name component of the view if it's available, else the entity ID.
- Bloom
- MainOpaquePass2d
- MainTransparentPass2d
- MainOpaquePass3d
- MainTransparentPass3d
- Prepass
- ShadowPass
- AutoExposure
- RCAS
- MainTransmissivePass3d
- DeferredGBufferPrepass (+CopyDeferredLightingId?)
- DeferredOpaquePass3dPbrLighting
- DepthOfField
- FXAA
- MotionBlur
- OITResolve
- PostProcessing stack
- SMAA
- TAA
- MSAAWriteback
- Upscale
- Meshlet
- MeshletVisibilityBufferRasterPass (+subpass timings)
- MeshletMainOpaquePass3d, MeshletPrepass, MeshletDeferredGBufferPrepass
- SSAO
- SSR
- VolumetricFog
- GpuPreprocess
- UI
- Tonemapping
- CameraDriver(?)
Metadata
Metadata
Assignees
Labels
A-DiagnosticsLogging, crash handling, error reporting and performance analysisLogging, crash handling, error reporting and performance analysisA-RenderingDrawing game state to the screenDrawing game state to the screenD-TrivialNice and easy! A great choice to get started with BevyNice and easy! A great choice to get started with BevyS-Waiting-on-AuthorThe author needs to make changes or address concerns before this can be mergedThe author needs to make changes or address concerns before this can be merged
Activity
jf908 commentedon May 9, 2025
I'm interested in implementing this.
Any ideas on how to implement the nesting? I'm not immediately seeing any easy way to propagate the timestamps up to form groups. Would it be fine to just do the passes individually for now deal with the nesting in a follow up?
JMS55 commentedon May 9, 2025
It's been a bit since I've looked, but I think that nesting works automatically for Bevy render diagnostics, i.e. what goes into bevy_diagnostics and later gets printed out to the terminal with log diagnostics plugin or whatever.
For the tracy GPU integration, I think I was able to get nesting working, but it just looked a little weird.
Honestly can't really remember, you'll just have to play around with it and see what works or not.
Totally fine to leave nesting as a followup (or for someone else to do in the future) though!
JMS55 commentedon May 9, 2025
Some other comments:
bevy/crates/bevy_render/src/diagnostic/internal.rs
Line 490 in 732b2e0
Record render diagnostics for all engine passes (#19191)
Merge 'main' into 'next-gen-scenes' (#43)