В этом руководстве рассказывается, как реализовать AppSW в приложении Unreal. Чтобы узнать, как работает AppSW и как его отладить, перейдите по ссылке.
Application SpaceWarp (AppSW) — это функция, которая позволяет добиться существенного улучшения показателей производительности и задержки. Это одна из самых значительных оптимизаций, предоставленных разработчикам Quest. В ходе нашего первоначального тестирования она обеспечила приложениям до 70 % дополнительных вычислений, причем практически без ощутимых артефактов.
Однако использование AppSW связано с серьезной работой с технической стороной внедрения. Вам потребуется изменить материалы и конвейер рендеринга своего приложения. Если какие-то материалы не будут модифицированы для поддержки AppSW, они будут создавать артефакты при запуске с AppSW.
Это руководство поможет вам оптимально использовать AppSW. В нем рассматриваются технические аспекты и компромиссные решения для правильной реализации этой функции.
API и интеграция
На уровне нативного API функция AppSW включается в приложениях Quest с помощью расширения OpenXR XR_FB_space_warp. Наша интеграция с игровым движком делает это за разработчиков, но любопытным разработчикам полезно знать, как это работает. Ознакомьтесь с нашим руководством по нативной разработке и примером проекта XrSpaceWarp в пакете OpenXR SDK, чтобы узнать больше.
Как включить AppSW в приложении?
AppSW полностью интегрирована с UE4.27-v34 и поставляется через Oculus Github. Чтобы включить AppSW, выполните следующие действия:
Предварительные требования: AppSW под UE4 требует включения Mobile Multiview + OpenXR Ovrplugin + Vulkan.
Включите поддержку AppSW, установив флажок в разделе Движок — Рендеринг.
Шаги 1 и 2 дадут приложению возможность включить AppSW в любом кадре игры. Сама функция управляется консольной переменной r.Mobile.Oculus.SpaceWarp.Enable. Как и все остальные консольные переменные, вы можете включить ее в середине игры, задав в коде C++ или используя Blueprints. Ниже приведен пример включения AppSW, когда пользователь удерживает правый триггер контроллера, и отключения при отпускании триггера.
Если нужно, чтобы приложение с самого начала запускалось с AppSW, добавьте его в файл DefaultEngine.ini как указано: