Overview

Pages are being reorganized, more content will be added

OpenXR is a native C API which you can use to build support for XR in your engine. The interface itself abstracts away from the actual device, which makes it easy to write applications that are future proof, and with checks of hardware capabilities an application can be run on a wide variaty of devices without the need to build special versions.

The C API interface is an open, royalty free standard from Khronos, and can today support both VR, AR and MR devices, such as Varjo XR-3, Varjo VR-3 and Varjo Aero. The standard itself is defined in the OpenXR specification available on Khronos OpenXR site. As the standard is a specification only with HMD vendors being responsible for the implementation of the standard there are no specific vendor binaries required in the actual compiled app. Instead the interfaces are wired up at runtime to the vendor provided OpenXR runtime which typically is installed during the device setup through an installer. In our case our Varjo Base installer, installs Varjo OpenXR Runtime along with the other drivers and software required to use our HMD. From the developer perspective, this basically means that applications that have been developed to support one HMD from Vendor A should run without modification on another HMD from Vendor B.

Ongoing work

Varjo is an active contributing member in OpenXR standardization, and we are committed to provide support for our products through OpenXR interfaces. Varjo headsets fully support OpenXR and can run your OpenXR applications.

Already today there are many engines build on top of OpenXR interfaces such as Unity, Unreal, and Godot to name a few. This shows that OpenXR is ready for prime time and is a good choice if the functionality provided on the platform suits your needs. As a contributing member in the Khronos OpenXR working group, we are committed to continue to extend OpenXR interfaces to support our products.

OpenXR C interface, which makes it possible to even extend the base functionality that the engine has implemented through interfacing with the interface directly in your application.

Developing OpenXR applications with Varjo

To use Varjo headsets to their fullest, you need to enable a combination of core functionality together with cross vendor extensions and vendor extensions. The following table shows feature areas where we support cross vendor extensions or our own extensions.

Feature Extension
graphics plugins XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
XR_KHR_opengl_enable
XR_KHR_vulkan_enable
XR_KHR_vulkan_enable2
misc graphics XR_KHR_swapchain_usage_input_attachment_bit
XR_VARJO_foveated_rendering
view configurations Stereo views Core 1.0 spec
XR_VARJO_quad_views
compositing XR_KHR_composition_layer_depth
XR_VARJO_composition_layer_depth_test
XR_VARJO_quad_views
mixed reality XR_VARJO_marker_tracking
XR_VARJO_view_offset
user input XR_EXT_eye_gaze_interaction
XR_EXT_hand_tracking
XR_EXT_palm_pose Varjo Base 4.0
XR_HTCX_vive_tracker_interaction
other XR_KHR_win32_convert_performance_counter_time
XR_EXT_debug_utils
security XR_EXT_win32_appcontainer_compatible

Numbers in the table indicates that functionality is part of an upcoming release.