Skip to main content
Version: 0.9.0

Source Applications

A source application renders content into an app volume and streams it to the target applications (headsets, visualizers). You start and manage them from the visualizer's Source Applications panel.

The panel​

SectionShows
AppsA tile grid: built-in apps, then detected apps, then your presets, then + Add source app. The refresh icon looks for installed apps again.
RunningOne row per running app, with its status, Streams to, Stop and, where supported, Live settings.

Tile tags:

TagMeaning
Built-inShips with QAROS: StereoKit, CPU Renderer, Test OpenXR.
DetectedFound on this PC (see Detected apps).
(none)A preset you saved.
DeveloperVisible from the Developer UI mode up.
DebugVisible only in the Debug UI mode.
N onN copies of this app are running.

Built-in and detected apps cannot be edited or removed. To change one, open it and Save as new preset.

Launching an app​

  1. Click a tile. A dialog opens (Built-in app, Detected app or Edit preset).
  2. Adjust the settings and choose Streams to.
  3. Press Launch.

Each Launch starts a new, independent copy with its own copy of the settings. Launch failures appear as error notifications (<app name>: <error>).

Preset dialogs also offer Save, Save as new preset and Remove. Removing a preset does not stop the apps started from it, and stopping an app does not remove its preset.

Adding your own app​

  1. Click + Add source app.
  2. In the Developer or Debug UI mode, pick the type first: OpenXR app or QAROS API app. In Basic mode only OpenXR apps can be added.
  3. Set Executable (type a path or Browse). Name defaults to the executable name.
  4. Press Add app. This saves a preset; it does not launch. Click the new tile and press Launch.
App typeSettingsProcesses
OpenXR appExecutable, Arguments (one per line)One process per target app
QAROS API appExecutable, Arguments (one per line)One process for all targets
StereoKitModel, Scale, Orientation, Show gesture pointsOne process per target app
CPU RendererPoints, Sphere radiusOne process per target app

To test your own QAROS API app: switch to Developer mode (Settings, no password), add it as above with type QAROS API app, then launch its tile. Check Running for its status and the Hub's log folder for its stdout/stderr.

A QAROS API app is an application built on the QAROS C or C# API (for example the Vulkan cube example). QAROS starts it, hands it a one-time launch code of its own (the code on the onboarding screen stays as it is) and its GPU, and restarts it with backoff if it exits within 10 s. What the app has to do is in Developer Guide: Launching from QAROS.

OpenXR apps​

An OpenXR app runs unchanged on the QAROS OpenXR runtime, which the Hub starts once per target app. The runtime renders on the target's GPU (otherwise the first discrete GPU).

  • The app's LOCAL reference space has its origin at the centre of the app volume. Place content relative to LOCAL and it appears inside the volume.
  • Test OpenXR (built-in, Debug mode) draws a test scene filling its app volume, with a blue box at the centre. Use it to check the OpenXR path end to end.

Streams to​

Selects which target applications receive the app's stream:

  • All target applications (default), or
  • one checkbox per connected target application.

Changing it re-routes a running app without a restart. A QAROS API app always streams to all target applications that request it.

Live settings​

Live settings (CPU Renderer and StereoKit only) change a running app without a restart:

AppLive
CPU RendererPoints, Sphere radius
StereoKitModel, Scale, Orientation, Draw a cube on each click

Everything else (Show gesture points, executable, arguments) applies at launch: stop the app and launch it again. Live changes affect only the running app and are not written back to its preset.

Detected apps​

On start, and when you press refresh, the visualizer looks in its own folder for known applications:

FileTile
qar-vulkan-source.exeVulkan cube (QAROS API app, Developer mode and up)

UI modes and mode-gated apps​

The visualizer has three UI modes: Basic, Developer and Debug (Debug needs the debug password in Settings).

AppsShown from
StereoKit, your OpenXR presetsBasic
QAROS API apps (yours and the Vulkan cube)Developer
CPU Renderer, Test OpenXRDebug

In a lower mode their tiles and running rows are hidden, but apps already running keep running.

Persistence​

Presets and the list of running apps are kept by the Hub on this PC, not by the visualizer. They survive visualizer and Hub restarts; when the Hub starts, it relaunches the apps that were running. Model and executable paths must stay reachable.

If a source app is killed and relaunched with the same identity, the new instance takes over its streams within about 2-3 s; see Running the Hub.