[Update] Level Benchmark V2 - Budgets, CI Regression Gating, and a Nanite/Lumen Advisor

Hey yall, Level Benchmark just got its biggest update since launch. If you haven’t seen it before: it’s an editor-only plugin that scans your currently-loaded level and hands back a single report on what’s actually costing you frame time - mesh/light/landscape stats, GPU pass timing, shader complexity and overdraw, all cross-referenced back to the actual actors responsible. V2 turns that from a one-off diagnostic into something you can hold a project to over time.

What’s new in V2

  • Configurable budgets with pass/fail - set your own thresholds for tri count, GPU time, shader complexity, overdraw, and texture memory. Mobile/Console/PC presets to start from, fully editable per-project. Every run now gives you a clear pass or fail instead of just raw numbers to eyeball.
  • CI regression gating - LevelBenchmark. Run now takes -CompareBaseline= and -FailOnRegressionPct= flags. Run it headless from a CI pipeline and get a non-zero exit code if a level regressed past your threshold. Plain LevelBenchmark. Run with no flags behaves exactly as before.
  • Nanite & Lumen advisor - flags Nanite enabled on meshes too low-poly to be worth the overhead, and materials with World Position Offset connected on a Nanite mesh (extra lighting cost you probably didn’t intend). GPU Pass Timing now also breaks out Lumen’s specific share of your frame time.
  • Texture streaming audit - live streaming pool size and how far over budget it is, read straight from the engine’s own streaming manager, shown as a new stat card.
  • Real grid-sampled shader complexity/overdraw - replaced the old fixed 2-3 sample points with a grid across the level’s actual bounds (up to 12 points), for genuine spatial coverage instead of a handful of guesses.
  • Fixed: estimated texture memory now counts landscape material textures too (previously static-mesh materials only - landscape-heavy levels were being undercounted).
  • Fixed: GPU Pass Breakdown no longer clutters with near-zero entries.

The Core Feature Set: (If you are new here)

  • Static pass (no PIE): per-mesh tri/LOD/material counts, texture resolution, collision, Nanite status, instanced/foliage-aware effective tri counts
  • Landscape scan and light scan (mobility, shadow casting, overlap/shadow-cluster detection)
  • Material cost ranking - which materials are actually driving shader complexity and overdraw
  • Real GPU pass timing, shader complexity, and overdraw, captured in PIE
  • Per-light GPU cost - isolates a single light’s cost by toggling it and diffing GPU time

Requirements

  • UE 5.7 or 5.8
  • Windows (built and tested on Windows; other platforms untested)
  • Editor-only - adds nothing to packaged builds

Get it on Fab: Level Benchmark | Fab

Docs: GitHub - Imloopdev/Level-Benchmark-UE5: Editor only tool that benchmarks the currently loaded level and gives relevant info on how to optimize the level · GitHub

Happy to answer questions, and if you hit something the report doesn’t catch or want to see a specific check added, let me know. The CI gating and budget features in this update both came directly out of researching what people are actually running into on UE5 projects right now, so I’d rather build toward real problems than guess.