Glossary of ILLIXR Terminology

A collection of ILLIXR and ILLIXR-adjacent terms and their definitions can be found on this page your reference.

General

Asynchronous Reprojection

The processing of rendered video for motion interpolation. Asynchronous reprojection improves the perception of the rendered video to the HMD when rendering misses it target frame rate.

Asynchronous reprojection is implemented in the timewarpgl ILLIXR plugin.

See the Wikipedia article.

Chromatic Abberation Correction

The processing of visual anomalies in images where colors are diffracted due to imperfect optics or other perturbing factors.

For more information, see the Wikipedia article.

Compositor

A window manager that establishes a framebuffer for each window of a graphical system. A compositor merges information across its windows to construct a unified framebuffer.

For more information, see the Wikipedia article.

Distortion Correction

The processing of visual anomalies in images where rectilinear features have been warped.

For more information, see the Wikipedia artice.

Eye Tracking

The process of measuring the eye movement of a user (who is possibly also wearing a HMD).

For more information, see the Wikipedia article.

Event Stream

A communication interface supporting writes, sychronous reads, and asynchronous reads. For synchronous reads, every value written to the stream is visible to consumers. For asynchronous reads, only the latest values written are guaranteed to be visible to consumers.

Framebuffer

A region of memory used to hold graphical information to be output to a display or graphics device.

  • Depth Buffer: A framebuffer representing the depth information of a 3D scene. Depth information is useful for applications such as graphics and SLAM.

  • Eye Buffer: A framebuffer dedicated for display through a HMD lens to be perceived by a user's eye.

  • Frame: A single frame (image) to be output to a display at a certain instant of time based on the system's frame rate.

  • Frame Rate: The interval period between complete (as defined by the output resolution) frame updates and refreshes. In many systems, the target frame rate is determined by a fixed vertical sync (VSYNC) period.

For more information, see the Wikipedia article.

Ground Truth

The most accurate source of measurement available for a data set. Typically, ground truth measurements are provided for the evaluation of sensor data where the sensor or other data source is not as accurate or reliable as the source for the ground truth.

  • Ground Truth Poses: A collection of poses used to evaluate the accuracy of pose generation and prediction algorithms.

  • Ground Truth Images: A collection of images used to evaluate the accuracy of visual processing algorithms, like SLAM and VIO.

See the ILLIXR Plugins page for information about sensors implemented in ILLIXR.

Head-mounted Display

A display device worn on the head and face for use with VR and XR applications. Also known as a HMD.

For more information, see the Wikipedia article.

Inertial Measurement Unit

A device that reports its orientation in space and any forces applied it. Also known as an IMU.

An IMU is implemented in the offline_imu ILLIXR plugin.

For more information, see the Wikipedia article.

Plugin

A modular component that can be detected and enabled for use by an ILLIXR application. A plugin can be internal or external to the ILLIXR project. Each plugin is compiled and launched dynamically at runtime based on the command line options given or ILLIXR profile file being used. ILLIXR also implements a Monado runtime translation Plugin.

For a list of supported plugins and their details, see the ILLIXR Plugins page. For instructions for how to modify or write your own plugins, see the Modifying a Plugin and Writing Your Plugin pages.

See the Plugin API documentation.

Profile

A profile describes the environment to be used for the build system and running ILLIXR. Profiles are defined in YAML files. There are several provided in the profiles directory in the repository. A profile file defines what plugins are to be used, as well as additional information specific to where it is being used.

  • As input to CMake: If a profile file is given to cmake via the -DYAML_FILE= directive then the listed plugins will be built.
  • As input to the ILLIXR binary If a profile file is given on the ILLIXR binary via the --yaml= command line option, then any listed plugins will be loaded and any other command line options given in the profile file will be used. See Running ILLIXR for details.

The same profile file can be given to both cmake and the ILLIXR binary (you may need to change the data: entry), as any unrecognized options are ignored by both systems. See Profile file format for details on the profile file format.

Pose

