Rev Diagnostics
A runtime performance overlay you drop in and forget about
- Unreleased
- Tool
- Unity 2021.3 LTS+ · Built-in, URP, HDRP · IMGUI
- Free
- C# · IMGUI · Assembly definitions · No required packages
An overlay that tells you how your game is actually performing, in the editor and in release builds, with no setup and no prefab to wire up.
A profiler. It tells you a frame was expensive and which side of the machine paid for it — it will not tell you which method to go and fix.
Drop it in
One component in a scene, or one line of code, and the overlay is up. There is no prefab to wire, no settings asset to create, and no per-frame garbage of its own — sampling is allocation-tested and the panel does not format strings every frame.
It runs in release builds, not just the editor. Most of the numbers below are worth far more on a device than on your workstation.
What it shows
Performance — current FPS, time-weighted average, 1% low, and frame time, on a live scrolling graph with a configurable target line. Crucially it also shows V-Sync, the target frame rate and the time scale, so a capped frame rate finally explains itself instead of looking like a mystery.
CPU vs GPU — the frame’s time split across both, so a bad frame comes with the side of the machine that caused it. In release builds, with no Player Settings change.
Render — draw calls, batches, SetPass calls, triangles, vertices.
Memory — allocated, reserved and Mono usage, plus GC allocated per frame with its own sparkline, which is how you spot a leak before it becomes a stutter.
Console — the recent log messages themselves, with stack traces, on screen, on the device. Colour-coded, filterable, click a line to expand it. For debugging something with no console attached, this is the whole feature.
Audio — output loudness in dBFS, peak, and a live frequency spectrum.
Environment — Unity version, render pipeline, platform, resolution, refresh rate, graphics API and device, CPU, system and graphics memory, quality level, build type and scripting backend, and your app version.
That last section is the quiet one that matters: it means a screenshot of the overlay is a complete bug report on its own.
It does more than watch
Alerts. Define a rule — FPS below 30 for 5 seconds — and have it take a screenshot, write to the console, pause the editor, or call your own code. Hitches get caught at the moment they happen rather than reconstructed afterwards from a description.
Your own metrics. One line:
RevMetrics.Track("Enemies", () => enemies.Count);
It appears alongside the engine stats, with the same threshold colour-coding. Your gameplay numbers and the engine’s numbers, on the same screen, on the same frame.
Screenshots. One click or F2 grabs the game view with the overlay included.
Fit and finish
Themeable — Default, Large Text, High Contrast and Compact presets, plus full control over fonts, colours, thresholds and spacing. One combined scrollable window, or separate snap-aligned panels that auto-tile out of overlapping layouts. Every section, the graph and the footer can be toggled at runtime without recompiling.
It ships in its own assembly definitions, requires no packages, and never spams your console.
One detail worth mentioning
The release test suite contains a gate called LinksReleaseGateTests. It
fails the build if any link in the package points somewhere other than where
it claims to go — a leftover placeholder, or a redirect standing in for the
real page.
It exists because a documentation link that quietly rots is a small lie told to everyone who clicks it, and the only reliable way to not ship one is to make the build refuse.