Runtime configuration

Most configuration is done via URL parameters. See URL parameters. This page collects developer-focused knobs and debug hooks in one place.

Developer URL parameters

These URL parameters are primarily useful for debugging and development, and may change over time:

  • strict=1: re-throw most caught errors unless explicitly allowlisted.

  • compat=1: enables a small allowlisted set of compatibility fallbacks.

  • log=1 / verbose=1 / log=debug: enables verbose debug logs and performance instrumentation.

  • debug=1: enables extra debug behavior in the renderer/UI pipeline.

  • ui_ms=<16..2000>: main UI tick interval clamp.

  • ui_slow_ms=<200..10000>: slow UI tick interval clamp used by heavy cards.

  • snapshot_hz_max=<30..120>: upper bound for adaptive snapshot delivery rate.

  • snapshot=1 / snapshot=debug: enables snapshot debug mode and preserves the WebGL drawing buffer for inspection.

  • nogeom=1: sets the initial “hide all geometry” rendering flag. Aliases: no_geom, no-geom, hideall, hide_all.

  • forceBasic=1: forces basic materials. Useful for debugging lighting/material issues.

  • inst=0 / instancing=0 / noinst=1: disables instanced rendering.

  • tbins=<0|1|4|8|16>: transparent sorting bins.

  • tmode=...: transparency sort mode. Values include nosort/fast, bins. Any other value implies strict.

Global variables read at startup

These should be set before the main module runs. For example, use a script tag before importing the app:

  • globalThis.PLAY_PLUGINS: array of plugin import specifiers/URLs. Alternative to the plugins= query parameter.

  • globalThis.PLAY_STRICT: force strict mode on/off. Overrides strict=.

  • globalThis.PLAY_COMPAT: force compat mode on/off. Overrides compat=.

  • globalThis.PLAY_VERBOSE_DEBUG: force verbose debug on/off. Overrides log= / verbose=.

  • globalThis.PLAY_ENV_ASSET_BASE: override the base URL used for built-in HDRI/EXR environment presets. Equivalent to envAssetBase=.

Rendering debug toggles at startup

  • globalThis.PLAY_DISABLE_INSTANCING: boolean. Overrides instancing enablement.

  • globalThis.PLAY_TRANSPARENT_BINS: number. Overrides tbins.

  • globalThis.PLAY_TRANSPARENT_SORT_MODE: string. One of strict, bins, nosort. Overrides tmode.

Runtime hooks / debug globals

These are developer-focused and may change:

  • window.__PLAY_HOST__: plugin Host API. See Plugin contract and Plugin API.

  • window.__viewerStore: the viewer store instance. Same object as __PLAY_HOST__.store.

  • window.__viewerControls: a small control-manager façade.

  • window.__viewerRenderer: renderer helpers such as stats/context/overlay3d.

  • window.__lastSnapshot: the most recent backend snapshot observed by the main thread.

  • window.__renderCtx: renderer manager context/debug object.

  • window.PLAY_SNAPSHOT_DEBUG: whether snapshot debug mode is enabled.

  • window.__snapshot: if set to true or 1, forces WebGL preserveDrawingBuffer. Useful for screenshot/debug.

  • window.__envDebug / window.__skyDebug / window.__frameCounter: renderer/environment debug objects used during development.

  • window.__PLAY_DUMP_GEOMORDER(): debug hook. May be a stub depending on build.

Strict/perf helpers

These are installed on globalThis when available:

  • __PLAY_STRICT_REPORT__() / __PLAY_STRICT_CLEAR__(): strict-mode event bookkeeping. Note: the main app also sets __PLAY_STRICT_REPORT__ to include the worker report { main, worker } when the backend is ready.

  • __PLAY_PERF_SUMMARY__() / __PLAY_PERF_CLEAR_SAMPLES__(): performance sample summary and reset. Only present when perf is enabled.