The combination of orientation and position of an object, used for computer vision and robotics applications. ILLIXR applications make use of poses to track the user's HMD within the virtual environment. Internally, ILLIXR has multiple classifications of poses which are used for various purposes.

  • Slow Pose: A slow pose is a ... TODO

  • Fast Pose: A fast pose is a ... TODO

  • True Pose: A true pose is a ... TODO Depracated starting ILLIXR release v2.X.X.

  • Pose Prediction: To improve the user's perception latency experience the time between, pose prediction uses history and current system information to pre-compute the user's next pose Pre-computing the next pose allows for components downstream from the pose output in the event stream dataflow graph to begin computation.

Pose Prediction is implemented in the pose_prediction ILLIXR plugin.

For more information, see the Wikipedia article.

Runtime

The ILLIXR system runtime is responsible for the dynamic orchestration of ILLIXR device resources, system resources, and client applications.

The runtime implementation is located in <ILLIXR_INSTALL_DIR>/bin. See the Getting Started and Monado Overiew pages for details about the ILLIXR runtime.

Swap Chain

A set of virtual framebuffers to be output to a display. Only one framebuffer in a swap chain is displayed at a time, enabling the other virtual framebuffers to be concurrently modified in memory.

For more information, see the Wikipedia article.

Simultaneous Localization and Mapping

The computational process of creating a map of an unknown environment, and finding one's location within that space. Also known as SLAM.

For more information, see the Wikipedia article.

Visual Interial Odometry

The process of computing a pose estimate from incoming visual information and measurements from the IMU. Also known as VIO. Often used in combination with SLAM techniques.

See the Wikipedia article.

Components

Phonebook

An ILLIXR service directory used to introspectively interface plugins and their data. The implementation resides in ILLIXR/runtime/.

See the Phonebook API documentation.

Spindle

An ILLIXR component responsible for launching and managing plugin threads. The implementation resides in ILLIXR/runtime/.

See the Spindle API documentation.

Switchboard

An ILLIXR event stream manager that maintains data pipelines between plugins. The implementation resides in ILLIXR/runtime/.

See the Switchboard API documentation.

Technologies

Docker

A platform and containerization framework for deploying applications under virtualization. ILLIXR uses Docker to deploy and test code in a continuous integration and deployment pipeline.

For more information, see the Docker overview and getting started page.

Godot

An open source game development engine. ILLIXR applications targeting the OpenXR use Godot to access the engine's integration with the OpenXR standard via Monado.

For more information, visit the official Godot site.

Monado

An open source, modular implementation of the OpenXR standard for GNU/Linux.

See the ILLIXR Monado Overview and Monado Dataflow pages for details about our runtime integration using Monado.

For more information, visit the official Monado development site.

OpenGL

A cross-platform graphics API that allows developers to create graphics applications easily and portably. Also known as GL.

  • GL Context: A data structure storing the state of an OpenGL application instance. Within a GL context resides framebuffer data. It is not thread safe to share contexts without appropriate synchronization.

  • GLFW: An open source implementation of OpenGL. Supports Windows, MacOS and, Linux (X11 and Wayland). See the GLFW development site.

For more information, see the official OpenGL page from the Khronos Group.

OpenXR

An open standard for Augmented and Virtual Reality. ILLIXR components target the OpenXR standard and interact with the ILLIXR device via the Application Interface.

For more information, visit the official site from the Khronos Group.

QEMU-KVM

An open source virtulization tool and machine emulator. See the instructions for running ILLIXR under Virtualization.

For more information, see the official QEMU page.

SQLite

A SQL database engine implementation in C designed to be lightweight and easy to use. The ILLIXR project allows user to records application statistics to a local database for efficient processing. See the Logging and Metrics page for usage details.

For more information, see the SQLite development site.

Ubuntu

An open source GNU/Linux operating system and distribution. ILLIXR currently supports the Long Term Support (LTS) versions of Ubuntu: 20.04 LTS (Focal) and 11.04 (Jammy)

For more information, visit the official Ubuntu site.

Vulkan

A cross-platform graphics API that allows developers to efficiently target low-level hardware features.

For more information, see the official Vulkan page from the Khronos Group.

Xvfb

A virtual framebuffer for the X11 Window Sytem. ILLIXR uses Xvfb to enable running the graphical ILLIXR application without requiring the user to have a graphical environment configured at application launch.

For more information, see the Xfvb man page.

YAML

A markup language and data serialization standard designed to be user-friendly. We make use of the yaml-cpp libraries to read our profile files.

For more information, visit the official YAML page.