From 2be973cce0cc87ed72774844637104e9d1c8ca6a Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Fri, 7 Feb 2025 13:35:09 +0100 Subject: [PATCH] add htc vive specific optimization tips for running in standalone mode --- Handbook/src/appendix/changelog.md | 1 + .../src/misc/optimize-higher-fps/README.md | 36 +++++++++++++++++++ ...lay-refresh-rate-editor-restart-prompt.png | 3 ++ ...e-mode-enumerate-display-refresh-rates.png | 3 ++ ...andalone-mode-get-display-refresh-rate.png | 3 ++ ...lone-mode-request-display-refresh-rate.png | 3 ++ ...ions-standalone-mode-set-pixel-density.png | 3 ++ ...penxr-refresh-rate-blueprint-functions.png | 3 ++ 8 files changed, 55 insertions(+) create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enable-display-refresh-rate-editor-restart-prompt.png create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enumerate-display-refresh-rates.png create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-get-display-refresh-rate.png create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-request-display-refresh-rate.png create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-set-pixel-density.png create mode 100644 Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-viveopenxr-refresh-rate-blueprint-functions.png diff --git a/Handbook/src/appendix/changelog.md b/Handbook/src/appendix/changelog.md index 89afc911..a8aa9c7d 100644 --- a/Handbook/src/appendix/changelog.md +++ b/Handbook/src/appendix/changelog.md @@ -42,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Revamped the [Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets](../getting-started/enabling-xr-ext-hand-tracking-vr-headsets/) and [Deploying to Android (Standalone)](../misc/android-standalone-deployment/) documentation and the `Meta XR`-compatibile and `ViveOpenXR`-compatibile instructions. - Significantly improved the [Setting Up the Wrist Tracking Hardware](../getting-started/setup-wrist-tracking-hardware/) section by providing more detailed documentation and example configuration per HMD and wrist tracking hardware. - Clarified [how to setup the VIVE Wrist Trackers in various configurations](../plugin-configuration/plugin-settings/tracking/wrist-tracking/). +- Added [HTC VIVE specific optimization tips for running in standalone mode](../misc/optimize-higher-fps/index.html#htc-vive-specific-optimizations-in-standalone-mode) - Fixed a few broken URLs caused by bad markdown formatting. - Applied various Handbook Makefile fixes. - Clarified the HTC VIVE standalone support status in the platform support matrix. diff --git a/Handbook/src/misc/optimize-higher-fps/README.md b/Handbook/src/misc/optimize-higher-fps/README.md index 4c04272b..d1101d5f 100644 --- a/Handbook/src/misc/optimize-higher-fps/README.md +++ b/Handbook/src/misc/optimize-higher-fps/README.md @@ -30,6 +30,42 @@ When streaming from a PC to Meta Quest devices, the default refresh rate is set ![Meta Quest Link - Framerate settings for the Unreal project](project-rendering-settings-framerate.png "Meta Quest Link - Framerate settings for the Unreal project") +## HTC VIVE Specific Optimizations in Standalone Mode + +Headsets like the HTC VIVE Focus 3 and Focus Vision have larger framebuffers, higher eye-buffer size, wider fields of view (FOV), and varying refresh rates compared to HMDs like the Meta Quest series. As a result, performance can differ when running the same content across these devices. + +### Setting a Custom Pixel Density + +If performance on the Focus 3 or Focus Vision is lower than on the Quest, we recommend adjusting the **Pixel Density** to approximately `0.8` (or a value suited to your content). This reduces the eye buffer size, and matches the resolution of Quest 2, hence increasing FPS: + +![HTC VIVE Specific Optimizations in Standalone Mode - Setting a custom pixel density](htc-vive-specific-optimizations-standalone-mode-set-pixel-density.png "HTC VIVE Specific Optimizations in Standalone Mode - Setting a custom pixel density") + +### Setting a Lower Refresh Rate + +The `ViveOpenXR` plugin provides various Blueprint functions to query the supported refresh rates and adjust the current refresh rate according to your needs: + +![HTC VIVE Specific Optimizations in Standalone Mode - ViveOpenXR plugin refresh rate Blueprint functions](htc-vive-specific-optimizations-standalone-mode-viveopenxr-refresh-rate-blueprint-functions.png "HTC VIVE Specific Optimizations in Standalone Mode - ViveOpenXR plugin refresh rate Blueprint functions") + +But, before you'd be able to make these adjustments you have to enable the relevant settings by navigating to `Edit > Project Settings > Plugins > Vive OpenXR` and ensure the `Enable Display Refresh Rate` option is checked. This option enables the OpenXR extension `XR_FB_display_refresh_rate` support which allows your application to dynamically adjust the display refresh rate in order to improve the overall user experience. Please note that You need to restart the engine to apply new settings after changing this setting. + +![HTC VIVE Specific Optimizations in Standalone Mode - Enable Display Refresh Rate Editor Restart Prompt](htc-vive-specific-optimizations-standalone-mode-enable-display-refresh-rate-editor-restart-prompt.png "HTC VIVE Specific Optimizations in Standalone Mode - Enable Display Refresh Rate Editor Restart Prompt") + +In order to query all the available display refresh rates use the Blueprint function `Enumerate Display Refresh Rates`: + +![HTC VIVE Specific Optimizations in Standalone Mode - Enumerating the available display refresh rates](htc-vive-specific-optimizations-standalone-mode-enumerate-display-refresh-rates.png "HTC VIVE Specific Optimizations in Standalone Mode - Enumerating the available display refresh rates") + +At the moment with most devices it returns `75.0` and `90.0` hz values. + +To change the current display refresh rate use the Blueprint function `Request Display Refresh Rate`: + +![HTC VIVE Specific Optimizations in Standalone Mode - Changing the current display refresh rate](htc-vive-specific-optimizations-standalone-mode-request-display-refresh-rate.png "HTC VIVE Specific Optimizations in Standalone Mode - Changing the current display refresh rate") + +To obtain the current display refresh rate use the Blueprint function `Get Display Refresh Rate`: + +![HTC VIVE Specific Optimizations in Standalone Mode - Obtaining the current display refresh rate](htc-vive-specific-optimizations-standalone-mode-get-display-refresh-rate.png "HTC VIVE Specific Optimizations in Standalone Mode - Obtaining the current display refresh rate") + +If you're looking to squeeze more performance out of your HTC VIVE HMD in standalone mode, consider lowering the target refresh rate from `90hz` to `75hz`. This can help reduce GPU workload and improve overall stability while still maintaining a somewhat smooth experience. + ## Game User Settings and Engine Scalability Settings Unreal Engine offers predefined graphics quality profiles known as Engine Scalability Settings, which can be easily adjusted to optimize performance. These settings can be modified directly within the Unreal Editor through the Settings menu on the toolbar or dynamically at runtime using code. Importantly, these settings are universal, meaning changes made in the Unreal Editor will apply to the game when run in PIE (Play In Editor) mode, and settings adjusted via code will also affect the editor itself. diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enable-display-refresh-rate-editor-restart-prompt.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enable-display-refresh-rate-editor-restart-prompt.png new file mode 100644 index 00000000..42583053 --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enable-display-refresh-rate-editor-restart-prompt.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4bdc64c85c99e434f6cbfaa621d4116e4a4a24ae63440decbd05dadc19426aa +size 190087 diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enumerate-display-refresh-rates.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enumerate-display-refresh-rates.png new file mode 100644 index 00000000..5c8c96ff --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-enumerate-display-refresh-rates.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10111b012d524a2e67f3001fa94bff70495b19076e6a54929c1dce7eb25a845 +size 416141 diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-get-display-refresh-rate.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-get-display-refresh-rate.png new file mode 100644 index 00000000..a28548cf --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-get-display-refresh-rate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:766c782e8b77356ed00f86b4a012e92d6afc684496176dfff94ac2800458cd0c +size 337090 diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-request-display-refresh-rate.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-request-display-refresh-rate.png new file mode 100644 index 00000000..034ef5f1 --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-request-display-refresh-rate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f43ee2ea8f2ca3fa05b51366b1a8e6c1a6b9be102525534c116ad48092d2ff +size 310465 diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-set-pixel-density.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-set-pixel-density.png new file mode 100644 index 00000000..2a9c5a71 --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-set-pixel-density.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a90b45bf7fb7660cdb291e029212fd20c21bbf51db9ada9d7e757c9468a2e30d +size 234325 diff --git a/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-viveopenxr-refresh-rate-blueprint-functions.png b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-viveopenxr-refresh-rate-blueprint-functions.png new file mode 100644 index 00000000..bd33e1a8 --- /dev/null +++ b/Handbook/src/misc/optimize-higher-fps/htc-vive-specific-optimizations-standalone-mode-viveopenxr-refresh-rate-blueprint-functions.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6caaecbbf682db2aacbbaf70b034aff88d659b4194c1f30d35b2115ad697193f +size 48994