Overview
Note: you are currently viewing documentation for a beta or an older version of Varjo
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_KHR_visibility_mask 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 XR_VARJO_xr4_controller_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.