Title: UE 5.5.4 — Supported method for per-system Niagara GPU attribution aligned with CSV Profiler captures?
We are working on an Unreal Engine 5.5.4 project using controller-driven Niagara GPU volumetric smoke and are looking for the engine-supported way to automate verification and attribution.
Goal
We need to verify, during controlled test runs:
- which Niagara smoke system/scene is actually contributing;
- positive contributor/system identity;
- activation and stop timing;
- residual behavior after stop;
- restart/recovery behavior;
- correlation of that information with a CSV Profiler capture;
- deterministic output suitable for regression testing.
The smoke must continue to be driven through the actual application/controller path. We do not want to use Niagara global playback controls or another mechanism that bypasses the production control route simply to make the effect appear.
Environment
- Unreal Engine 5.5.4
- Windows
- GPU Niagara volumetric smoke
- Live resources have been observed as genuine 3D render targets, including PF_R16F volumes
- Testing is intended to be automated/repeatable rather than dependent entirely on manual visual inspection
What we tried
We investigated building a local diagnostic observer around the smoke system and CSV capture lifecycle.
During that work we encountered several implementation-specific issues, including:
- plugin compatibility/admission behavior involving an observer declaring 5.5.4 while the engine compatibility path evaluated against 5.5.0;
- a local C++ FFrame type colliding with Unreal’s global FFrame;
- difficulty obtaining reliable scene-by-scene attribution synchronized with CSV capture boundaries.
We are not claiming those local implementation problems are necessarily Unreal Engine bugs. They are included only to explain why we are looking for the supported engine-level approach rather than continuing to build a custom observer.
Questions
- Is fx.NiagaraPerfReporting 2 intended to provide reliable per-system or per-instance Niagara identity that can be correlated with a CSV Profiler capture?
- If not, is Unreal Insights / Niagara Insights / Niagara Debugger the recommended source for this level of attribution?
- Is there a supported C++ API for obtaining Niagara system-instance/emitter identity and GPU workload/resource activity on a per-frame basis during an automated test?
- Is there a recommended way to align that data with the CSV Profiler capture lifecycle, including the exact first/last captured frame?
- Are there known capture-boundary or trailing-frame caveats in UE 5.5.x that should be accounted for when correlating CSV data with render-thread/Niagara measurements?
- Is there an existing engine facility, Automation Framework/Gauntlet integration, or profiling interface that would avoid requiring a custom native observer for this use case?
- If CSV Profiler is intentionally too coarse for this kind of attribution, what combination of Unreal Insights/Niagara profiling APIs would Epic recommend for deterministic regression verification?
Desired outcome
We are not looking for a way to change or simplify the smoke effect itself.
We are looking for the most robust engine-supported instrumentation path for proving:
controller command → intended Niagara contributor → visible/GPU activity → stop/residual behavior → recovery
in a way that can later be automated as part of regression testing.
Any guidance on the preferred UE 5.5.4 APIs, profiler tools, engine source locations, or example implementations would be greatly appreciated.