diff --git a/CHANGELOG.md b/CHANGELOG.md index 86e6b6a..505a76f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. > **Notes** > When updating the Changelog, please ensure we follow the standards for ordering headers as outlined here: [US-0039](https://standards.ds.unity3d.com/Standards/US-0039/). Specifically: Under ## headers, ### \ headers are listed in this order: Added, Changed, Deprecated, Removed, Fixed, Security --> +## [1.12.1] - 2024-09-05 + +* Fixed rendering bug when rendering viewport scale < 1. +* Fixed issue where the Editor would hang when renaming and then viewing OpenXR Settings. + ## [1.12.0] - 2024-08-01 ### Added @@ -34,8 +39,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * Added support for using Local Floor Reference Space in the OpenXR runtime. Useful in applications that require the user to be seated or in a standing fixed position. * Added PreInit flags to allow users to disable the main frame buffer and use offscreen swapchain when using Vulkan on Android in the OpenXR settings. * Added functional DX12 mock runtime support to the OpenXR package. -* Added `RegisterStatsDescriptor` method to the `OpenXRFeature` abstract class, which lets your OpenXR feature to register a new statistic that can be feed into and queried at runtime. This method is not thread safe. -* Added `SetStatAsFloat` method to the `OpenXRFeature` abstract class, which lets your OpenXR feature to feed a float value into a specific statistic that was previously registered using the `RegisterStatsDescriptor`. This method is thread safe. +* Added `RegisterStatsDescriptor` method to the `OpenXRFeature` abstract class, which lets your OpenXR feature to register a new statistic that can be feed into and queried at runtime. This method is not thread safe. +* Added `SetStatAsFloat` method to the `OpenXRFeature` abstract class, which lets your OpenXR feature to feed a float value into a specific statistic that was previously registered using the `RegisterStatsDescriptor`. This method is thread safe. * Added `SetStatAsUInt` method to the `OpenXRFeature` abstract class, which lets your OpenXR feature to feed an unsigned integer value into a specific statistic that was previously registered using the `RegisterStatsDescriptor`. This method is thread safe. * Added the `OpenXRSettings.RefreshRecenterSpace` static method, which lets you regenerate the internal XR space used for recentering, without the need to wait until a recenter event is received by the OpenXR SDK. Note that this method does not perform a recenter event in any way, as this can only be done by the device runtime. * Added Pre-pass Foveated Rendering for both d3d12 and Vulkan. This feature utilizes Fragment Density Mapping on Quest Devices and Fragment Shading Rate on PC to optimize rendering performance. Refer to [Foveated Rendering](xref:openxr-foveated-rendering) for more information. @@ -117,7 +122,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * Added functionality in `OpenXRFeatureBuildHooks` exposing the BootConfig for reading/writing. * Added `Force Remove Internet Permission` setting to the Meta Quest Feature settings, allowing to remove Internet permissions added automatically to the application manifest. * Added class HPReverbG2ControllerProfile.ReverbG2Controller and a new interaction profile to support the HP Reverb G2 controllers. -* Added Hand Interaction Profile and added PalmPose and dpad EXT implementations. +* Added Hand Interaction Profile and added PalmPose and dpad EXT implementations. ### Changed * Modified `ModifyAndroidManifestMeta` class to provide required Android manifest entries using a new internal XR system, instead of manually modifying the manifest file. @@ -284,7 +289,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * Ensured a deterministic order of features within the OpenXR Settings ### Changed -* Updated OpenXR Loader to 1.0.17 +* Updated OpenXR Loader to 1.0.17 * Changed `feature set` text to `feature group` in the top level XR-Management list ### Fixed @@ -328,8 +333,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [1.1.1] - 2021-04-06 ### Added * Oculus controller profile now exposes both grip and aim poses. -* Added support for `XR_VARJO_QUAD_VIEWS` extension -* Added `XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT` and `XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT` bits to the composition layer flags +* Added support for `XR_VARJO_QUAD_VIEWS` extension +* Added `XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT` and `XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT` bits to the composition layer flags * Added `XrSecondaryViewConfigurationSwapchainCreateInfoMSFT` to to `XrSwapchainCreateInfo` when using a secondary view * MockRuntime First Person Observer View support * MockRuntime input support diff --git a/ConformanceAutomation/ConformanceAutomationFeature.cs b/ConformanceAutomation/ConformanceAutomationFeature.cs index 0d70286..1310547 100644 --- a/ConformanceAutomation/ConformanceAutomationFeature.cs +++ b/ConformanceAutomation/ConformanceAutomationFeature.cs @@ -165,7 +165,7 @@ public static bool ConformanceAutomationSetPose(string topLevelPath, string inpu /// Linear velocity value /// True if the angular velocity is valid /// Angular velocity value - /// + /// true if the velocity is set successfully, or false if there was an error. public static bool ConformanceAutomationSetVelocity(string topLevelPath, string inputSourcePath, bool linearValid, Vector3 linear, bool angularValid, Vector3 angular) { return xrSetInputDeviceVelocityUNITY( diff --git a/ConformanceAutomation/android.meta b/ConformanceAutomation/android.meta index e88dcfb..67d3b04 100644 --- a/ConformanceAutomation/android.meta +++ b/ConformanceAutomation/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e99c5798586a45eeb638b5b29119f614 +guid: 3a914f5ce36c46b78f9f73c1beb7e0ba folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/android/arm64.meta b/ConformanceAutomation/android/arm64.meta index 9091dc5..2b1aafa 100644 --- a/ConformanceAutomation/android/arm64.meta +++ b/ConformanceAutomation/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 787b5c5945c742249555f43d84ff56f1 +guid: a6d2329edf4a4f1f95946fcac42b50db folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/android/arm64/ConformanceAutomationExt.so.meta b/ConformanceAutomation/android/arm64/ConformanceAutomationExt.so.meta index 3c41888..77217f2 100644 --- a/ConformanceAutomation/android/arm64/ConformanceAutomationExt.so.meta +++ b/ConformanceAutomation/android/arm64/ConformanceAutomationExt.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 47c67a5b34e74060a28baa039817bde0 +guid: 102e97d3a5b545d284345e74ce6885fd PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/android/x64.meta b/ConformanceAutomation/android/x64.meta index 6853ba3..6f27c61 100644 --- a/ConformanceAutomation/android/x64.meta +++ b/ConformanceAutomation/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 86dd90060b2a4bdcb891cee94ad739a5 +guid: e1c4eac601f245d394446db13b597f7b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/android/x64/ConformanceAutomationExt.so.meta b/ConformanceAutomation/android/x64/ConformanceAutomationExt.so.meta index 560e0b8..caf13c2 100644 --- a/ConformanceAutomation/android/x64/ConformanceAutomationExt.so.meta +++ b/ConformanceAutomation/android/x64/ConformanceAutomationExt.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b26707bd44a24e859bc64732eb2b3d1d +guid: 34f04fb4b8614f1d95347a556f1c31f4 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/osx.meta b/ConformanceAutomation/osx.meta index e2b2dbf..5805646 100644 --- a/ConformanceAutomation/osx.meta +++ b/ConformanceAutomation/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 19885ca614a24049a2f408d2ba107942 +guid: 41edfcf9f5c54db5a162959ddf5b60f8 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/osx/ConformanceAutomationExt.dylib b/ConformanceAutomation/osx/ConformanceAutomationExt.dylib index ae35fbd..eeaf5f0 100644 Binary files a/ConformanceAutomation/osx/ConformanceAutomationExt.dylib and b/ConformanceAutomation/osx/ConformanceAutomationExt.dylib differ diff --git a/ConformanceAutomation/osx/ConformanceAutomationExt.dylib.meta b/ConformanceAutomation/osx/ConformanceAutomationExt.dylib.meta index 955f9b4..a90825e 100644 --- a/ConformanceAutomation/osx/ConformanceAutomationExt.dylib.meta +++ b/ConformanceAutomation/osx/ConformanceAutomationExt.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 57ee2519344448bea4bb9a5d03ea7cb4 +guid: 812916b3f2b9414a9705c6fd328864ed PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/universalwindows.meta b/ConformanceAutomation/universalwindows.meta index b9ab324..5b20d97 100644 --- a/ConformanceAutomation/universalwindows.meta +++ b/ConformanceAutomation/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cba6a3f9149f48b18a500e99de415d9b +guid: e7972601d9714253b74462fbbd2a3d92 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/universalwindows/arm32.meta b/ConformanceAutomation/universalwindows/arm32.meta index 7431ae4..e455aed 100644 --- a/ConformanceAutomation/universalwindows/arm32.meta +++ b/ConformanceAutomation/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 08ecc98a0c4b4c5d830d2096f0981cdf +guid: 5acdba8b09e44f45922904fd929f5e36 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll b/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll index 29c8b53..5dbb266 100644 Binary files a/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll and b/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll differ diff --git a/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll.meta b/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll.meta index ebdcfe4..b221d79 100644 --- a/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll.meta +++ b/ConformanceAutomation/universalwindows/arm32/ConformanceAutomationExt.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 55ff0084be1344b58af1af7cf03e37a4 +guid: c78d6f482c9144eab87eb4d64c956145 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/universalwindows/arm64.meta b/ConformanceAutomation/universalwindows/arm64.meta index 8646aa7..fa8d8d1 100644 --- a/ConformanceAutomation/universalwindows/arm64.meta +++ b/ConformanceAutomation/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 12241687a14940c1b16f5dda326687b7 +guid: 78dbbb8e97dc4ca2b5d5f1330315e05f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll b/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll index 268c683..0ae64b5 100644 Binary files a/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll and b/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll differ diff --git a/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll.meta b/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll.meta index fa24271..d81ad96 100644 --- a/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll.meta +++ b/ConformanceAutomation/universalwindows/arm64/ConformanceAutomationExt.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 74643a016ca243e49a705600b61d2489 +guid: c0232838026245c485710c45431961a4 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/universalwindows/x64.meta b/ConformanceAutomation/universalwindows/x64.meta index 7497841..a60726c 100644 --- a/ConformanceAutomation/universalwindows/x64.meta +++ b/ConformanceAutomation/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7414d55a9203490b91c8e2897ffeaa43 +guid: 63cb59f3640d4bdc8ea0e5e8cf70df74 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll b/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll index 1fc9d3d..d858e99 100644 Binary files a/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll and b/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll differ diff --git a/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll.meta b/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll.meta index cb10c6a..d131e56 100644 --- a/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll.meta +++ b/ConformanceAutomation/universalwindows/x64/ConformanceAutomationExt.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6b06ffa593404e13b079a4e4b65d3574 +guid: 9930b1f21eef48eda677830241371231 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/ConformanceAutomation/windows.meta b/ConformanceAutomation/windows.meta index e69f2f3..a9e0cf7 100644 --- a/ConformanceAutomation/windows.meta +++ b/ConformanceAutomation/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ce3f5fe06ccb4cbb979b06effe9db62e +guid: 57f73427d982487b8b955ac77ffcaf7b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/windows/x64.meta b/ConformanceAutomation/windows/x64.meta index 06c8469..90a1aa3 100644 --- a/ConformanceAutomation/windows/x64.meta +++ b/ConformanceAutomation/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4b1683359c8a4d0e970a07fd0a356863 +guid: 3fd0f4c9ffbb4295ad4360b68826d9b8 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll b/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll index e1391a8..2371871 100644 Binary files a/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll and b/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll differ diff --git a/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll.meta b/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll.meta index e664b36..124e9b6 100644 --- a/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll.meta +++ b/ConformanceAutomation/windows/x64/ConformanceAutomationExt.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9f82732261e840a5a46fb4677421337f +guid: ed4b0ac48b794519829d6401757383db PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Documentation~/TableOfContents.md b/Documentation~/TableOfContents.md index f863b54..6fae55f 100644 --- a/Documentation~/TableOfContents.md +++ b/Documentation~/TableOfContents.md @@ -2,6 +2,7 @@ * [Project Configuration](project-configuration.md) * [OpenXR Features](features.md) * [Meta Quest Support](features/metaquest.md) + * [Foveated Rendering](features/foveatedrendering.md) * [XR Performance Settings](features/performance-settings.md) * [OpenXR Input](input.md) * [Microsoft Mixed Reality Motion Controller Profile](features/microsoftmotioncontrollerprofile.md) diff --git a/Documentation~/features.md b/Documentation~/features.md index a5a2c9c..f60d1d8 100644 --- a/Documentation~/features.md +++ b/Documentation~/features.md @@ -44,7 +44,7 @@ A feature must also provide an `OpenXRFeature` attribute when running in the Edi /// The feature id string. This is used to give the feature a well known id for reference. /// public const string featureId = "com.unity.openxr.feature.example.intercept"; - + } ``` @@ -85,8 +85,8 @@ protected virtual bool OnInstanceCreate(ulong xrInstance) if (!OpenXRRuntime.IsExtensionEnabled("XR_UNITY_mock_driver")) { Debug.LogWarning("XR_UNITY_mock_driver is not enabled, disabling Mock Driver."); - - // Return false here to indicate the system should disable your feature for this execution. + + // Return false here to indicate the system should disable your feature for this execution. // Note that if a feature is marked required, returning false will cause the OpenXRLoader to abort and try another loader. return false; } diff --git a/Documentation~/features/foveatedrendering.md b/Documentation~/features/foveatedrendering.md index 5d290f3..4a4008f 100644 --- a/Documentation~/features/foveatedrendering.md +++ b/Documentation~/features/foveatedrendering.md @@ -1,11 +1,208 @@ --- uid: openxr-foveated-rendering --- -# Foveated Rendering +# Foveated rendering in OpenXR -Unity OpenXR provides support for various techniques of foveated rendering and will attempt to enable the following foveation techniques in this order depending on availability: +Foveated rendering is an optimization technique that can speed up rendering with little perceived impact on visual quality. Foveated rendering works by lowering the resolution of areas in the user's peripheral vision. On headsets that support eye-tracking as well as foveated rendering, the higher-resolution area can be centered where the user is currently looking. Without eye-tracking, the higher resolution area is fixed near the middle of the screen. Fixed foveated rendering can be more apparent to the user since they can shift their eyes to look at the peripheral areas. + +OpenXR platforms use the variable shading rate (VSR) technique for foveated rendering, which does not require you to change custom shaders. (However, if you are creating assets that should work on all XR platforms, refer to the "Foveated rendering shaders" topic in [Foveated rendering](https://docs.unity3d.com/Manual/xr-foveated-rendering.html) to learn how to write shaders and shader graphs that work under all supported foveated rendering methods.) + +OpenXR devices can implement VRS using a variety of techniques and a single device can support more than one implementation. The Unity OpenXR plug-in chooses from the following techniques, in this order, depending on what the current device supports: 1. Gaze-based Fragment Density Map (GFDM) from provider. 2. Fixed Fragment Density Map (FFDM) from provider. 3. Fragment Shading Rate (FSR) using a provider's texture. -4. Fragment Shading Rate using a compute shader calculated from the asymetric FOVs the provider gives. +4. Fragment Shading Rate using a compute shader calculated from the asymmetric FOVs the provider gives. + +This topic covers aspects of foveated rendering specific to the Unity OpenXR provider plug-in: + +* [Prerequisites](#prerequisites) +* [Configure foveated rendering](#configure-foveated-rendering) +* [Use the **SRP Foveation** API](#use-the-srp-foveation-api) +* [Use the **Legacy** API](#use-the-legacy-api) +* [Request eye-tracking permission on Android](#request-eye-tracking-permission) + +For general information about foveated rendering in Unity XR, refer to [Foveated rendering](https://docs.unity3d.com/Manual/xr-foveated-rendering.html). + + +## Prerequisites + +To use the foveated rendering feature in OpenXR, your project must meet the following prerequisites: + +* Unity 6+ +* Unity OpenXR plugin (com.unity.xr.openxr) 1.11.0+ +* Universal Rendering Pipeline or High Definition Render Pipeline (HDRP not recommended for mobile XR platforms such as the Meta Quest family of devices) + +Alternately, you can use the Meta Core XR SDK package to access the OpenXR foveated rendering feature on Quest devices: + +* Unity 2022.2+, Unity 6+ +* Unity OpenXR plugin (com.unity.xr.openxr) 1.11.0+ +* Meta Core XR SDK 68.0+ +* Built-in or Universal Rendering Pipeline + +> [!NOTE] +> The primary differences between the Unity **SRP Foveation** API and the Meta API for foveated rendering include: +> +> * They uses different APIs and code paths to enable and control foveated rendering on a device. +> * The Unity **SRP Foveation** API works on all platforms that support foveated rendering, which allows you to share code across different types of devices. +> * The Unity **SRP Foveation** API does not support the Built-in Rendering Pipeline. +> * The Meta API, which only works on Quest devices, supports Unity 2022.3 and the Built-in Render Pipeline. +> * The Meta API does not support foveated rendering when you use intermediate render targets. Intermediate rendering targets are used by post-processing, tone mapping and camera stacking, for example, and may be used by other rendering features, too. +> +> Unity recommends that you use the Unity **SRP Foveation** API where possible for better compatibility. You can still use other features from the Meta Core XR SDK in conjunction with the **SRP Foveation** API, if desired. + + +## Configure foveated rendering + +You can configure foveated rendering in a project that meets the [Prerequisites](#prerequisites): + +* [Configure SRP Foveation](#configure-srp-foveation) +* [Configure Legacy foveated rendering](#configure-legacy-foveated-rendering) +* [Configure gaze-based foveated rendering](#configure-gaze-based-foveated-rendering) + +Once configured in settings, you must also turn on foveated rendering at runtime. By default, the foveated rendering strength or level is set to off. You must also set a runtime flag to use gaze-based foveated rendering. + +Refer to the following topics for more information: + +* [Use the SRP Foveation API](#use-the-srp-foveation-api) +* [Use the Legacy API](#use-the-srp-foveation-api) + + +### Configure SRP Foveation + +To enable the **SRP Foveation** API in Unity 6+: + +1. Open the **Project Settings** window. +2. Under **XR Plug-in Management**, select the **OpenXR** settings. +3. Set the **Foveated Rendering API** option to **SRP Foveation**. +3. In the list of **OpenXR Feature Groups**, select **All Features**. +4. Enable the **Foveated Rendering** feature. + +![SRP Foveation settings](../images/FoveatedRendering/xr-foveation-srp-api-settings.png)
*Settings to enable foveated rendering with the **SRP Foveation** API* + +After you have configured the settings, you must also turn on foveated rendering at runtime. Refer to [Use the SRP Foveation API](#use-the-srp-foveation-api) for more information. + +> [!NOTE] +> You must configure the project to use either the [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/InstallURPIntoAProject.html) or the [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/convert-project-from-built-in-render-pipeline.html), if you have not already done so. + + +### Configure Legacy foveated rendering + +In Unity 6+, set the OpenXR **Foveated Render API** option to **Legacy** to use the Meta Core XR SDK, which only supports the Meta Quest family of devices. In Unity 2022, there is no option to select a **Foveated Rendering API**. Only the legacy API using the Meta Core XR SDK is supported. + +1. Install the [Meta Core XR SDK](com.unity3d.kharma:upmpackage/com.meta.xr.sdk.core) package, if necessary. You can get this package from the [Unity Asset Store](https://assetstore.unity.com/packages/tools/integration/meta-xr-core-sdk-269169). The package adds the Meta OpenXR feature group to the OpenXR along with the associated features. Refer to the [Meta Developer site](https://developer.oculus.com/downloads/package/meta-xr-core-sdk/68.0) for more information. +2. Open the **Project Settings** window. +3. Select the **XR Plug-in Management** settings from the list on the left. +4. Select the **Android** tab. +5. Under **OpenXR**, enable the **Meta XR feature group**, which is added when you install the Meta Core SDK package. (You might be prompted to restart the Unity Editor, which you can do now or after you finish configure these settings.) + + ![Enable Meta XR feature group](../images/FoveatedRendering/xr-meta-feature-group.png) + +6. Select the **OpenXR** settings area (below **XR Plug-in Management**). +7. Set the **Foveated Rendering API** option to **Legacy**. +8. In the list of **OpenXR Feature Groups**, select **All Features**. +9. Disable the **Foveated Rendering** feature, if it is enabled. +10. Enable the **Meta XR Foveated Rendering** feature. +11. (Optional) Enable the **Meta XR Eye Tracked Foveation** feature. + +![Legacy Foveation settings](../images/FoveatedRendering/xr-foveation-legacy-settings.png)
*Settings to enable foveated rendering with the **Legacy** API* + +After you have configured the settings, you must also turn on foveated rendering at runtime. Refer to [Use the Legacy API](#use-the-legacy-api) for more information. + +> [!NOTE] +> The Meta Core XR SDK is a third-party package, which is not under Unity control. The OpenXR features and API it provides can change without notice. + + +### Configure gaze-based foveated rendering + +Devices that provide eye tracking can support gaze-based foveated rendering in which the highest resolution area is centered where the user is looking. + +When using the Unity **SRP Foveation** API, you do not need to enable gaze-based foveated rendering in the OpenXR settings. You do need to [turn the feature on at runtime](#use-the-srp-foveation-api) and make sure any required permissions are enabled. + +When using the **Legacy**, Meta Core XR SDK, you must enable the **Meta XR Eye Tracked Foveation** OpenXR feature. + +To use eye-tracking data, you must [Request eye-tracking permission on Android](#request-eye-tracking-permission). Other platforms may have similar requirements. + + +## Use the SRP Foveation API + +After you have configured foveated rendering in the OpenXR settings, you must also turn the feature on at runtime. If you want to use gaze-based foveated rendering, you must set a runtime flag, which might require user permission. + +To specify the amount, or *strength*, of the foveation effect, you must assign a value between 0 and 1 to the [XRDisplaySubsystem.foveatedRenderingLevel](xref:UnityEngine.XR.XRDisplaySubsystem.foveatedRenderingLevel) property. The default value of zero turns foveation off altogether. A value of one is the maximum strength. Different device types can interprete this value in the way that best suits their native API. Meta Quest devices, for example, have discrete levels for setting the foveation strength: if you assign a value of `0.5` to `foveatedRenderingLevel`, the provider plug-in sets the device's *medium* foveation level. + +To specify that you want to use gaze-based foveated rendering, set [XRDisplaySubsystem.foveatedRenderingFlags](xref:UnityEngine.XR.XRDisplaySubsystem.foveatedRenderingFlags) to [FoveatedRenderingFlags.GazeAllowed](xref:UnityEngine.XR.XRDisplaySubsystem.FoveatedRenderingFlags.GazeAllowed). If you do not set this flag, the device doesn't support gaze-based foveated rendering, or the user turns off or denies permission to use eye-tracking, then fixed foveated rendering is performed. + +To set either of these foveated rendering APIs, you must first get a reference to the active [XRDisplaySubsystem](xref:UnityEngine.XR.XRDisplaySubsystem) from the Unity [SubsystemManager](xref:UnityEngine.SubsystemManager). Unity supports multiple subsystems of the same type, and returns a list when you get the subsystems of a given type. Ordinarily, only one `XRDisplaySubsystem` exists and you can use the lone subsystem in the `XRDisplaySubsystem` list returned by [SubsystemManager.GetSubsystems](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/SubsystemManager.GetSubsystems.html). + +The following code example illustrates how to set foveated rendering to full strength and enable gaze-based foveation after getting the instance of the active `XRDisplaySubsystem`: + +```C# +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.XR; + +public class FoveationStarter : MonoBehaviour +{ + List xrDisplays = new List(); + + void Start() + { + SubsystemManager.GetSubsystems(xrDisplays); + if (xrDisplays.Count == 1) + { + xrDisplays[0].foveatedRenderingLevel = 1.0f; // Full strength + xrDisplays[0].foveatedRenderingFlags + = XRDisplaySubsystem.FoveatedRenderingFlags.GazeAllowed; + } + } +} +``` + +> [!NOTE] +> This code example relies on methods available in Unity 6+. It does not compile in earlier versions. + + +## Use the Legacy API + + This API was built only for Quest headsets; it may not be supported on other devices. You must install Meta's Core XR SDK package for this API to be available. + +After you configured foveated rendering in the OpenXR settings, you must also turn the feature on at runtime. If you want to use gaze-based foveated rendering, you must set a runtime flag, which might require user permission. + +The following code example illustrates how to set foveated rendering to High and enable gaze-based foveation using the **Legacy API** and the Meta Core XR SDK package: + +```C# +using UnityEngine; +using UnityEngine.XR; + +public class FoveationStarter : MonoBehaviour +{ + private void Start() + { + OVRManager.foveatedRenderingLevel = OVRManager.FoveatedRenderingLevel.High; + OVRManager.eyeTrackedFoveatedRenderingEnabled = true; + } +} +``` + +Refer to Meta's [OVRManager Class Reference](https://developer.oculus.com/reference/unity/v67/class_o_v_r_manager#acbd6d504192d2a2a7461382a4eae0715a84ec48f67b50df5ba7f823879769e0ad) for more information. + + +## Request eye-tracking permission on Android + +The Android platform requires the user to grant permission before your app can access eye-tracking data. Eye-tracking permission is required to use gaze-based foveated rendering. + +To declare that your application uses eye tracking, you must add a `uses-feature` and a `uses-permission` element to your application's Android manifest file: + +``` xml + + + + ... the rest of the manifest elements ... +``` + +Refer to [Declare permissions for an application](xref:um-android-permissions-declare) for instructions about how to add these and other custom elements to the Android manifest. + +If the user denies permission, your application uses fixed foveated rendering instead. Refer to [Request runtime permissions +](xref:um-android-requesting-permissions) for more information about handling Android permissions issues, including how to handle cases where the user has denied permission. + + \ No newline at end of file diff --git a/Documentation~/features/handinteractionprofile.md b/Documentation~/features/handinteractionprofile.md index 25ee3cc..b81370e 100644 --- a/Documentation~/features/handinteractionprofile.md +++ b/Documentation~/features/handinteractionprofile.md @@ -4,7 +4,7 @@ uid: openxr-hand-interaction-profile # Hand Interaction Profile The hand interaction profile is designed for runtimes which provide hand inputs using hand tracking devices instead of controllers with triggers or buttons. -This allows hand tracking devices to provide commonly used gestures and action poses. Enables this OpenXR interaction profile will expose the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +The hand interaction profile allows hand tracking devices to provide commonly used gestures and action poses. Enable this OpenXR interaction profile to expose the `` device layout within the [Unity Input System](xref:input-system-index). OpenXR Specification about Hand Interaction Profile will be updated here when it is available. diff --git a/Documentation~/features/hpreverbg2controllerprofile.md b/Documentation~/features/hpreverbg2controllerprofile.md index 94996d9..7201983 100644 --- a/Documentation~/features/hpreverbg2controllerprofile.md +++ b/Documentation~/features/hpreverbg2controllerprofile.md @@ -3,7 +3,7 @@ uid: openxr-hp-reverb-g2-controller-profile --- # HP Reverb G2 Controller Profile -Enables the OpenXR interaction profile for the HP Reverb G2 Controller and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for the HP Reverb G2 Controller and exposes the `` device layout within the [Unity Input System](xref:input-system-index). For more information about the HP Reverb G2 interaction profile, see the [OpenXR Specification](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_EXT_hp_mixed_reality_controller). @@ -11,10 +11,10 @@ For more information about the HP Reverb G2 interaction profile, see the [OpenXR | OpenXR Path | Unity Control Name | Type | |----|----|----| -|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | -|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | -|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | -|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | +|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | +|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | +|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | +|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | |`/input/menu/click` | menu | Boolean| |`/input/squeeze/value`| grip | Float | |`/input/squeeze/value`| gripPressed | Boolean (float cast to boolean) | diff --git a/Documentation~/features/htcvivecontrollerprofile.md b/Documentation~/features/htcvivecontrollerprofile.md index 14cb75a..c459a36 100644 --- a/Documentation~/features/htcvivecontrollerprofile.md +++ b/Documentation~/features/htcvivecontrollerprofile.md @@ -3,7 +3,7 @@ uid: openxr-htc-vive-controller-profile --- # HTC Vive Controller Profile -Enables the OpenXR interaction profile for the HTC Vive Controller and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for the HTC Vive Controller and exposes the `` device layout within the [Unity Input System](xref:input-system-index). For more information about the HTC Vive interaction profile, see the [OpenXR Specification](https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#_htc_vive_controller_profile). diff --git a/Documentation~/features/metaquesttouchpluscontrollerprofile.md b/Documentation~/features/metaquesttouchpluscontrollerprofile.md index 7d89171..c1ba64f 100644 --- a/Documentation~/features/metaquesttouchpluscontrollerprofile.md +++ b/Documentation~/features/metaquesttouchpluscontrollerprofile.md @@ -3,7 +3,7 @@ uid: openxr-meta-quest-plus-touch-controller-profile --- # Meta Quest Touch Plus Controller Profile -Enables the OpenXR interaction profile for Meta Quest Touch Plus controllers and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest/). +Enables the OpenXR interaction profile for Meta Quest Touch Plus controllers and exposes the `` device layout within the [Unity Input System](xref:input-system-index). ## Available controls @@ -12,16 +12,16 @@ Enables the OpenXR interaction profile for Meta Quest Touch Plus controllers and |`/input/thumbstick`| thumbstick | Vector2 | |`/input/squeeze/value`| grip | Float | |`/input/squeeze/value`| gripPressed | Boolean (float cast to boolean) | -|`/input/menu/click`| menu (Left Hand Only)| Boolean | -|`/input/system/click`| menu (Right Hand Only)| Boolean | -|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | -|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | -|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | -|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | -|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | -|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | -|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | -|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | +|`/input/menu/click`| menu (Left Hand Only)| Boolean | +|`/input/system/click`| menu (Right Hand Only)| Boolean | +|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | +|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | +|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | +|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | +|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | +|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | +|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | +|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | |`/input/trigger/value`| trigger | Float | |`/input/trigger/value`| triggerPressed | Boolean (float cast to boolean) | |`/input/trigger/touch`| triggerTouched| Boolean (float cast to boolean) | diff --git a/Documentation~/features/metaquesttouchprocontrollerprofile.md b/Documentation~/features/metaquesttouchprocontrollerprofile.md index 9fbed60..7025280 100644 --- a/Documentation~/features/metaquesttouchprocontrollerprofile.md +++ b/Documentation~/features/metaquesttouchprocontrollerprofile.md @@ -3,7 +3,7 @@ uid: openxr-meta-quest-pro-touch-controller-profile --- # Meta Quest Pro Touch Controller Profile -Enables the OpenXR interaction profile for Meta Quest Pro controllers and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for Meta Quest Pro controllers and exposes the `` device layout within the [Unity Input System](xref:input-system-index). ## Available controls @@ -12,16 +12,16 @@ Enables the OpenXR interaction profile for Meta Quest Pro controllers and expose |`/input/thumbstick`| thumbstick | Vector2 | |`/input/squeeze/value`| grip | Float | |`/input/squeeze/value`| gripPressed | Boolean (float cast to boolean) | -|`/input/menu/click`| menu (Left Hand Only)| Boolean | -|`/input/system/click`| menu (Right Hand Only)| Boolean | -|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | -|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | -|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | -|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | -|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | -|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | -|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | -|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | +|`/input/menu/click`| menu (Left Hand Only)| Boolean | +|`/input/system/click`| menu (Right Hand Only)| Boolean | +|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | +|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | +|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | +|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | +|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | +|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | +|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | +|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | |`/input/trigger/value`| trigger | Float | |`/input/trigger/value`| triggerPressed | Boolean (float cast to boolean) | |`/input/trigger/touch`| triggerTouched| Boolean (float cast to boolean) | diff --git a/Documentation~/features/microsoftmotioncontrollerprofile.md b/Documentation~/features/microsoftmotioncontrollerprofile.md index 9f0f08f..382d0e1 100644 --- a/Documentation~/features/microsoftmotioncontrollerprofile.md +++ b/Documentation~/features/microsoftmotioncontrollerprofile.md @@ -3,11 +3,10 @@ uid: openxr-microsoft-mixed-reality-motion-controller-profile --- # Microsoft Mixed Reality Motion Controller Profile -Enables the OpenXR interaction profile for the Microsoft Mixed Reality Motion controller and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for the Microsoft Mixed Reality Motion controller and exposes the `` device layout within the [Unity Input System](xref:input-system-index). For more information about the Microsoft Mixed Reality Motion Controller interaction profile, see the [OpenXR Specification](https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#_microsoft_mixed_reality_motion_controller_profile). - ## Available controls | OpenXR Path | Unity Control Name | Type | @@ -16,7 +15,7 @@ For more information about the Microsoft Mixed Reality Motion Controller interac |`/input/trackpad`| touchpad | Vector2 | |`/input/squeeze/click`| grip | Float (boolean cast to float) | |`/input/squeeze/click`| gripPressed | Boolean | -|`/input/menu/click`| menu | Boolean | +|`/input/menu/click`| menu | Boolean | |`/input/trigger/value`| trigger | Float | |`/input/trigger/value`| triggerPressed | Boolean (float cast to boolean) | |`/input/thumbstick/click`| joystickClicked | Boolean | diff --git a/Documentation~/features/oculustouchcontrollerprofile.md b/Documentation~/features/oculustouchcontrollerprofile.md index d284a77..c302b99 100644 --- a/Documentation~/features/oculustouchcontrollerprofile.md +++ b/Documentation~/features/oculustouchcontrollerprofile.md @@ -3,7 +3,7 @@ uid: openxr-oculus-touch-controller-profile --- # Oculus Touch Controller Profile -Enables the OpenXR interaction profile for Oculus Touch controllers and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for Oculus Touch controllers and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). For more information about the Oculus Touch interaction profile, see the [OpenXR Specification](https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#_oculus_touch_controller_profile). @@ -14,16 +14,16 @@ For more information about the Oculus Touch interaction profile, see the [OpenXR |`/input/thumbstick`| thumbstick | Vector2 | |`/input/squeeze/value`| grip | Float | |`/input/squeeze/value`| gripPressed | Boolean (float cast to boolean) | -|`/input/menu/click`| menu (Left Hand Only)| Boolean | -|`/input/system/click`| menu (Right Hand Only)| Boolean | -|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | -|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | -|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | -|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | -|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | -|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | -|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | -|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | +|`/input/menu/click`| menu (Left Hand Only)| Boolean | +|`/input/system/click`| menu (Right Hand Only)| Boolean | +|`/input/a/click`| primaryButton (Right Hand Only) | Boolean | +|`/input/a/touch`| primaryTouched (Right Hand Only) | Boolean | +|`/input/b/click`| secondaryButton (Right Hand Only) | Boolean | +|`/input/b/touch`| secondaryTouched (Right Hand Only) | Boolean | +|`/input/x/click`| primaryButton (Left Hand Only) | Boolean | +|`/input/x/touch`| primaryTouched (Left Hand Only) | Boolean | +|`/input/y/click`| secondaryButton (Left Hand Only) | Boolean | +|`/input/y/touch`| secondaryTouched (Left Hand Only) | Boolean | |`/input/trigger/value`| trigger | Float | |`/input/trigger/value`| triggerPressed | Boolean (float cast to boolean) | |`/input/trigger/touch`| triggerTouched| Boolean (float cast to boolean) | diff --git a/Documentation~/features/performance-settings.md b/Documentation~/features/performance-settings.md index 4497529..86002fa 100644 --- a/Documentation~/features/performance-settings.md +++ b/Documentation~/features/performance-settings.md @@ -38,15 +38,15 @@ The performance level hints help an OpenXR runtime balance the tradeoffs it must You can set the following levels as hints about your application's current performance needs: -- **Power Savings**: At this level, the OpenXR runtime prioritizes energy conservation over consistent frame rendering and latency. -- **Sustained Low**: At this level, the OpenXR runtime tries to balance resource usage and high performance, prioritizing the former. Energy savings are prioritized over low latency, but the runtime tries to maintain a relatively stable frame rendering and XR compositing flow, as long as it's thermally sustainable. -- **Sustained High**: This level is the default hint, if none is set by your application. At this level, the OpenXR runtime prioritizes consistent rendering, XR compositing and latency in a thermal range that is sustainable. +- **Power Savings**: At this level, the OpenXR runtime prioritizes energy conservation over consistent frame rendering and latency. +- **Sustained Low**: At this level, the OpenXR runtime tries to balance resource usage and high performance, prioritizing the former. Energy savings are prioritized over low latency, but the runtime tries to maintain a relatively stable frame rendering and XR compositing flow, as long as it's thermally sustainable. +- **Sustained High**: This level is the default hint, if none is set by your application. At this level, the OpenXR runtime prioritizes consistent rendering, XR compositing and latency in a thermal range that is sustainable. - **Boost**: At this level, the OpenXR runtime allows maximum resource usage without trying to keep the device operating in a thermally sustainable range. If the device hardware exceeds its thermal limits, the runtime must throttle performance, so you should limit use of this performance level to short durations (less that 30 seconds). > [!NOTE] -> When setting the Performance Level Hint to **Sustained Low** or **Sustained High** levels, your application can still experience performance throttling. For example, a device might exceed thermal limits due to external circumstances, such as operating in a high-temperature environment or for an extended amount of time. You can use [Performance Notifications](#performance-settings-notifications) to detect such impending performance issues and lower application workload before the runtime must impose throttling. +> When setting the Performance Level Hint to **Sustained Low** or **Sustained High** levels, your application can still experience performance throttling. For example, a device might exceed thermal limits due to external circumstances, such as operating in a high-temperature environment or for an extended amount of time. You can use [Performance Notifications](#performance-settings-notifications) to detect such impending performance issues and lower application workload before the runtime must impose throttling. -Use the static method, [XrPerformanceSettingsFeature.SetPerformanceLevelHint](xref:UnityEngine.XR.OpenXR.Features.Extensions.PerformanceSettings.XrPerformanceSettingsFeature.SetPerformanceLevelHint*) to set a given performance level hint for a specific CPU or GPU performance domain. +Use the static method, [XrPerformanceSettingsFeature.SetPerformanceLevelHint](xref:UnityEngine.XR.OpenXR.Features.Extensions.PerformanceSettings.XrPerformanceSettingsFeature.SetPerformanceLevelHint*) to set a given performance level hint for a specific CPU or GPU performance domain. By choosing the lowest level that gives your application good performance, you can extend the device's battery life and avoid overheating. For example, you could set the **Power Savings** hint during loading screens. For normal operation, you could set **Sustained Low** for less demanding sequences, and **Sustained High** for more complex scenes. When appropriate, you could set the **Boost** hint to achieve maximum performance for a brief time. @@ -59,7 +59,7 @@ Here are some examples of how you might use performance level hints in different ```c# XrPerformanceSettingsFeature.SetPerformanceLevelHint(PerformanceDomain.CPU, PerformanceLevelHint.PowerSavings); XrPerformanceSettingsFeature.SetPerformanceLevelHint(PerformanceDomain.GPU, PerformanceLevelHint.PowerSavings); - + // Show a picture sequence and continue with app loading ``` @@ -84,7 +84,7 @@ Here are some examples of how you might use performance level hints in different ```c# XrPerformanceSettingsFeature.SetPerformanceLevelHint(PerformanceDomain.CPU, PerformanceLevelHint.Boost); - + // Run complex logic ``` @@ -96,19 +96,19 @@ The OpenXR runtime can inform your application about performance changes, so you Performance is categorized as one of the following performance states: - **Normal**: No performance degradation is expected and the app can run as usual. -- **Warning**: The OpenXR runtime is expecting performance degradation if device conditions do not improve. +- **Warning**: The OpenXR runtime is expecting performance degradation if device conditions do not improve. - **Impaired**: The device is suffering performance degradation. An OpenXR runtime monitors performance of the device CPU and GPU across a set of key performance areas, called subdomains. These subdomains include: * [Compositing](#compositing-subdomain): A runtime task that takes all rendered layers and combines them for display. * [Rendering](#rendering-subdomain): Your application's timely submission of frames to the compositor. -* [Thermal](#thermal-subdomain): The hardware device's temperature compared to its thermal limits. +* [Thermal](#thermal-subdomain): The hardware device's temperature compared to its thermal limits. If the performance state of a subdomain changes, the [XrPerformanceSettingsFeature](xref:UnityEngine.XR.OpenXR.Features.Extensions.PerformanceSettings.XrPerformanceSettingsFeature.OnXrPerformanceChangeNotification) object dispatches an event that describes the change. Refer to [Subscribe to performance notifications](#subscribe) for information about handling this event. When the performance state of a domain and subdomain changes for the worse, you should take mitigation measures that reduce application workload in that area. If you do not, the OpenXR runtime might impose its own, more drastic, measures. - + After a sufficient period (determined by the runtime) of improved performance, a performance state can change from impaired to warning, and from warning to normal. Leaving the impaired state means that the runtime has stopped its own mitigation measures. > [!TIP] @@ -120,8 +120,8 @@ After a sufficient period (determined by the runtime) of improved performance, a Compositing is a task performed by the OpenXR runtime to combine submitted frames for final display. The runtime must share CPU and GPU resources with your application while performing this task. If the runtime can't complete compositing in time, visual artifacts can occur. When in the impaired state, the OpenXR runtime might take actions that interfere with your application, such as limiting frame rate, ignoring submitted layers, or even shutting down the application. * In the **Normal** state, the compositor can consistently finish with sufficient margin. -* In the **Warning** state, the compositor is finishing its task in time, but the margin is considered insufficient. -* In the **Impaired** state, the compositor cannot finish its task in time. +* In the **Warning** state, the compositor is finishing its task in time, but the margin is considered insufficient. +* In the **Impaired** state, the compositor cannot finish its task in time. ### Rendering subdomain @@ -130,16 +130,16 @@ Your application's rendering pipeline must submit rendered layers to the composi * In the **Normal** state, your application is consistently submitting rendered frames to the compositor in time to be used. * In the **Warning** state, at least one layer is regularly submitted past the compositor deadline. -* In the **Impaired** state, late submission of frames has reached a critical threshold. +* In the **Impaired** state, late submission of frames has reached a critical threshold. ### Thermal subdomain -XR devices must stay within a safe operating temperature. When a device reaches its thermal limits, the OpenXR runtime must take drastic measures to lower heat generation. These mitigations can severely impact the user experience. +XR devices must stay within a safe operating temperature. When a device reaches its thermal limits, the OpenXR runtime must take drastic measures to lower heat generation. These mitigations can severely impact the user experience. * In the **Normal** state, the device is operating within a sustainable thermal range. * In the **Warning** state, the OpenXR runtime anticipates that the device will soon overheat under the current load. -* In the **Impaired** state, the OpenXR is taking measures such as throttling performance, to reduce the device temperature. +* In the **Impaired** state, the OpenXR is taking measures such as throttling performance, to reduce the device temperature. @@ -150,9 +150,9 @@ Subscribe to the [XrPerformanceSettingsFeature.OnXrPerformanceChangeNotification A notification event provides the following data (as a [PerformanceChangeNotification](xref:UnityEngine.XR.OpenXR.Features.Extensions.PerformanceSettings.PerformanceChangeNotification) struct): * Old performance state (normal, warning, or impaired) -* New performance state (normal, warning, or impaired) -* Affected domain (CPU or GPU) -* Affected subdomain (compositing, rendering, or thermal) +* New performance state (normal, warning, or impaired) +* Affected domain (CPU or GPU) +* Affected subdomain (compositing, rendering, or thermal) The following code snippet illustrates how you can subscribe to the performance notification event and handle performance changes (by calling your own application-defined functions that modify performance): diff --git a/Documentation~/features/valveindexcontrollerprofile.md b/Documentation~/features/valveindexcontrollerprofile.md index c2442de..774f9f9 100644 --- a/Documentation~/features/valveindexcontrollerprofile.md +++ b/Documentation~/features/valveindexcontrollerprofile.md @@ -3,11 +3,10 @@ uid: openxr-valve-index-controller-profile --- # Valve Index Controller Profile -Enables the OpenXR interaction profile for the Valve Index controler and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). +Enables the OpenXR interaction profile for the Valve Index controler and exposes the `` device layout within the [Unity Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/). For more information about the Valve Index interaction profile, see the [OpenXR Specification](https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#_htc_vive_controller_profile). - ## Available controls | OpenXR Path | Unity Control Name | Type | @@ -18,18 +17,18 @@ For more information about the Valve Index interaction profile, see the [OpenXR |`/input/a/touch`| primaryTouched | Boolean | |`/input/b/click`| secondaryButton | Boolean | |`/input/b/touch`| secondaryTouched | Boolean | -|`/input/squeeze/value`| grip | Float | +|`/input/squeeze/value`| grip | Float | |`/input/squeeze/value`| gripPressed | Boolean (cast from float) | |`/input/squeeze/force`| gripForce | Float | |`/input/trigger/click`| triggerPressed | Boolean | -|`/input/trigger/value`| trigger | Float | +|`/input/trigger/value`| trigger | Float | |`/input/trigger/touch`| triggerTouched | Boolean | |`/input/thumbstick`| thumbstick | Vector2 | |`/input/thumbstick/click`| thumbstickClicked | Boolean | |`/input/thumbstick/touch`| thumbstickTouched | Boolean | -|`/input/trackpad`| trackpad | Vector2 | +|`/input/trackpad`| trackpad | Vector2 | |`/input/trackpad/touch`| trackpadTouched | Boolean | -|`/input/trackpad/force`| trackpadForce | Float | +|`/input/trackpad/force`| trackpadForce | Float | |`/input/grip/pose` | devicePose | Pose | |`/input/aim/pose` | pointer | Pose | |`/output/haptic` | haptic | Vibrate | diff --git a/Documentation~/images/FoveatedRendering/xr-foveation-legacy-settings.png b/Documentation~/images/FoveatedRendering/xr-foveation-legacy-settings.png new file mode 100644 index 0000000..742d88e Binary files /dev/null and b/Documentation~/images/FoveatedRendering/xr-foveation-legacy-settings.png differ diff --git a/Documentation~/images/FoveatedRendering/xr-foveation-srp-api-settings.png b/Documentation~/images/FoveatedRendering/xr-foveation-srp-api-settings.png new file mode 100644 index 0000000..d95a92a Binary files /dev/null and b/Documentation~/images/FoveatedRendering/xr-foveation-srp-api-settings.png differ diff --git a/Documentation~/images/FoveatedRendering/xr-meta-feature-group.png b/Documentation~/images/FoveatedRendering/xr-meta-feature-group.png new file mode 100644 index 0000000..eb4e2f2 Binary files /dev/null and b/Documentation~/images/FoveatedRendering/xr-meta-feature-group.png differ diff --git a/Documentation~/index.md b/Documentation~/index.md index c27860c..2c4c448 100644 --- a/Documentation~/index.md +++ b/Documentation~/index.md @@ -98,7 +98,7 @@ The most important part of the diagnostic log is the section marked `==== OpenXR ## Known issues * For projects targeting HoloLens 2 that are using Out of the Box Unity OpenXR support, **Project Settings - > Player - > Resolution and Presentation - > Run in Background** must be enabled. For projects that are using the Microsoft OpenXR extended support package this is not required. -* An issue with an invalid stage space during startup may cause problems with the XR Origin component from the `com.unity.xr.interaction.toolkit` package, or the camera offset component in the `com.unity.xr.legacyinputhelpers` package. These packages will be updated shortly to contain fixes for this issue. Until then the workaround is to use the `Floor` Device Tracking Option setting. +* An issue with an invalid stage space during startup may cause problems with the XR Origin component from the `com.unity.xr.interaction.toolkit` package, or the camera offset component in the `com.unity.xr.legacyinputhelpers` package. These packages will be updated shortly to contain fixes for this issue. Until then the workaround is to use the `Floor` Device Tracking Option setting. ## Upgrading a project to use OpenXR diff --git a/Documentation~/input.md b/Documentation~/input.md index 75ad8c1..dc06341 100644 --- a/Documentation~/input.md +++ b/Documentation~/input.md @@ -4,7 +4,7 @@ uid: openxr-input # Input in Unity OpenXR -This page details how to use and configure OpenXR input within unity. +This page details how to use and configure OpenXR input within unity. For information on how to configure Unity to use OpenXR input, see the [Getting Started](#getting-started) section of this document. @@ -16,11 +16,11 @@ The Unity OpenXR package provides a set of controller layouts for various device To use OpenXR Input, you must select the correct interaction profiles features to send to OpenXR. To learn more about OpenXR features in Unity, see the [Interaction profile features](./index.md#interaction-profile-features) page. -Future versions of the Unity OpenXR Package will provide further integration with the OpenXR Input system. For smooth upgrading, Unity recommends that you use the device layouts included with the OpenXR package. These have the '(OpenXR)' suffix in the Unity Input System binding window. +Future versions of the Unity OpenXR Package will provide further integration with the OpenXR Input system. For smooth upgrading, Unity recommends that you use the device layouts included with the OpenXR package. These have the '(OpenXR)' suffix in the Unity Input System binding window. -Unity will provide documentation on these features when they become available. +Unity will provide documentation on these features when they become available. -Interaction profiles manifest themselves as device layouts in the Unity [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest/). +Interaction profiles manifest themselves as device layouts in the Unity [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest/). ## Getting Started @@ -63,19 +63,19 @@ Using OpenXR with Unity is the same as configuring any other input device using 1. Decide on what actions and action maps you want to use to describe your gameplay, experience or menu operations 2. Create an `Input Action` Asset, or use the one included with the [Sample](#run-the-sample). -3. Add the actions and action maps you defined in step 1 in the `Input Action` Asset you decided to use in step 2. +3. Add the actions and action maps you defined in step 1 in the `Input Action` Asset you decided to use in step 2. 4. Create bindings for each action. - When using OpenXR, you must either create a "Generic" binding, or use a binding to a device that Unity's OpenXR implementation specifically supports. For a list of these specific devices, see the [Interaction bindings](#interaction-bindings) section. + When using OpenXR, you must either create a "Generic" binding, or use a binding to a device that Unity's OpenXR implementation specifically supports. For a list of these specific devices, see the [Interaction bindings](#interaction-bindings) section. 5. Save your `Input Action` Asset. 6. Ensure your actions and action maps are enabled at runtime. - The [Sample](#run-the-sample) contains a helper script called `Action Asset Enabler` which enables every action within an `Input Action` Asset. If you want to enable or disable specific actions and action maps, you can manage this process yourself. + The [Sample](#run-the-sample) contains a helper script called `Action Asset Enabler` which enables every action within an `Input Action` Asset. If you want to enable or disable specific actions and action maps, you can manage this process yourself. -7. Write code that reads data from your actions. +7. Write code that reads data from your actions. - For more information, see the [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/) package documentation, or consult the [Sample](#run-the-sample) to see how it reads input from various actions. + For more information, see the [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/) package documentation, or consult the [Sample](#run-the-sample) to see how it reads input from various actions. 8. Enable the set of Interaction Features that your application uses. @@ -94,11 +94,11 @@ Unity requires the use of the Input System package when using OpenXR. Unity auto ### Interaction Profile Features -Each Interaction Profile Feature contains both the device layout for creating bindings in the Unity Input System and a set of bindings that we send to OpenXR. The OpenXR Runtime will determine which bindings to use based on the set of Interaction Profiles that we send to it. +Each Interaction Profile Feature contains both the device layout for creating bindings in the Unity Input System and a set of bindings that we send to OpenXR. The OpenXR Runtime will determine which bindings to use based on the set of Interaction Profiles that we send to it. Unity Recommends that Developers select only the Interaction Profiles that they are able to test their experience with. -Selecting an Interaction Profile from the features menu will add that device to the bindable devices in the Unity Input System. They will be selectable from under the **XR Controller** section of the binding options. +Selecting an Interaction Profile from the features menu will add that device to the bindable devices in the Unity Input System. They will be selectable from under the **XR Controller** section of the binding options. ![XR Controller Menu](images/xr-controller-input-menu.png) @@ -106,7 +106,7 @@ See [Set the interaction profile](xref:openxr-project-config#interaction-profile ### Mapping between OpenXR paths and Unity bindings -The OpenXR specification details a number of `Interaction Profiles` that you can use to suggest bindings to the OpenXR runtime. Unity uses its own existing XRSDK naming scheme to identify controls and devices and map OpenXR action data to them. +The OpenXR specification details a number of `Interaction Profiles` that you can use to suggest bindings to the OpenXR runtime. Unity uses its own existing XRSDK naming scheme to identify controls and devices and map OpenXR action data to them. The table below outlines the common mappings between OpenXR paths and Unity XRSDK Control names. Which controls are available on which devices is covered in the specific device documentation. @@ -118,7 +118,7 @@ Which controls are available on which devices is covered in the specific device |`/input/select/click`| select | Boolean | |`/input/menu/click`| menu | Boolean | |`/input/squeeze/value` | grip | Float | -|`/input/squeeze/click` | gripPressed | Boolean | +|`/input/squeeze/click` | gripPressed | Boolean | |`/input/squeeze/force` | gripForce | Boolean | |`/input/trigger/value` | trigger | Float | |`/input/trigger/squeeze` | triggerPressed | Boolean | @@ -127,7 +127,7 @@ Which controls are available on which devices is covered in the specific device |`/input/thumbstick/touch`| joystickTouched | Vector2 | |`/input/thumbstick/clicked`| joystickClicked | Vector2 | |`/input/trackpad`| touchpad | Vector2 | -|`/input/trackpad/touch`| touchpadTouched | Boolean | +|`/input/trackpad/touch`| touchpadTouched | Boolean | |`/input/trackpad/clicked` | touchpadClicked | Boolean | |`/input/a/click` | primaryButton | Boolean | |`/input/a/touch` | primaryTouched | Boolean | @@ -160,12 +160,12 @@ For backwards compatibility, the existing individual controls will continue to b ### HMD bindings -To read HMD data from OpenXR, use the existing HMD bindings available in the Unity Input System. Unity recommends binding the `centerEye` action of the `XR HMD` device for HMD tracking. The following image shows the use of `centerEye` bindings with the `Tracked Pose Driver`. +To read HMD data from OpenXR, use the existing HMD bindings available in the Unity Input System. Unity recommends binding the `centerEye` action of the `XR HMD` device for HMD tracking. The following image shows the use of `centerEye` bindings with the `Tracked Pose Driver`. ![hmd-config-tpd](images/hmd-config-tpd.png) -OpenXR HMD Data contains the following elements. +OpenXR HMD Data contains the following elements. - Center Eye - Device - Left Eye @@ -190,12 +190,12 @@ These are exposed in the Unity Input System through the following bindings. Thes When using OpenXR the `centerEye` and `device` values are identical. -The HMD position reported by Unity when using OpenXR is calculated from the currently selected Tracking Origin space within OpenXR. +The HMD position reported by Unity when using OpenXR is calculated from the currently selected Tracking Origin space within OpenXR. The Unity `Device Tracking Origin` is mapped to `Local Space`. The Unity `Floor Tracking Origin` is mapped to `Stage Space`. -By default, Unity attempts to attach the `Stage Space` where possible. To help manage the different tracking origins, use the `XR Origin` from the XR Interaction Package, or the `Camera Offset` component from the Legacy Input Helpers package. +By default, Unity attempts to attach the `Stage Space` where possible. To help manage the different tracking origins, use the `XR Origin` from the XR Interaction Package, or the `Camera Offset` component from the Legacy Input Helpers package. ### Interaction bindings diff --git a/Documentation~/project-configuration.md b/Documentation~/project-configuration.md index 8da472d..98e0c25 100644 --- a/Documentation~/project-configuration.md +++ b/Documentation~/project-configuration.md @@ -3,7 +3,7 @@ uid: openxr-project-config --- # Project configuration -Use the **XR Plug-in Management** settings to configure the OpenXR plug-in for your project. +Use the **XR Plug-in Management** settings to configure the OpenXR plug-in for your project. To get started, follow the instructions in [Enable the OpenXR plug-in](#enable-openxr). This also installs the OpenXR package, if needed. Once installed and enabled, you can configure your project settings as described in the [OpenXR Project settings](#project-settings) section. @@ -23,7 +23,6 @@ Some OpenXR features require specific Unity Project settings to function properl * **[Interaction profiles](#interaction-profile)**: choose which OpenXR interaction profile to use for a platform. * **[Color space](#color-space)**: When using the Open GL graphics API, you must set the **Color Space** to **Linear**. - ### Enable the OpenXR plug-in @@ -46,7 +45,6 @@ To enable OpenXR: > [!TIP] > If your project uses OpenXR on more than one platform build target, you must enable the OpenXR plugin for each platform. - ### Enable OpenXR features @@ -66,8 +64,7 @@ To enable an OpenXR feature: 5. Select the features and feature groups to enable. 6. Repeat for any other platform build targets your project supports. -If a feature has its own configuration options, you can click its gear icon (![](images/gear.png)) to open the feature's settings window. Some features provide an icon following their name that links to documentation. - +If a feature has its own configuration options, you can click its gear icon (![](images/gear.png)) to open the feature's settings window. Some features provide an icon following their name that links to documentation. See [OpenXR Features](index.md#openxr-features) for more information about features and groups. @@ -95,7 +92,6 @@ For more information see: * [SinglePassStereoMode](xref:UnityEngine.Rendering.SinglePassStereoMode) * [Single Pass Instanced rendering](xref:SinglePassInstancing) - ### Set the color submission mode @@ -120,6 +116,7 @@ better rendering integrity in scenes with high dynamic range or luminance gradie may be noticeable in LDR formats). Reasonable rules of thumb when choosing a setting: + * For PC XR devices, consider your target devices and choose a performant HDR setting if you need HDR. This often depends on the graphics API, GPU, and XR device together, so it may require extra performance testing. @@ -149,7 +146,7 @@ Many OpenXR runtimes can use depth information to perform more accurate and stab |**Depth 16 bit**|A shared depth buffer using 16 bits per pixel is used.| |**Depth 24 bit**|A shared depth buffer using 24 bits per pixel is used.| -The best choice can depend on the platform and specific target devices. Depth can significantly reduce judder and other XR rendering artifacts, especially with mixed reality (MR) content that combines rendered graphics with real-world video. The 16-bit option uses less bandwidth to transfer data between the CPU and GPU, which can improve rendering performance and battery life on mobile-type devices. However, the 24-bit option can minimize sorting issues and "z-fighting". +The best choice can depend on the platform and specific target devices. Depth can significantly reduce judder and other XR rendering artifacts, especially with mixed reality (MR) content that combines rendered graphics with real-world video. The 16-bit option uses less bandwidth to transfer data between the CPU and GPU, which can improve rendering performance and battery life on mobile-type devices. However, the 24-bit option can minimize sorting issues and "z-fighting". A reasonable rule of thumb to use when choosing a setting is: @@ -206,17 +203,17 @@ To add an OpenXR interaction profile: 1. Open the **Project Settings** window (menu: **Edit > Project Settings**). 2. Click **XR Plug-in Management** to expand the plug-in section (if necessary). 3. Select **OpenXR** in the list of XR plug-ins. -4. In the **Interaction Profiles** section, click the **+** button to add a profile. +4. In the **Interaction Profiles** section, click the **+** button to add a profile. 5. Select the profile to add from the list. -![](images/openxr-choose-interaction-profile.png)
*Choose an interaction profile* +![Choose Interaction Profile](images/openxr-choose-interaction-profile.png)
*Choose an interaction profile* See [Input in OpenXR](xref:openxr-input) for more information. ### Set the rendering color space -When you use the OpenGL graphics API, you must set the Unity Editor to use the linear [color space](xref:LinearRendering-LinearOrGammaWorkflow). +When you use the OpenGL graphics API, you must set the Unity Editor to use the linear [color space](xref:LinearRendering-LinearOrGammaWorkflow). To change the color space: @@ -225,7 +222,6 @@ To change the color space: 3. Scroll to the **Other Settings** section. (Click **Other Settings** to open the section, if necessary.) 4. Under the **Rendering** area, choose a **Color Space**. - ## Project validation @@ -241,13 +237,12 @@ You can also open a separate **OpenXR Project Validation** window for OpenXR (me ![feature-validation](images/ProjectValidation/feature-validation.png) -Rules that pass validation are not shown unless you enable **Show all**. +Rules that pass validation are not shown unless you enable **Show all**. Some rules provide a **Fix** button that updates the configuration so that the rule passes validation. Other rules provide an **Edit** button that takes you to the relevant setting so that you can make the necessary adjustments yourself. You can enable **Ignore build errors** to bypass the pre-build validation check. However, any misconfigured features in your app might not work at runtime. - ### Validation issues reported in XR Plug-in Management ![loader-with-issues](images/ProjectValidation/loader-with-issues.png) diff --git a/Editor/FeatureSupport/FeatureHelpers.cs b/Editor/FeatureSupport/FeatureHelpers.cs index 471e7d4..96a4883 100644 --- a/Editor/FeatureSupport/FeatureHelpers.cs +++ b/Editor/FeatureSupport/FeatureHelpers.cs @@ -142,20 +142,23 @@ public static AllFeatureInfo GetAllFeatureInfo(BuildTargetGroup group) { return ret; } - // Find any current extensions that are already serialized - Dictionary currentExts = - new Dictionary(); + var currentExts = new Dictionary(); + foreach (var ext in openXrSettings.features) { - if (ext != null) + if (ext == null) + continue; + + // Extensions are named with their assigned build group. + if (ext.name.Contains(group.ToString())) { foreach (Attribute attr in Attribute.GetCustomAttributes(ext.GetType())) { if (attr is OpenXRFeatureAttribute) { var extAttr = (OpenXRFeatureAttribute)attr; - currentExts[extAttr] = ext; + currentExts[extAttr] = (OpenXRFeature)ext; break; } } diff --git a/Editor/FeatureSupport/OpenXRFeatureEditor.cs b/Editor/FeatureSupport/OpenXRFeatureEditor.cs index 48784dc..32399b1 100644 --- a/Editor/FeatureSupport/OpenXRFeatureEditor.cs +++ b/Editor/FeatureSupport/OpenXRFeatureEditor.cs @@ -478,9 +478,9 @@ public void OnGUI(BuildTargetGroup buildTargetGroup) if (buildTargetGroup != activeBuildTarget || mustInitializeFeatures) { - InitializeFeatures(buildTargetGroup); + var allFeatureInfo = InitializeFeatures(buildTargetGroup); OpenXRFeatureSetManager.activeBuildTarget = buildTargetGroup; - OpenXRFeatureSetManager.SetFeaturesFromEnabledFeatureSets(buildTargetGroup); + OpenXRFeatureSetManager.SetFeaturesFromEnabledFeatureSets(buildTargetGroup, allFeatureInfo); // This must be done after SetFeaturesFromEnabledFeatureSets to ensure we dont get an infinite update loop mustInitializeFeatures = false; @@ -528,7 +528,7 @@ bool HasSettingsToDisplay(OpenXRFeature feature) return false; } - void InitializeFeatures(BuildTargetGroup group) + FeatureHelpersInternal.AllFeatureInfo InitializeFeatures(BuildTargetGroup group) { selectionListItems.Clear(); filteredListItems.Clear(); @@ -605,6 +605,8 @@ void InitializeFeatures(BuildTargetGroup group) initialSelectedItem = selectionListItems[lastSelectedItemIndex[activeBuildTarget]]; } OnSelectItem(initialSelectedItem); + + return allFeatureInfos; } void InitStyles() diff --git a/Editor/FeatureSupport/OpenXRFeatureSetManager.cs b/Editor/FeatureSupport/OpenXRFeatureSetManager.cs index a32d38d..3f92b01 100644 --- a/Editor/FeatureSupport/OpenXRFeatureSetManager.cs +++ b/Editor/FeatureSupport/OpenXRFeatureSetManager.cs @@ -346,8 +346,13 @@ internal static FeatureSetInfo GetFeatureSetInfoWithId(BuildTargetGroup buildTar /// The build target group to process features sets for. public static void SetFeaturesFromEnabledFeatureSets(BuildTargetGroup buildTargetGroup) { - var featureSets = FeatureSetInfosForBuildTarget(buildTargetGroup); var extInfo = FeatureHelpersInternal.GetAllFeatureInfo(buildTargetGroup); + SetFeaturesFromEnabledFeatureSets(buildTargetGroup, extInfo); + } + + internal static void SetFeaturesFromEnabledFeatureSets(BuildTargetGroup buildTargetGroup, FeatureHelpersInternal.AllFeatureInfo extInfo) + { + var featureSets = FeatureSetInfosForBuildTarget(buildTargetGroup); var fsi = s_FeatureSetState[buildTargetGroup]; diff --git a/Editor/OpenXRMangementSettings.cs b/Editor/OpenXRMangementSettings.cs index b3532cf..15e6575 100644 --- a/Editor/OpenXRMangementSettings.cs +++ b/Editor/OpenXRMangementSettings.cs @@ -54,7 +54,7 @@ public bool PopulateNewSettingsInstance(ScriptableObject obj) } catch (System.Exception ex) { - Debug.Log($"Erorr adding new OpenXR Settings object to build settings.\n{ex.Message}"); + Debug.Log($"Error adding new OpenXR Settings object to build settings.\n{ex.Message}"); } return false; diff --git a/Editor/OpenXRPackageSettings.cs b/Editor/OpenXRPackageSettings.cs index 4ca7786..2dad996 100644 --- a/Editor/OpenXRPackageSettings.cs +++ b/Editor/OpenXRPackageSettings.cs @@ -59,12 +59,10 @@ public static OpenXRPackageSettings GetOrCreateInstance() OpenXRPackageSettings settings = ScriptableObject.CreateInstance(); if (settings != null) { - string newAssetName = String.Format(s_PackageSettingsAssetName); - string assetPath = GetAssetPathForComponents(s_PackageSettingsDefaultSettingsPath); - if (!string.IsNullOrEmpty(assetPath)) + string path = OpenXRPackageSettingsAssetPath(); + if (!string.IsNullOrEmpty(path)) { - assetPath = Path.Combine(assetPath, newAssetName); - AssetDatabase.CreateAsset(settings, assetPath); + AssetDatabase.CreateAsset(settings, path); EditorBuildSettings.AddConfigObject(Constants.k_SettingsKey, settings, true); } } diff --git a/MockRuntime/MockRuntime.cs b/MockRuntime/MockRuntime.cs index 6bfd217..3014757 100644 --- a/MockRuntime/MockRuntime.cs +++ b/MockRuntime/MockRuntime.cs @@ -256,6 +256,7 @@ public static void ResetDefaults() ClearFunctionCallbacks(); } + /// protected internal override void OnInstanceDestroy(ulong instance) { #if UNITY_INCLUDE_TESTS diff --git a/MockRuntime/Native~/mock_runtime/mock_loader.cpp b/MockRuntime/Native~/mock_runtime/mock_loader.cpp index 73b267a..edf34e8 100644 --- a/MockRuntime/Native~/mock_runtime/mock_loader.cpp +++ b/MockRuntime/Native~/mock_runtime/mock_loader.cpp @@ -131,10 +131,10 @@ uint64_t s_nextInstanceId = 11; // Start at 11 because 10 is a special test case XR_EXT_user_presence_SPEC_VERSION }, { - XR_TYPE_EXTENSION_PROPERTIES, - nullptr, - XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME, - XR_EXT_performance_settings_SPEC_VERSION + XR_TYPE_EXTENSION_PROPERTIES, + nullptr, + XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME, + XR_EXT_performance_settings_SPEC_VERSION } #if defined(XR_USE_PLATFORM_ANDROID) ,{ diff --git a/MockRuntime/README.md b/MockRuntime/README.md index 720b1da..228e74d 100644 --- a/MockRuntime/README.md +++ b/MockRuntime/README.md @@ -1,6 +1,6 @@ # Mock Runtime 0.0.2 -OpenXR Runtime that allows for testing without a device. +OpenXR Runtime that allows for testing without a device. ## Paths @@ -26,5 +26,4 @@ The MockRuntime manages a list of input states, one for each combination of inte ## Conformance Automation Extension -The MockRuntime implements the conformance automation extension and allows [Input State](#input-state) values to be set. When a value is set via Conformance Automation it is temporarly stored in the extension itself rather than directly settings the equivalent value in Mock Runtime. The values stored in the extension will then be read by the MockRuntime during `xrSyncActions` and copied into the runtime state where they will persist. - +The MockRuntime implements the conformance automation extension and allows [Input State](#input-state) values to be set. When a value is set via Conformance Automation it is temporarly stored in the extension itself rather than directly settings the equivalent value in Mock Runtime. The values stored in the extension will then be read by the MockRuntime during `xrSyncActions` and copied into the runtime state where they will persist. diff --git a/MockRuntime/android.meta b/MockRuntime/android.meta index fdcd7e7..e31291e 100644 --- a/MockRuntime/android.meta +++ b/MockRuntime/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2ce1ee354e8d4e1b9f111b99c44d7e36 +guid: 46ef69a788774c8f9734e3c7d8760527 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/android/arm64.meta b/MockRuntime/android/arm64.meta index 66f3d17..f00f33f 100644 --- a/MockRuntime/android/arm64.meta +++ b/MockRuntime/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a2c8efad54444311974e96a6a042f2a4 +guid: bc547e75e1184784b31b60d53c9149aa folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/android/arm64/libmock_api.so.meta b/MockRuntime/android/arm64/libmock_api.so.meta index d3c490f..df09bb0 100644 --- a/MockRuntime/android/arm64/libmock_api.so.meta +++ b/MockRuntime/android/arm64/libmock_api.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 25eb03f09754469ab1c5ab7e97be6321 +guid: 8b36eb96cc47476e9a7b251f36230329 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/android/arm64/libmock_runtime.so.meta b/MockRuntime/android/arm64/libmock_runtime.so.meta index a459045..8404803 100644 --- a/MockRuntime/android/arm64/libmock_runtime.so.meta +++ b/MockRuntime/android/arm64/libmock_runtime.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e9d429e4d40849c4bf6a0834ba648585 +guid: 9a3bfccf454f4ef18af89fa6738deea6 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/android/arm64/libopenxr_loader.so.meta b/MockRuntime/android/arm64/libopenxr_loader.so.meta index 42f0adc..6eb08b4 100644 --- a/MockRuntime/android/arm64/libopenxr_loader.so.meta +++ b/MockRuntime/android/arm64/libopenxr_loader.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 843e960941404b5ebe240868bb5f38e8 +guid: 658eaedb875e4131916e7914cf4b6955 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/android/x64.meta b/MockRuntime/android/x64.meta index bf42906..787fb0a 100644 --- a/MockRuntime/android/x64.meta +++ b/MockRuntime/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3b43b7a56aa14d29b2e4c2129f96670a +guid: 4a01b760c11f424bbc574540008fcbf5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/android/x64/libmock_api.so.meta b/MockRuntime/android/x64/libmock_api.so.meta index dec4132..a17e9fc 100644 --- a/MockRuntime/android/x64/libmock_api.so.meta +++ b/MockRuntime/android/x64/libmock_api.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e502474d0b254fdf82e9f728b36fa478 +guid: 62c3a0a9daba40dc961416cbfd90cd6d PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/android/x64/libmock_runtime.so.meta b/MockRuntime/android/x64/libmock_runtime.so.meta index a2f3b16..3d0722c 100644 --- a/MockRuntime/android/x64/libmock_runtime.so.meta +++ b/MockRuntime/android/x64/libmock_runtime.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 306ba831ba814251a70430504c24f69c +guid: 559fc6a0c8414aa48f8a1afe03e2c4f0 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/android/x64/libopenxr_loader.so.meta b/MockRuntime/android/x64/libopenxr_loader.so.meta index 019feb0..016e2ba 100644 --- a/MockRuntime/android/x64/libopenxr_loader.so.meta +++ b/MockRuntime/android/x64/libopenxr_loader.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 126908a8de91421dadfcb5df35449b8c +guid: 988e2ca0c4824e9fa865ac54ddc3ab0f PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/osx.meta b/MockRuntime/osx.meta index 3a56e65..50f89d9 100644 --- a/MockRuntime/osx.meta +++ b/MockRuntime/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 749d6b4b85974d6c87c8d507b8d24053 +guid: 68b600f511c64be7831bd9cf3bbf6364 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/osx/mock_api.dylib b/MockRuntime/osx/mock_api.dylib index ae366c3..d456097 100644 Binary files a/MockRuntime/osx/mock_api.dylib and b/MockRuntime/osx/mock_api.dylib differ diff --git a/MockRuntime/osx/mock_api.dylib.meta b/MockRuntime/osx/mock_api.dylib.meta index c63960a..7a71f74 100644 --- a/MockRuntime/osx/mock_api.dylib.meta +++ b/MockRuntime/osx/mock_api.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eababee1203949739e3a845361b55438 +guid: 86db7cfd7f164bb1a21d863f3be6be03 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/osx/mock_runtime.dylib b/MockRuntime/osx/mock_runtime.dylib index 3a33e2c..541e11e 100644 Binary files a/MockRuntime/osx/mock_runtime.dylib and b/MockRuntime/osx/mock_runtime.dylib differ diff --git a/MockRuntime/osx/mock_runtime.dylib.meta b/MockRuntime/osx/mock_runtime.dylib.meta index 2b5e1a5..5383166 100644 --- a/MockRuntime/osx/mock_runtime.dylib.meta +++ b/MockRuntime/osx/mock_runtime.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3ef92138ed1c47bca3c9ed83d82f9ffc +guid: 3144e5ac754a409390884cad01402bd4 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/osx/openxr_loader.dylib b/MockRuntime/osx/openxr_loader.dylib index 86c5513..a3633a9 100644 Binary files a/MockRuntime/osx/openxr_loader.dylib and b/MockRuntime/osx/openxr_loader.dylib differ diff --git a/MockRuntime/osx/openxr_loader.dylib.meta b/MockRuntime/osx/openxr_loader.dylib.meta index 629cd35..4f46273 100644 --- a/MockRuntime/osx/openxr_loader.dylib.meta +++ b/MockRuntime/osx/openxr_loader.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5251b29091544b878434f0b5d8d329aa +guid: 100b033ad2924c94a40c058107141dfb PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/windows.meta b/MockRuntime/windows.meta index 4232cd9..f7dd8af 100644 --- a/MockRuntime/windows.meta +++ b/MockRuntime/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1712bf6f2e804fc3a94173af0eb6098a +guid: 5ed16d08770840ea80c34214d82b7811 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/windows/x64.meta b/MockRuntime/windows/x64.meta index 6a4555e..6c831d5 100644 --- a/MockRuntime/windows/x64.meta +++ b/MockRuntime/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 164c7dfdad4548a2a03fae2b3413c507 +guid: f7bdcb92d2be494a8a9eb2176b4473d5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/MockRuntime/windows/x64/mock_api.dll b/MockRuntime/windows/x64/mock_api.dll index 46b14e0..b8b60d6 100644 Binary files a/MockRuntime/windows/x64/mock_api.dll and b/MockRuntime/windows/x64/mock_api.dll differ diff --git a/MockRuntime/windows/x64/mock_api.dll.meta b/MockRuntime/windows/x64/mock_api.dll.meta index 9923133..b1f70aa 100644 --- a/MockRuntime/windows/x64/mock_api.dll.meta +++ b/MockRuntime/windows/x64/mock_api.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9e74705f36aa43d8bac076f613ea4d02 +guid: 349299ef52ae4cf9962f4ac6b197953e PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/windows/x64/mock_runtime.dll b/MockRuntime/windows/x64/mock_runtime.dll index 6073db7..8f83188 100644 Binary files a/MockRuntime/windows/x64/mock_runtime.dll and b/MockRuntime/windows/x64/mock_runtime.dll differ diff --git a/MockRuntime/windows/x64/mock_runtime.dll.meta b/MockRuntime/windows/x64/mock_runtime.dll.meta index e1fc04c..ca472a3 100644 --- a/MockRuntime/windows/x64/mock_runtime.dll.meta +++ b/MockRuntime/windows/x64/mock_runtime.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e41af3303a834283982e052388a326d6 +guid: 08d1cc5452e3427a90768000b88a5feb PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/MockRuntime/windows/x64/openxr_loader.dll b/MockRuntime/windows/x64/openxr_loader.dll index 2b8ebbb..357858e 100644 Binary files a/MockRuntime/windows/x64/openxr_loader.dll and b/MockRuntime/windows/x64/openxr_loader.dll differ diff --git a/MockRuntime/windows/x64/openxr_loader.dll.meta b/MockRuntime/windows/x64/openxr_loader.dll.meta index 5bb68e9..39edfda 100644 --- a/MockRuntime/windows/x64/openxr_loader.dll.meta +++ b/MockRuntime/windows/x64/openxr_loader.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 57cdca7881b64a81951fc73b4ab51d34 +guid: 6a4c81412e3c4b69ab63e9953b00d2aa PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Features/Extensions/XrPerformanceSettingsFeature.cs b/Runtime/Features/Extensions/XrPerformanceSettingsFeature.cs index 62f6983..324f30b 100644 --- a/Runtime/Features/Extensions/XrPerformanceSettingsFeature.cs +++ b/Runtime/Features/Extensions/XrPerformanceSettingsFeature.cs @@ -43,15 +43,21 @@ public class XrPerformanceSettingsFeature : OpenXRFeature /// /// /// Refer to [Performance notifications](xref:openxr-performance-settings#performance-settings-notifications) for additional information. - /// + /// /// + /// /// Example of subscribing to the event and handling the performance change notification: - /// + /// + /// + /// /// - /// + /// /// Example of handling the performance change notification: - /// + /// + /// + /// /// /// - /// public static event UnityAction OnXrPerformanceChangeNotification; /// @@ -93,6 +99,12 @@ public static bool SetPerformanceLevelHint(PerformanceDomain domain, Performance return false; } + /// + /// When an instance of the Performance setting feature is created, it allows us to confirm that the instance has been created, that the extension is enabled + /// and we have successfully registed the performance notification callback + /// + /// XR Session Instance + /// True if the instance has successfully been created. Otherwise it returns false. protected internal override bool OnInstanceCreate(ulong xrInstance) { return base.OnInstanceCreate(xrInstance) && diff --git a/Runtime/Features/FoveatedRenderingFeature.cs.meta b/Runtime/Features/FoveatedRenderingFeature.cs.meta index 9192f76..d7ff3bc 100644 --- a/Runtime/Features/FoveatedRenderingFeature.cs.meta +++ b/Runtime/Features/FoveatedRenderingFeature.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: f6a75d1f5ff90154ea2a8e58222a1f59 \ No newline at end of file +guid: f6a75d1f5ff90154ea2a8e58222a1f59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Features/Interactions/DPadInteraction.cs b/Runtime/Features/Interactions/DPadInteraction.cs index bb296cf..fb31d1d 100644 --- a/Runtime/Features/Interactions/DPadInteraction.cs +++ b/Runtime/Features/Interactions/DPadInteraction.cs @@ -102,7 +102,7 @@ private void OnGUI() #endif /// - /// A dpad-like interaction feature that allows the application to bind one or more digital actions to a trackpad or thumbstick as though it were a dpad. + /// A dpad-like interaction feature that allows the application to bind one or more digital actions to a trackpad or thumbstick as though it were a dpad. XrInteractionProfileDpadBindingEXT /// [Preserve, InputControlLayout(displayName = "D-Pad Binding (OpenXR)", commonUsages = new[] { "LeftHand", "RightHand" })] public class DPad : XRController @@ -225,7 +225,7 @@ protected override void FinishSetup() /// /// The OpenXR Extension strings. This is used by OpenXR to check if this extension is available or enabled. - /// /// + /// public string[] extensionStrings = { "XR_KHR_binding_modification", "XR_EXT_dpad_binding" }; #if UNITY_EDITOR diff --git a/Runtime/Features/Interactions/EyeGazeInteraction.cs b/Runtime/Features/Interactions/EyeGazeInteraction.cs index 28d7140..0c2faa0 100644 --- a/Runtime/Features/Interactions/EyeGazeInteraction.cs +++ b/Runtime/Features/Interactions/EyeGazeInteraction.cs @@ -17,7 +17,7 @@ namespace UnityEngine.XR.OpenXR.Features.Interactions { /// - /// This enables the use of eye gaze interaction profiles in OpenXR. It enables XR_EXT_eye_gaze_interaction in the underlying runtime. + /// This enables the use of eye gaze interaction profiles in OpenXR. It enables XR_EXT_eye_gaze_interaction in the underlying runtime. /// This creates a new with the characteristic. This new device has both and input features, as well as and usages to determine if the gaze is available. /// #if UNITY_EDITOR @@ -39,7 +39,7 @@ public class EyeGazeInteraction : OpenXRInteractionFeature public const string featureId = "com.unity.openxr.feature.input.eyetracking"; /// - /// An Input System device based off the Eye Gaze Interaction Profile. Enabled through . + /// An Input System device based off the Eye Gaze Interaction Profile. Enabled through . /// [Preserve, InputControlLayout(displayName = "Eye Gaze (OpenXR)", isGenericTypeOfDevice = true)] public class EyeGazeDevice : OpenXRDevice @@ -73,7 +73,7 @@ protected override void FinishSetup() private const string kDeviceLocalizedName = "Eye Tracking OpenXR"; - /// The OpenXR Extension string. This is used by OpenXR to check if this extension is available or enabled. See eye gaze interaction extension documentation for more information on this OpenXR extension. + /// The OpenXR Extension string. This is used by OpenXR to check if this extension is available or enabled. See eye gaze interaction extension documentation for more information on this OpenXR extension. public const string extensionString = "XR_EXT_eye_gaze_interaction"; private const string layoutName = "EyeGaze"; @@ -198,7 +198,7 @@ protected override void RegisterActionMapsWithRuntime() } /// - /// Tags that can be used with to get eye tracking related input features. See for additional usages. + /// Tags that can be used with to get eye tracking related input features. See for additional usages. /// public static class EyeTrackingUsages { diff --git a/Runtime/Features/Interactions/HandCommonPosesInteraction.cs b/Runtime/Features/Interactions/HandCommonPosesInteraction.cs index 8912cf2..ccf75ff 100644 --- a/Runtime/Features/Interactions/HandCommonPosesInteraction.cs +++ b/Runtime/Features/Interactions/HandCommonPosesInteraction.cs @@ -112,7 +112,7 @@ protected override void FinishSetup() /// /// The OpenXR Extension string. This is used by OpenXR to check if this extension is available or enabled. - /// /// + /// public const string extensionString = "XR_EXT_hand_interaction"; #if UNITY_EDITOR diff --git a/Runtime/Features/Interactions/HandInteractionProfile.cs b/Runtime/Features/Interactions/HandInteractionProfile.cs index cff5580..8accc62 100644 --- a/Runtime/Features/Interactions/HandInteractionProfile.cs +++ b/Runtime/Features/Interactions/HandInteractionProfile.cs @@ -246,7 +246,7 @@ protected override void FinishSetup() /// /// The OpenXR Extension string. This is used by OpenXR to check if this extension is available or enabled. - /// /// + /// public const string extensionString = "XR_EXT_hand_interaction"; /// diff --git a/Runtime/Features/Interactions/KHRSimpleControllerProfile.cs b/Runtime/Features/Interactions/KHRSimpleControllerProfile.cs index 055032f..0e63ee9 100644 --- a/Runtime/Features/Interactions/KHRSimpleControllerProfile.cs +++ b/Runtime/Features/Interactions/KHRSimpleControllerProfile.cs @@ -39,7 +39,7 @@ public class KHRSimpleControllerProfile : OpenXRInteractionFeature public const string featureId = "com.unity.openxr.feature.input.khrsimpleprofile"; /// - /// An Input System device based off the Khronos Simple Controller interaction profile. This device contains one haptic output motor. + /// An Input System device based off the Khronos Simple Controller interaction profile. This device contains one haptic output motor. /// [Preserve, InputControlLayout(displayName = "Khronos Simple Controller (OpenXR)", commonUsages = new[] { "LeftHand", "RightHand" })] public class KHRSimpleController : XRControllerWithRumble @@ -131,7 +131,7 @@ protected override void FinishSetup() } /// - /// OpenXR string that represents the Interaction Profile. + /// OpenXR string that represents the Interaction Profile. /// public const string profile = "/interaction_profiles/khr/simple_controller"; diff --git a/Runtime/Features/Interactions/MetaQuestTouchPlusControllerProfile.cs b/Runtime/Features/Interactions/MetaQuestTouchPlusControllerProfile.cs index d6dbbe7..c8769b0 100644 --- a/Runtime/Features/Interactions/MetaQuestTouchPlusControllerProfile.cs +++ b/Runtime/Features/Interactions/MetaQuestTouchPlusControllerProfile.cs @@ -372,6 +372,7 @@ protected override void FinishSetup() private const string kDeviceLocalizedName = "Meta Quest Touch Plus Controller OpenXR"; + /// protected internal override bool OnInstanceCreate(ulong instance) { // Requires the plus controller extension diff --git a/Runtime/Features/Interactions/MetaQuestTouchProControllerProfile.cs b/Runtime/Features/Interactions/MetaQuestTouchProControllerProfile.cs index ae3680d..3071b21 100644 --- a/Runtime/Features/Interactions/MetaQuestTouchProControllerProfile.cs +++ b/Runtime/Features/Interactions/MetaQuestTouchProControllerProfile.cs @@ -405,6 +405,7 @@ protected override void FinishSetup() private const string kDeviceLocalizedName = "Meta Quest Pro Touch Controller OpenXR"; + /// protected internal override bool OnInstanceCreate(ulong instance) { // Requires the pro controller extension diff --git a/Runtime/Features/Interactions/MicrosoftHandInteraction.cs b/Runtime/Features/Interactions/MicrosoftHandInteraction.cs index 1496e1f..22a9146 100644 --- a/Runtime/Features/Interactions/MicrosoftHandInteraction.cs +++ b/Runtime/Features/Interactions/MicrosoftHandInteraction.cs @@ -18,7 +18,7 @@ namespace UnityEngine.XR.OpenXR.Features.Interactions { /// - /// This enables the use of Microsoft hand interaction profiles in OpenXR. It enables XR_MSFT_hand_interaction in the underyling runtime. + /// This enables the use of Microsoft hand interaction profiles in OpenXR. It enables XR_MSFT_hand_interaction in the underyling runtime. /// This creates a new with the characteristic. /// #if UNITY_EDITOR @@ -40,7 +40,7 @@ public class MicrosoftHandInteraction : OpenXRInteractionFeature public const string featureId = "com.unity.openxr.feature.input.handtracking"; /// - /// An Input System device based off the hand interaction profile in the Hand Interaction Extension. Enabled through . + /// An Input System device based off the hand interaction profile in the Hand Interaction Extension. Enabled through . /// [Preserve, InputControlLayout(displayName = "Hololens Hand (OpenXR)", commonUsages = new[] { "LeftHand", "RightHand" })] public class HoloLensHand : XRController @@ -139,7 +139,7 @@ protected override void FinishSetup() } } - /// The OpenXR Extension string. OpenXR uses this to check if this extension is available or enabled. See hand interaction extension documentation for more information on this OpenXR extension. + /// The OpenXR Extension string. OpenXR uses this to check if this extension is available or enabled. See hand interaction extension documentation for more information on this OpenXR extension. public const string extensionString = "XR_MSFT_hand_interaction"; /// diff --git a/Runtime/Features/Interactions/PalmPoseInteraction.cs b/Runtime/Features/Interactions/PalmPoseInteraction.cs index a4dd713..fe57f7a 100644 --- a/Runtime/Features/Interactions/PalmPoseInteraction.cs +++ b/Runtime/Features/Interactions/PalmPoseInteraction.cs @@ -115,7 +115,7 @@ protected override void FinishSetup() private const string kDeviceLocalizedName = "Palm Pose Interaction OpenXR"; /// /// The OpenXR Extension string. This is used by OpenXR to check if this extension is available or enabled. - /// /// + /// public const string extensionString = "XR_EXT_palm_pose"; #if UNITY_EDITOR diff --git a/Runtime/Features/OpenXRFeature.cs b/Runtime/Features/OpenXRFeature.cs index 6a2eb6c..6e96dc4 100644 --- a/Runtime/Features/OpenXRFeature.cs +++ b/Runtime/Features/OpenXRFeature.cs @@ -159,6 +159,7 @@ protected internal virtual void OnSubsystemDestroy() { } /// Called after xrCreateInstance. /// /// Handle of the xrInstance + /// Always returns true, as this is intended to be overridden. protected internal virtual bool OnInstanceCreate(ulong xrInstance) => true; /// @@ -520,18 +521,30 @@ protected void DestroySubsystem() where T : class, ISubsystem OpenXRLoaderBase.Instance.DestroySubsystem(); } - /// + /// Called when the object is loaded. + /// + /// Additional information: + /// ScriptableObject.OnEnable + /// protected virtual void OnEnable() { } - /// + /// Called when the object is loaded. + /// + /// Additional information: + /// ScriptableObject.OnDisable + /// protected virtual void OnDisable() { // Virtual for future expansion and to match OnEnable } - /// + /// Called when the object is loaded. + /// + /// Additional information: + /// ScriptableObject.Awake + /// protected virtual void Awake() { } @@ -758,14 +771,18 @@ protected internal static void SetStatAsFloat(ulong statId, float value) } /// - /// Assigns an unsigned integer value to a registered statistic. Its thread safe. - /// IMPORTANT: Due to limitations in native code, values over 16777216 (1<<24) might not be reflected accurately. + /// Assigns an unsigned integer value to a registered statistic. It is thread safe. /// + /// + /// IMPORTANT: Due to limitations in native code, values over 16777216 (1<<24) might not be reflected accurately. + /// /// Identifier of the previously registered statistic. /// Unsigned integer value to be assigned to the stat. protected internal static void SetStatAsUInt(ulong statId, uint value) { runtime_SetStatAsUInt(statId, value); } + + } } diff --git a/Runtime/Features/OpenXRInteractionFeature.cs b/Runtime/Features/OpenXRInteractionFeature.cs index 21a0c3c..1196baa 100644 --- a/Runtime/Features/OpenXRInteractionFeature.cs +++ b/Runtime/Features/OpenXRInteractionFeature.cs @@ -59,7 +59,7 @@ protected internal class ActionBinding /// OpenXR path for the interaction public string interactionPath; - /// Optional OpenXR user paths + /// Optional OpenXR user paths public List userPaths; } @@ -72,7 +72,7 @@ protected internal class ActionConfig /// The name of the action, reported into the InputSystem as the name of the control that represents the input data for this action. This name can only contain a-z lower case letters. public string name; - /// The type of data this action will report. + /// The type of data this action will report. public ActionType type; /// Human readable name for the action @@ -81,7 +81,7 @@ protected internal class ActionConfig /// The underlying physical input controls to use as the value for this action public List bindings; - /// These will be tagged onto features. See + /// These will be tagged onto features. See public List usages; /// Tag to determine if certain action is additive and could be added to the existing profiles @@ -93,10 +93,10 @@ protected internal class ActionConfig /// protected internal class DeviceConfig { - /// The for the that will represent this ActionMapConfig. See + /// The for the that will represent this ActionMapConfig. See public InputDeviceCharacteristics characteristics; - /// OpenXR user path that this device maps to. + /// OpenXR user path that this device maps to. public string userPath; } diff --git a/Runtime/OpenXRSpaceSettings.cs b/Runtime/OpenXRSpaceSettings.cs index 2f91135..33b355a 100644 --- a/Runtime/OpenXRSpaceSettings.cs +++ b/Runtime/OpenXRSpaceSettings.cs @@ -34,7 +34,7 @@ public static void SetAllowRecentering(bool allowRecentering, float floorOffset /// /// This method doesn't trigger a recenter event, as this event has to be initiated from the platform's runtime. /// - /// See for more information. + /// See for more information. /// public static void RefreshRecenterSpace() { diff --git a/Runtime/OpenXRUtility.cs b/Runtime/OpenXRUtility.cs index 840bf0d..4d5935f 100644 --- a/Runtime/OpenXRUtility.cs +++ b/Runtime/OpenXRUtility.cs @@ -37,14 +37,14 @@ public static Pose ComputePoseToWorldSpace(Transform t, Camera camera) /// /// Returns if the current session is in the focused state. - /// See XR_SESSION_STATE_FOCUSED. for reference. + /// See XR_SESSION_STATE_FOCUSED. for reference. /// public static bool IsSessionFocused => Internal_IsSessionFocused(); /// /// Returns the change of user presence, such as when the user has taken off or put on an XR headset. /// If the system does not support user presence sensing, runtime assumes that the user is always present and IsUserPresent always returns True. /// If the system supports the sensing of user presence, returns true when detected the presence of a user and returns false when detected the absence of a user. - /// See XR_EXT_user_presence. for reference. + /// See XR_EXT_user_presence. for reference. /// public static bool IsUserPresent => Internal_GetUserPresence(); diff --git a/Runtime/UnitySubsystemsManifest.json b/Runtime/UnitySubsystemsManifest.json index 96d54fa..5ded683 100644 --- a/Runtime/UnitySubsystemsManifest.json +++ b/Runtime/UnitySubsystemsManifest.json @@ -1,6 +1,6 @@ { "name": "OpenXR XR Plugin", - "version": "1.12.0", + "version": "1.12.1", "libraryName": "UnityOpenXR", "displays": [ { diff --git a/Runtime/android.meta b/Runtime/android.meta index 08854cb..4c4c8ba 100644 --- a/Runtime/android.meta +++ b/Runtime/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 11b352d9e8f04012818b366998f63e23 +guid: 7c66cf240b694c8b97f95745378bd38e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/android/arm64.meta b/Runtime/android/arm64.meta index 8fe0702..7cc46c2 100644 --- a/Runtime/android/arm64.meta +++ b/Runtime/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f0ce0001280044fb80e70060dc8f72a2 +guid: 24aa61677949481fa02e8eaf6b3460ec folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/android/arm64/libUnityOpenXR.so b/Runtime/android/arm64/libUnityOpenXR.so index 7054436..45e10d1 100644 Binary files a/Runtime/android/arm64/libUnityOpenXR.so and b/Runtime/android/arm64/libUnityOpenXR.so differ diff --git a/Runtime/android/arm64/libUnityOpenXR.so.meta b/Runtime/android/arm64/libUnityOpenXR.so.meta index 85e8971..352eaca 100644 --- a/Runtime/android/arm64/libUnityOpenXR.so.meta +++ b/Runtime/android/arm64/libUnityOpenXR.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e03aa776fc064eb9a6190330b2699870 +guid: 10c1b68efa0a4cb581a6025fe5d2dfed PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/android/x64.meta b/Runtime/android/x64.meta index 5dae5d0..9030439 100644 --- a/Runtime/android/x64.meta +++ b/Runtime/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8700fcbb3d9e43c3969e0bdcf2f03c83 +guid: 712eb23638184d06b7afb2ffe35feacc folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/android/x64/libUnityOpenXR.so b/Runtime/android/x64/libUnityOpenXR.so index 9f61492..65bd32a 100644 Binary files a/Runtime/android/x64/libUnityOpenXR.so and b/Runtime/android/x64/libUnityOpenXR.so differ diff --git a/Runtime/android/x64/libUnityOpenXR.so.meta b/Runtime/android/x64/libUnityOpenXR.so.meta index 991e4b3..59d0d5f 100644 --- a/Runtime/android/x64/libUnityOpenXR.so.meta +++ b/Runtime/android/x64/libUnityOpenXR.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 028756e2f206401a896b598027d9226b +guid: 12b4e32b5b604e4eba50c5633eddc4bd PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/osx.meta b/Runtime/osx.meta index 1fe467a..e5cf11f 100644 --- a/Runtime/osx.meta +++ b/Runtime/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ca8f720730e54bb583ca77a3ab1d0667 +guid: 7d2c6d9227864dca970f90dbfbf382dd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/osx/UnityOpenXR.dylib b/Runtime/osx/UnityOpenXR.dylib index a8c463b..2cc031a 100644 Binary files a/Runtime/osx/UnityOpenXR.dylib and b/Runtime/osx/UnityOpenXR.dylib differ diff --git a/Runtime/osx/UnityOpenXR.dylib.meta b/Runtime/osx/UnityOpenXR.dylib.meta index 5343b61..e423733 100644 --- a/Runtime/osx/UnityOpenXR.dylib.meta +++ b/Runtime/osx/UnityOpenXR.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5c6f42b456e54f33b74d841693e951c2 +guid: a5fe7db0ca744d8b9eff4be710bd3dac PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/universalwindows.meta b/Runtime/universalwindows.meta index 278f9e7..48fc737 100644 --- a/Runtime/universalwindows.meta +++ b/Runtime/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f2dea4dd1ab747efb163435df9026565 +guid: a02bf17244474bdea57dc5d125759aa3 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/universalwindows/arm32.meta b/Runtime/universalwindows/arm32.meta index 5bacc90..a41f9da 100644 --- a/Runtime/universalwindows/arm32.meta +++ b/Runtime/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 902397da2c8c49e1a9abf2a18395046d +guid: 747ba6479fbb49cc9d2070559714cafe folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/universalwindows/arm32/UnityOpenXR.dll b/Runtime/universalwindows/arm32/UnityOpenXR.dll index b600721..428a5dd 100644 Binary files a/Runtime/universalwindows/arm32/UnityOpenXR.dll and b/Runtime/universalwindows/arm32/UnityOpenXR.dll differ diff --git a/Runtime/universalwindows/arm32/UnityOpenXR.dll.meta b/Runtime/universalwindows/arm32/UnityOpenXR.dll.meta index c117df3..0b0ebb5 100644 --- a/Runtime/universalwindows/arm32/UnityOpenXR.dll.meta +++ b/Runtime/universalwindows/arm32/UnityOpenXR.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c373231d94da4987b881d89ca50a47f7 +guid: acabc63d1129425aac06ddce84efeb42 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/universalwindows/arm64.meta b/Runtime/universalwindows/arm64.meta index 628537b..644ba58 100644 --- a/Runtime/universalwindows/arm64.meta +++ b/Runtime/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e575fbc9e9284e60beb2c32297371e78 +guid: 9194de2a754a4212a1c4601b8633e8e6 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/universalwindows/arm64/UnityOpenXR.dll b/Runtime/universalwindows/arm64/UnityOpenXR.dll index e63423e..d69a992 100644 Binary files a/Runtime/universalwindows/arm64/UnityOpenXR.dll and b/Runtime/universalwindows/arm64/UnityOpenXR.dll differ diff --git a/Runtime/universalwindows/arm64/UnityOpenXR.dll.meta b/Runtime/universalwindows/arm64/UnityOpenXR.dll.meta index 09a0c77..c8dac95 100644 --- a/Runtime/universalwindows/arm64/UnityOpenXR.dll.meta +++ b/Runtime/universalwindows/arm64/UnityOpenXR.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ffc1fb5994054109b756e895609e083f +guid: 791f4b83d6234f93b940d34d5fbb6140 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/universalwindows/x64.meta b/Runtime/universalwindows/x64.meta index b4d2ef3..0fea888 100644 --- a/Runtime/universalwindows/x64.meta +++ b/Runtime/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3b87244c66134cd9993e92960de3b254 +guid: 4de71ad37f334e6dac852891d2aebdec folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/universalwindows/x64/UnityOpenXR.dll b/Runtime/universalwindows/x64/UnityOpenXR.dll index af3ac70..49ee09f 100644 Binary files a/Runtime/universalwindows/x64/UnityOpenXR.dll and b/Runtime/universalwindows/x64/UnityOpenXR.dll differ diff --git a/Runtime/universalwindows/x64/UnityOpenXR.dll.meta b/Runtime/universalwindows/x64/UnityOpenXR.dll.meta index f96d995..bdddc07 100644 --- a/Runtime/universalwindows/x64/UnityOpenXR.dll.meta +++ b/Runtime/universalwindows/x64/UnityOpenXR.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aaad55a7e9ef49cf99a696b78d61a60f +guid: 8dd95c785fb6400280a03180e7b7da07 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/windows.meta b/Runtime/windows.meta index 431a41b..e45c1cc 100644 --- a/Runtime/windows.meta +++ b/Runtime/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a75573d50894c6995345720e9a51092 +guid: 241114ce1b424f3d8e62b2b6a1620305 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/windows/x64.meta b/Runtime/windows/x64.meta index 23d63d3..69371c8 100644 --- a/Runtime/windows/x64.meta +++ b/Runtime/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8d885263c95a4dcead04a9d5fe9327e3 +guid: 7f72dc6245ec4fe5a20cde3b0f2c518a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/windows/x64/UnityOpenXR.dll b/Runtime/windows/x64/UnityOpenXR.dll index fe1bcc6..f101a31 100644 Binary files a/Runtime/windows/x64/UnityOpenXR.dll and b/Runtime/windows/x64/UnityOpenXR.dll differ diff --git a/Runtime/windows/x64/UnityOpenXR.dll.meta b/Runtime/windows/x64/UnityOpenXR.dll.meta index e44a12a..be2d26a 100644 --- a/Runtime/windows/x64/UnityOpenXR.dll.meta +++ b/Runtime/windows/x64/UnityOpenXR.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 41f7c6f78f3e410cbe179cd15b4b57a8 +guid: 37e077e6727443269030b0626cd65dec PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/android.meta b/RuntimeDebugger/android.meta index 1db82b2..14fdeeb 100644 --- a/RuntimeDebugger/android.meta +++ b/RuntimeDebugger/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6c26a66c50234c27acdbc9269c5e4bc2 +guid: 71b20859d24c465ea784f33a312adc22 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/android/arm64.meta b/RuntimeDebugger/android/arm64.meta index 9dfd9b7..db68a09 100644 --- a/RuntimeDebugger/android/arm64.meta +++ b/RuntimeDebugger/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: da552620ad2f417089f2de4a4574cdf4 +guid: e335b06946514f138d26703da0f54e1c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/android/arm64/libopenxr_runtime_debugger.so.meta b/RuntimeDebugger/android/arm64/libopenxr_runtime_debugger.so.meta index 1175781..dae013f 100644 --- a/RuntimeDebugger/android/arm64/libopenxr_runtime_debugger.so.meta +++ b/RuntimeDebugger/android/arm64/libopenxr_runtime_debugger.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 41e8f0e96e3a4728a161027a8a36cc5a +guid: fb3e67fc718c4b25ba9d8085effb8359 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/android/x64.meta b/RuntimeDebugger/android/x64.meta index c442174..c51ddb3 100644 --- a/RuntimeDebugger/android/x64.meta +++ b/RuntimeDebugger/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ab21dee6f4e14013bf84a050f7a0ee0d +guid: 5ccee58f74364ed0aa82baf2cec0e6b7 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/android/x64/libopenxr_runtime_debugger.so.meta b/RuntimeDebugger/android/x64/libopenxr_runtime_debugger.so.meta index 35d47d8..57f683e 100644 --- a/RuntimeDebugger/android/x64/libopenxr_runtime_debugger.so.meta +++ b/RuntimeDebugger/android/x64/libopenxr_runtime_debugger.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 94519271c5d942e5a5c3ca42a6d19ba0 +guid: dfe03463b4664242a7753ec0b3658fb5 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/osx.meta b/RuntimeDebugger/osx.meta index c65ebc3..efeafc9 100644 --- a/RuntimeDebugger/osx.meta +++ b/RuntimeDebugger/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3834fbfdaff242d0aa5472dbac823de6 +guid: 2644fa9d96fc4dba9ce3a039d0a17fd5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/osx/openxr_runtime_debugger.dylib b/RuntimeDebugger/osx/openxr_runtime_debugger.dylib index fe2892b..8ef62b1 100644 Binary files a/RuntimeDebugger/osx/openxr_runtime_debugger.dylib and b/RuntimeDebugger/osx/openxr_runtime_debugger.dylib differ diff --git a/RuntimeDebugger/osx/openxr_runtime_debugger.dylib.meta b/RuntimeDebugger/osx/openxr_runtime_debugger.dylib.meta index 67a4213..fc6c7ff 100644 --- a/RuntimeDebugger/osx/openxr_runtime_debugger.dylib.meta +++ b/RuntimeDebugger/osx/openxr_runtime_debugger.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 853dbe37812b4640a9f7bb15d6d68463 +guid: f52b4aafbb5a47bfbb7df3f3c82abcca PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/universalwindows.meta b/RuntimeDebugger/universalwindows.meta index 847d024..52f976a 100644 --- a/RuntimeDebugger/universalwindows.meta +++ b/RuntimeDebugger/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c18b495ecbd846c08e354b060ce00414 +guid: c18c4c899bbd4dca9ef8b3e5f59b3286 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/universalwindows/arm32.meta b/RuntimeDebugger/universalwindows/arm32.meta index aafca8b..9492830 100644 --- a/RuntimeDebugger/universalwindows/arm32.meta +++ b/RuntimeDebugger/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3f66d892e76d49f8bf12961a5e0a328e +guid: 8c43ae3adc0f421b82b071725755d884 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll b/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll index e7c758e..7a2dc32 100644 Binary files a/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll and b/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll differ diff --git a/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll.meta b/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll.meta index 48656a5..6a6b39b 100644 --- a/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll.meta +++ b/RuntimeDebugger/universalwindows/arm32/openxr_runtime_debugger.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e0156b9647bb4426b9d58ad950817d19 +guid: 54b562beeb5640b99693d2824141a030 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/universalwindows/arm64.meta b/RuntimeDebugger/universalwindows/arm64.meta index 7c51a02..62499c5 100644 --- a/RuntimeDebugger/universalwindows/arm64.meta +++ b/RuntimeDebugger/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 20791ea956a9439e9cfc20c52d6a7157 +guid: 4157a0fbf02c42f58656a23f6043e3d4 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll b/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll index 48c3ea0..12d2535 100644 Binary files a/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll and b/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll differ diff --git a/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll.meta b/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll.meta index 681a299..bea5c6d 100644 --- a/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll.meta +++ b/RuntimeDebugger/universalwindows/arm64/openxr_runtime_debugger.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a33120ba51f34934b6c94e0c812ad1c9 +guid: 463ecc15a1324a62a54b66d93fd5d627 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/universalwindows/x64.meta b/RuntimeDebugger/universalwindows/x64.meta index a3839f7..97bfbd5 100644 --- a/RuntimeDebugger/universalwindows/x64.meta +++ b/RuntimeDebugger/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 76008eb5f3084d2fabc78c3d161a3e42 +guid: c2e89b2dafb44dbb99a1603415b34011 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll b/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll index 01be6c5..0e60455 100644 Binary files a/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll and b/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll differ diff --git a/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll.meta b/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll.meta index ce556c5..e19db29 100644 --- a/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll.meta +++ b/RuntimeDebugger/universalwindows/x64/openxr_runtime_debugger.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 584e24eb98b64d3b9e620496a98cc2f8 +guid: 8d8801f8bc034153a800381aee429667 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeDebugger/windows.meta b/RuntimeDebugger/windows.meta index edf7b0f..df3469e 100644 --- a/RuntimeDebugger/windows.meta +++ b/RuntimeDebugger/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1f23bd12c7a944abbecdce2f90a88fd7 +guid: c6fa9bfdb16547d3a431c52ee9d7b7ad folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/windows/x64.meta b/RuntimeDebugger/windows/x64.meta index 9194f27..9bc0d21 100644 --- a/RuntimeDebugger/windows/x64.meta +++ b/RuntimeDebugger/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a48fd1aec7394a2c88f183b57cfc383b +guid: ea4fa4aff79a4c56abb74fd171e622b7 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll b/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll index aebb1e5..c81bc8b 100644 Binary files a/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll and b/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll differ diff --git a/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll.meta b/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll.meta index 5afc36d..81efe77 100644 --- a/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll.meta +++ b/RuntimeDebugger/windows/x64/openxr_runtime_debugger.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4066ff6df377498d845548374b1c8803 +guid: 7ceaf4dd10254ac18d9cee409b4e29c6 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeLoaders/android.meta b/RuntimeLoaders/android.meta index b498b0c..30aa7e2 100644 --- a/RuntimeLoaders/android.meta +++ b/RuntimeLoaders/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3a8c0da18cd24b29b6b8a712cc3f73cb +guid: d48b259f2e8e4e838f495c893c753dc2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/android/openxr_loader.aar.meta b/RuntimeLoaders/android/openxr_loader.aar.meta index c548184..5743fa3 100644 --- a/RuntimeLoaders/android/openxr_loader.aar.meta +++ b/RuntimeLoaders/android/openxr_loader.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 59c0ef5b10ce44d2936c772deb6d6b0b +guid: 4f518122b6af498095ba4ef1f705c0a9 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeLoaders/universalwindows.meta b/RuntimeLoaders/universalwindows.meta index 6aa56de..61ec0b1 100644 --- a/RuntimeLoaders/universalwindows.meta +++ b/RuntimeLoaders/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: de88f25c72d84223b53b207cfcc648e3 +guid: ff82efab2c6d4ace8239bc399693a118 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/universalwindows/arm32.meta b/RuntimeLoaders/universalwindows/arm32.meta index f995523..908c9b9 100644 --- a/RuntimeLoaders/universalwindows/arm32.meta +++ b/RuntimeLoaders/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 86495ac80c104877943dea90886b9bb8 +guid: b61b63686d2146098e55c6c968fbd89f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/universalwindows/arm32/openxr_loader.dll.meta b/RuntimeLoaders/universalwindows/arm32/openxr_loader.dll.meta index 76429e3..7b18a9c 100644 --- a/RuntimeLoaders/universalwindows/arm32/openxr_loader.dll.meta +++ b/RuntimeLoaders/universalwindows/arm32/openxr_loader.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c5ab65e4013141d1af8b015099cbd773 +guid: ab27a1dab5ab4981b0cda183b6bf5e5e PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeLoaders/universalwindows/arm64.meta b/RuntimeLoaders/universalwindows/arm64.meta index 57fbd11..2790028 100644 --- a/RuntimeLoaders/universalwindows/arm64.meta +++ b/RuntimeLoaders/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bea70427268c43b28a9baf1728195db0 +guid: 5437c4d4b64b44958e150520fa21754a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/universalwindows/arm64/openxr_loader.dll.meta b/RuntimeLoaders/universalwindows/arm64/openxr_loader.dll.meta index 1cb5448..d762b44 100644 --- a/RuntimeLoaders/universalwindows/arm64/openxr_loader.dll.meta +++ b/RuntimeLoaders/universalwindows/arm64/openxr_loader.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a979001874dc480d808185f48170daa3 +guid: 4f0f6904f1844b2e8e7a0d79e29f64d1 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeLoaders/universalwindows/x64.meta b/RuntimeLoaders/universalwindows/x64.meta index f0bf59e..25415f9 100644 --- a/RuntimeLoaders/universalwindows/x64.meta +++ b/RuntimeLoaders/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 376c294d1518479ea463048a93346c01 +guid: d95a8762df4b4649a021a7357c12966d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/universalwindows/x64/openxr_loader.dll.meta b/RuntimeLoaders/universalwindows/x64/openxr_loader.dll.meta index da3e61e..68f8535 100644 --- a/RuntimeLoaders/universalwindows/x64/openxr_loader.dll.meta +++ b/RuntimeLoaders/universalwindows/x64/openxr_loader.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3f0490c82f3a4afea123db4c1c1f73f7 +guid: 55b175b57a504d64aeed41ac6c2c3451 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/RuntimeLoaders/windows.meta b/RuntimeLoaders/windows.meta index 218ff07..61a5c9f 100644 --- a/RuntimeLoaders/windows.meta +++ b/RuntimeLoaders/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 59b14f51c8374bb5860ccd812d54bd85 +guid: 705034d12b5c458cab844ddefe4c1244 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/windows/x64.meta b/RuntimeLoaders/windows/x64.meta index 5dd1d93..a84690d 100644 --- a/RuntimeLoaders/windows/x64.meta +++ b/RuntimeLoaders/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6ad16c481d654019a9e52bff9c9fb0f4 +guid: 6960071b6f1e40da8d1c9ed548d2411c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/RuntimeLoaders/windows/x64/openxr_loader.dll.meta b/RuntimeLoaders/windows/x64/openxr_loader.dll.meta index feab0d0..2168a22 100644 --- a/RuntimeLoaders/windows/x64/openxr_loader.dll.meta +++ b/RuntimeLoaders/windows/x64/openxr_loader.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 35449e5878da4fe793f34968562cd8a7 +guid: 9d1d8e05d19f4c7595b12e13f5f82cd1 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Samples~/Controller/README.md b/Samples~/Controller/README.md index 76a445d..1a71323 100644 --- a/Samples~/Controller/README.md +++ b/Samples~/Controller/README.md @@ -1,3 +1,3 @@ # Controller Sample -Demonstrates retrieving input from an XR controller with OpenXR using the Unity [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest/). +Demonstrates retrieving input from an XR controller with OpenXR using the Unity [Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest/). diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/android.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/android.meta index 71def65..71b8dc4 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/android.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0416c6773e1841c49992cd0e8c4977a9 +guid: 860ccf01b2b14f3e91ef1fc5c69a3b7b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/android/arm64.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/android/arm64.meta index ac40fe8..afff50d 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/android/arm64.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4b45bb9d706b48c8a5af4470e6bf64c2 +guid: da21fe3e15964dff9776b17a0d5690c5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/android/x64.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/android/x64.meta index 02bc4e7..011444f 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/android/x64.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8210b1c376004e27910f0fe7cca8115a +guid: 030e1eb14c564bb797a80c3fd63c02f7 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx.meta index 69a035a..150bfdf 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8a6ace9ec2874dc8963def943370e348 +guid: 618fdeb0e3a74399928455b780312cfd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib index 950b9ae..c45893d 100644 Binary files a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib and b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib differ diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib.meta index d06ce41..bc51a76 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/osx/InterceptFeaturePlugin.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 04f7cd048b7348958d8fc7e98bb9f7cf +guid: 322fc0c69d2d4c829694bb8eac199d59 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows.meta index f452405..a75b457 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 07488d9cd1cd48e49cc706376d9cd3ca +guid: 0ae12f15bb5b4524ac60e01d09e20a9b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm32.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm32.meta index 7e8ad12..c590c98 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm32.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 73c1decf593143489652136e72f4773e +guid: daadd717d3c3457b935e4876693f4c7d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm64.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm64.meta index 9068b35..8c5c274 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm64.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 65e766ecc2174a70bb5f11b732072e08 +guid: dafc555dfe08442eb756fde4f355d8bb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/x64.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/x64.meta index 6a6bb6e..aa56406 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/x64.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 910e5a52bc8a48af89110dfd28e13b16 +guid: af87757484c844d399f61230ba044212 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows.meta index 5928dc1..7fcc9a6 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c1a58a610edf41948f837cbaf94a824c +guid: 287187e237d94967a6ba06d4d23563ce folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64.meta b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64.meta index 82d79d0..64f439f 100644 --- a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64.meta +++ b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ab439098adf842758c845ea20ce22fa9 +guid: 1d50231c4b4b46e1a783ee778f25efc3 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64/InterceptFeaturePlugin.dll b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64/InterceptFeaturePlugin.dll index fffd1b4..f0a74ce 100644 Binary files a/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64/InterceptFeaturePlugin.dll and b/Samples~/InterceptFeature/InterceptFeaturePlugin/windows/x64/InterceptFeaturePlugin.dll differ diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/android.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/android.meta index ec5d443..6b38e3e 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/android.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/android.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6e940590a5184147901eea05f10ecc09 +guid: 136c964678ec4206a60f50c0a22002f9 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64.meta index ac84400..d306a59 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 49fbfb681252442b8ab94f2c9a542f35 +guid: 0e21bf08694c4b9680e11357909856b6 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64/libMeshingFeaturePlugin.so.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64/libMeshingFeaturePlugin.so.meta index 02f93f6..c254b83 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64/libMeshingFeaturePlugin.so.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/arm64/libMeshingFeaturePlugin.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2f4c15fd8f0b4e909764ec3617de7d55 +guid: 285586bae8a94e8eb69fc37c4ec41a6e PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64.meta index 599dea3..4bf3784 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: efb1ae7d6fc34941a8b7980b266bfa85 +guid: c0bcc8581dcd437080bfa94504297a7a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64/libMeshingFeaturePlugin.so.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64/libMeshingFeaturePlugin.so.meta index 221d265..c38e487 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64/libMeshingFeaturePlugin.so.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/android/x64/libMeshingFeaturePlugin.so.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 39be949eb3bf44bd99afe6cf0f1adf09 +guid: 413075a12c704b46a7ce0f5577a2ede5 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx.meta index 2688606..bb2b79b 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e30f3589e7674cca84fe5ce25200ff76 +guid: 9736db82372a441ab26e9298a321a8ee folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib index 8d757fd..43a10c7 100644 Binary files a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib and b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib differ diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib.meta index 1426a5a..7f01a09 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/osx/MeshingFeaturePlugin.dylib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1333881b4eae4c26973a56b2fba35ed3 +guid: 4032e212dbdd4973ae58784ba7a53410 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows.meta index 9caf2cc..615fcf7 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2602b68cc2784533b921949864b1b844 +guid: 1f5d77d071b74378b353997ba8799910 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm32.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm32.meta index 3a66058..6007069 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm32.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm32.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4cddc13aafa540e69c23f490f5183f87 +guid: f0682bc6a22a46fabe576c8a8059e189 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm64.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm64.meta index 6917d71..c253784 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm64.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/arm64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1424519ab22f4532bbf006dd436e100a +guid: 8fc8135d170341c9aa02498c84d50aa1 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64.meta index f4bb4a8..dc4bc89 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a18b02e0c102483f9bce94cc2e6d3226 +guid: 3b92ced1be874e01a9ed5484ac24ff1e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64/MeshingFeaturePlugin.dll b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64/MeshingFeaturePlugin.dll index e80231d..0543f65 100644 Binary files a/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64/MeshingFeaturePlugin.dll and b/Samples~/MeshingFeature/MeshingFeaturePlugin/universalwindows/x64/MeshingFeaturePlugin.dll differ diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows.meta index 98d487d..a5d18a7 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c2cbda8a981d4a9396677ff0fa6491a8 +guid: b4db28153ab9460eaac5cad786b0a966 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64.meta index c21affa..3818587 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a2be2654b77342beadb5c9e61d2be445 +guid: e7f0105234924efb8ffe400f970eb88f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll index 90d16b6..8fb589f 100644 Binary files a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll and b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll differ diff --git a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll.meta b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll.meta index 1ce5096..a5aa3f6 100644 --- a/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll.meta +++ b/Samples~/MeshingFeature/MeshingFeaturePlugin/windows/x64/MeshingFeaturePlugin.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b62e406e60964611a505f74f04b5d224 +guid: cbfbcab218f540fa9495b01171655e87 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/package.json b/package.json index 33be82d..920c495 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.unity.xr.openxr", "displayName": "OpenXR Plugin", - "version": "1.12.0", + "version": "1.12.1", "unity": "2021.3", "description": "OpenXR is an open, royalty-free standard developed by Khronos that aims to simplify AR/VR development by allowing developers to target a wide range of AR/VR devices. Use this plug-in to enable OpenXR in XR Plug-in Management.", "keywords": [ @@ -34,15 +34,15 @@ } ], "_upm": { - "changelog": "### Added\n\n* Add class `MetaQuestTouchPlusControllerProfile.QuestTouchPlusController` interaction profile to support Meta Quest Touch Plus Controllers.\n* Added a validation rule to warn you that soft shadows can negatively affect performance for Microsoft HoloLens.\n* Added a validation rule to infrom you to make the OpenXR Loader an active loader in XR Plugin Management if there are active OpenXR features in the OpenXR settings.\n* Added `OpenXRSettings.autoColorSubmissionMode` boolean property to specify OpenXR to use a platform-supported color format in the display swapchain, or for you to manually set which format should OpenXR to use.\n* Added `OpenXRSettings.colorSubmissionModes` array property to control the color format used by the OpenXR display swapchain. The available options can be chosen from the `OpenXRSettings.ColorSubmissionModeGroup` enum. OpenXR will use supported color formats by the platform, starting from the first option in the list. In case none of the color formats supplied is supported by the platform, an error will be thrown. If no color formats are assigned, the format used will be RGBA32.\n* Added `Automatic Color Submission Mode` toggle and `Color Submission Modes` list to the OpenXR project settings tab, allowing you to manually specify the preferred color format to be used by the display swapchain. OpenXR will use supported color formats by the platform, starting from the first option in the list. In case none of the color formats supplied is supported by the platform, an error will be thrown. If no color formats are assigned, the format used will be RGBA32.\n\n### Fixed\n\n* Fixed sort order of OpenXR features listed based first on priority, then by name, preventing spurious changes in Settings files." + "changelog": "* Fixed rendering bug when rendering viewport scale < 1. \n* Fixed issue where the Editor would hang when renaming and then viewing OpenXR Settings." }, "upmCi": { - "footprint": "7d2795db5af16eacf76db91cbe4e8444f9bc52d4" + "footprint": "cddb8f6358b0688a53f366522840d94f966e9b5f" }, "documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.12/manual/index.html", "repository": { "url": "https://github.cds.internal.unity3d.com/unity/xr.sdk.openxr.git", "type": "git", - "revision": "3a1c80d75855c479e3f4e825a51d4317dc7430d0" + "revision": "80d54b74e54bc9121b87503e8e4840bfbcdb50f7" } }