DocumentationAzkar Screen StatsWhat Appears On Screen

Runtime readout

What Appears On Screen

Understand FPS and timing, profiler counters, budget statistics, custom rows, device details, and observed frame-time history.

  • FPS and timing
  • Memory and render counters
  • Budget and custom metrics
  • Graph and availability

The Standard preset shows the core live measurements and frame-time graph. Device Details, Budget, and Custom Numeric Stats are opt-in for new components. Every section can be changed from the inspector or validated runtime properties.

FPS And Frame Duration

The component smooths unscaled frame duration once and derives FPS from that same value. The displayed values therefore remain mathematically consistent.

The graph records observed instantaneous durations rather than the smoothed text value, so brief spikes remain visible even when the FPS readout is stable.

CPU And GPU Timing

CPU and GPU rows come only from values Unity supplies through FrameTimingManager. Each value has independent availability. If Unity does not provide one for the current platform, graphics API, render pipeline, or build configuration, that field shows --.

General frame duration is never relabeled as CPU time. For Editor and non-Development player use, enable Edit > Project Settings > Player > Other Settings > Rendering > Frame Timing Stats when the target exposes that setting. The package never changes it automatically, and enabling it does not guarantee both values on every target.

Memory And Render Counters

Memory and render values come from Unity ProfilerRecorder counters:

  • Managed GC memory.
  • System memory.
  • Draw calls.
  • Batches.
  • Triangles.
  • Vertices.

Recorders run only while a visible section requires them. Availability is separate from numeric value: a valid zero displays as zero, while an unsupported or not-yet-valid value displays --.

Each displayed value belongs to samples received during the latest text-refresh window. After a read attempt, that recorder window is cleared and collection resumes. A previous positive value is not replayed when no new sample arrives. The overlay contributes its own renderer, draw, and geometry to Unity's observed rendering work; those values are not subtracted.

Frame-Budget Summary

The optional Budget section uses the same fixed history as the graph and can keep collecting while the graph is hidden. It shows:

  • Recent maximum frame duration.
  • Misses above the Target FPS frame budget.
  • P99 frame duration using nearest-rank 99th percentile.
  • 1% low FPS derived from the average of the slowest ceiling of one percent of observations.

Recent maximum and budget misses become available after the first real history sample. P99 and 1% low remain -- until at least 100 real observations exist, so a short startup window is not mislabeled as percentile data.

History stores at most 600 observed samples. Analysis runs only on text refreshes while Budget is enabled. A graph by itself records bars without doing percentile work.

Custom Numeric Stats

Project code can populate four fixed slots, numbered 0 through 3. Each row contains a caller-owned label, numeric value, and optional unit. Setting a slot enables the Custom Numeric Stats section automatically.

  • Non-finite or explicitly unavailable values display --.
  • Labels are limited to 24 displayed characters and units to 8; longer text receives a visible truncation marker.
  • Active custom rows refresh no faster than Text Updates / Second.
  • Reuse label and unit strings when updating a value; the component stores those references rather than creating per-update formatted strings.

See Camera Behavior And API for setters and snapshot guidance.

Device Details

Device Details are disabled on new components because hardware and driver strings can be wide and are usually needed less often than live measurements. Enable them individually or through the Full preset to show:

  • Device model and operating system.
  • Processor type and core count.
  • GPU name and reported graphics memory.
  • Graphics API and version string.

The strings come from Unity SystemInfo, are queried only after the section is first enabled, and can be blank when Unity supplies no text. Reported graphics memory is device information, not a live VRAM-usage measurement.

Frame-Time Graph

The graph contains only real observed samples. Newly reset history starts empty, is ordered oldest to newest, and is right-aligned until the fixed window fills.

Graph width, height, bar width, ceiling in milliseconds, and Target FPS control the display. Target FPS sets the budget marker and optional budget interpretation; it does not change the application's frame rate.

When Color Bars By Budget is enabled:

  • Samples above one target-frame budget use the warning color.
  • Samples above two target-frame budgets use the critical color.
  • A sample exactly on either threshold keeps the lower-severity color, matching the strict greater-than miss rule.

Graph Updates / Second limits geometry refresh, not frame sampling. When both Graph and Budget are disabled, no history is sampled or analyzed.

Missing Values And Text Limits

-- means the requested measurement is not currently available. Common causes include an unsupported data source, disabled Frame Timing Stats, a recorder window with no valid sample, the first frame, an unwarmed percentile window, or an explicitly unavailable custom value.

The overlay uses bounded text and mesh storage. Live measurements take priority over verbose device rows if capacity is constrained, and TextWasTruncated plus the snapshot's TextTruncated status expose that condition.

The compact 5×7 font supports a bounded ASCII glyph set. Lowercase Latin letters display as uppercase, while unsupported or non-ASCII characters display as ?. For localization, Unicode shaping, or custom typography, use supported snapshot values in a project-owned UI.