Unity предоставляет ряд функций, связанных с производительностью, специфичных для Android XR, для которых требуется пакет расширений Android XR. Включение этих функций позволяет повысить частоту кадров и снизить нагрузку на графический процессор благодаря SpaceWarp и субсэмплированию Vulkan, а также сократить задержку отслеживаемого рендеринга с помощью поздней фиксации.
Предпосылки
Прежде чем следовать этим рекомендациям, убедитесь, что вы проверили и выполнили следующие предварительные условия:
- Выполните все шаги по настройке вашего проекта в Unity .
- Импортируйте пакет расширений Android XR для Unity .
Включить космическую деформацию
Применение URP Spacewarp — это оптимизация OpenXR, которая помогает поддерживать высокую частоту кадров за счёт синтеза каждого второго кадра. Этот метод использует векторы движения и данные о глубине из предыдущих кадров для прогнозирования перемещения пикселей, что снижает вычислительную мощность и энергопотребление.
Преимущества
- Снижает нагрузку на графический процессор при рендеринге за счет синтеза альтернативных кадров.
- Значительно снижает вычислительную мощность и потребление энергии.
- Использует перепроекцию для сокращения задержки между движениями пользователя и обновлениями отображения.
Включить эту функцию
- В главном меню Unity выберите Правка > Настройки проекта .
- Разверните раздел «Управление подключаемым модулем XR» .
- Выберите вкладку, соответствующую вашему текущему устройству XR.
- Перейдите в раздел Группы функций OpenXR .
В разделе Все функции включите Application SpaceWarp .
Включить субвыборку Vulkan
Технология субдискретизации Vulkan позволяет создавать и сэмплировать изображения с переменной плотностью, используя карты плотности фрагментов. Эта функция Vulkan позволяет визуализировать различные области экрана и переносить их в память с разным разрешением, что особенно полезно для фовеального рендеринга, где периферийные области могут использовать более низкое разрешение.
Преимущества
- Обеспечивает различное улучшение в сочетании с фовеальной визуализацией в зависимости от форм-фактора.
- Уменьшает наложение спектров в периферийных областях с помощью билинейной фильтрации.
- Обеспечивает эффективную визуализацию с переменной скоростью в различных областях экрана.
Включить эту функцию
- В главном меню Unity выберите Правка > Настройки проекта .
- Разверните раздел Управление подключаемыми модулями XR , а затем щелкните OpenXR .
- Нажмите на значок шестеренки рядом с Android XR (Расширения): Управление сеансом .
Включить субдискретизацию (Vulkan) .
Включить позднюю фиксацию
Технология поздней фиксации (Late Latching) минимизирует задержку между физическим движением пользователя и соответствующим визуальным изменением на дисплее. Она позволяет обновлять положение головы на поздних этапах формирования кадров, что повышает как комфорт, так и воспринимаемую частоту кадров в приложениях XR. Это достигается за счёт сокращения задержки ввода практически на время целого кадра.
Преимущества
- Значительно сокращает задержку преобразования движения в фотон (MTP).
- Повышает комфорт пользователя и снижает укачивание.
- Повышает стабильность и точность.
Включить эту функцию
Чтобы включить позднюю фиксацию, включите эту функцию во время выполнения вашего приложения:
private XRDisplaySubsystem xrDisplay;
private XRDisplaySubsystem.LateLatchNode lateLatchNode = XRDisplaySubsystem.LateLatchNode.Head;
void Start()
{
List<XRDisplaySubsystem> xrDisplaySubsystems = new();
SubsystemManager.GetSubsystems(xrDisplaySubsystems);
if (xrDisplaySubsystems.Count >= 1)
{
xrDisplay = xrDisplaySubsystems[0];
}
}
void Update()
{
if (xrDisplay != null)
{
transform.position += new Vector3(Mathf.Epsilon, 0, 0);
Quaternion rot = transform.rotation;
rot.x += Mathf.Epsilon;
transform.rotation = rot;
xrDisplay.MarkTransformLateLatched(transform, lateLatchNode);
}
}