DocumentationAzkar Screen StatsPerformance And Platform Notes

Runtime guidance

Performance And Platform Notes

Review the bounded runtime design, retained pre-release performance and validation evidence, data behavior, and rendering limitations.

  • Runtime design
  • Retained measured scope
  • Pre-release validation matrix
  • Platform and rendering limits

Azkar Screen Stats is designed to keep its own work bounded and observable, but architecture is not a universal performance guarantee. Measure the overlay in the actual project, player, render pipeline, graphics API, and target device where it will be used.

Runtime Design

The normal visible path uses:

  • One package-owned, camera-positioned MeshRenderer, one material, and one mesh with one submesh.
  • A generated 5×7 bitmap atlas with explicit shared ownership.
  • Fixed-capacity character, graph, vertex, and index storage.
  • Lazily created fixed-capacity percentile scratch storage and four custom numeric slots.
  • Manual numeric formatting instead of per-update interpolated strings.
  • Configurable low-frequency text and graph mesh refreshes.
  • Section-aware frame timing and profiler recorders.
  • Lazy resource creation and explicit teardown.

When Build Scope disallows the player, the component does not create render resources or start recorders. While an allowed overlay is hidden, it performs no sampling, recorder, mesh, or repeated renderer-state work. Only an explicitly configured legacy toggle key retains its input poll.

Retained Pre-Release Performance Evidence

The measurements below came from earlier package trees. Treat them as implementation evidence, not verification of the final 1.0.0 artifact or current Asset Store release approval.

A controlled 17-scenario macOS Development-player profile exercised:

  • No-overlay and hidden states.
  • Standard metrics.
  • Active snapshot consumption.
  • Each optional feature.
  • An auto-fit case that actually reduced scale.
  • All options together.
  • Maximum cadence and geometry.
  • Repeated resource repair and teardown.

Every warmed capture reported zero GC.Alloc. A cold-hidden overlay owned no package resources or recorders, a warmed-hidden overlay owned no recorders, and every visible scenario retained one renderer/material/submesh resource set.

That profile used an empty-scene Built-in/Metal macOS player on one machine. Its CPU readings are whole-player values; draw and batch recorders were unavailable, and GPU execution time was not measured. Do not interpret the result as a universal cold-start, whole-project, all-platform, CPU-cost, GPU-cost, or every-configuration guarantee.

Retained Pre-Release Validation Evidence

The declared minimum editor version is 2021.3.45f2. Earlier package trees produced retained evidence for only these exact rows:

EnvironmentRetained result
Unity 2021.3.45f2, fresh macOS Built-in/Metal consumerPackage and shader compilation; 80/80 Edit tests; 27/27 graphics Play tests; sample import and compilation; 8/8 staged sample tests; 44/44 retained Publishing Tools 0.2.1 checks; and 27/27 Development Test Player tests.
Unity 6000.0.79f1, fresh macOS Built-in/Metal consumer80/80 Edit tests; 27/27 graphics Play tests; sample import and compilation; 8/8 staged sample tests; and 44/44 retained Publishing Tools 0.2.1 checks.
Unity 6000.4.3f1, macOS URP 17.4.0 host80/80 Edit tests and 27/27 graphics Play tests.
Unity 6000.5.2f1, macOS Built-in/Metal players27/27 Development Test Player tests, the 17-scenario profile above, and a separate non-Development Build Scope check.

Unity 2021.3.45f2 with URP, all HDRP configurations, XR, non-Metal graphics APIs, camera stacks, and physical mobile, console, and web targets remain unvalidated. An exact result from one Unity or URP version does not establish every later version or configuration.

Before publication, run the current Publishing Tools and release gates against the exact 1.0.0 artifact. The retained rows above do not replace that release check.

Counter And Timing Availability

Profiler counters and frame timing depend on the platform, graphics API, render pipeline, build configuration, Player settings, and current sampling window.

For Editor and non-Development player use, enable Edit > Project Settings > Player > Other Settings > Rendering > Frame Timing Stats when that setting exists. The package never changes it automatically, and enabling it does not guarantee CPU or GPU timing on every target.

Frame-timing capture can itself have platform- and settings-dependent overhead. Enable only the sections that answer a useful question. Unsupported or not-yet-valid measurements display --.

Camera And Rendering Limits

The package shader disables depth testing for the selected camera's diagnostic mesh, so ordinary scene geometry does not occlude it. The renderer is still scene geometry, not a guaranteed final output pass.

Validate the visual result for:

  • Camera stacks and custom Scriptable Render Pipeline renderer features.
  • Post-processing or full-screen passes that execute after the overlay stage.
  • XR stereo rendering.
  • Render textures, dynamic resolution, and unusual pixel rectangles.
  • Lens shift, custom or oblique projection matrices.
  • Pipeline-specific callbacks and manually rendered cameras.

Rendering is scoped to the selected camera and placement is refreshed from its viewport and projection state at render time, but those behaviors do not make a blanket compatibility promise for every composition system.

Data And Typography Limits

The package performs no network requests, analytics, telemetry, account access, subscription checks, or disk persistence of metrics. Optional Device Details come from Unity SystemInfo, are cached in memory only after the section is enabled, and remain local to the overlay.

The compact built-in font uppercases lowercase Latin text and replaces unsupported or non-ASCII characters with ?. Projects that need localization, Unicode shaping, or custom typography can render supported numeric and availability fields from the snapshot through their own UI. The snapshot does not include device strings, custom-row content, formatted text, or graph history.

Recommended Usage

  • Keep the default Editor + Development scope unless release-player access is intentional.
  • Assign Target Camera in multi-camera projects.
  • Enable only the metric sections that answer the current question.
  • Use project-owned input, menus, or console commands for visibility.
  • Validate composition and measurements in the real target configuration.
  • Treat the overlay as a quick diagnostic aid, not a replacement for Unity's Profiler or platform-specific tooling.