Если коротко:

Application SpaceWarp позволяет приложению Quest отрисовывать каждый второй кадр, а compositor создаёт промежуточный по векторам движения и глубине. Например, app может рендерить 36 кадров для вывода 72 Гц. Это освобождает часть бюджета CPU и GPU, но не удваивает производительность: генерация буферов и синтез имеют цену, а ошибки motion vectors создают артефакты.

Application SpaceWarp для Quest позволяет app отрисовывать кадры с половиной частоты дисплея, а compositor создаёт изображения между ними. Для этого разработчик передаёт motion vectors и глубину. AppSW меняет графический конвейер и не является кнопкой двукратного ускорения.

Как строится промежуточный кадр

Приложение передаёт цветной eye buffer, depth buffer и поле векторов движения. Motion vector сообщает смещение пикселя, глубина помогает учесть положение поверхности и свежую HMD pose.

При режиме 36/72 приложение создаёт 36 кадров, а дисплей получает 72 изображения. Compositor прогнозирует положение пикселей и выполняет репроекцию к актуальной позе. Общий принцип описан в статье о reprojection в VR.

Почему производительность не удваивается

Project рендерит дополнительные motion и depth buffers, compositor тратит GPU-время на синтез. Meta сообщала о прибавке бюджета до 70% в ранних внутренних тестах, но результат зависит от сцены, разрешения и целевой частоты.

Unity уточняет: SpaceWarp не удваивает frame rate. Если app работает слишком медленно, синтез не восстановит устойчивое движение. Результат измеряют на целевом Quest.

AppSW и PC ASW: разные технологии

PC ASW оценивает движение по истории готовых кадров. Application SpaceWarp получает motion vectors от приложения. Разработчик знает перемещения objects, но отвечает за корректность данных.

AppSW управляется на этапе разработки, PC ASW срабатывает как системный механизм runtime. Источник данных и контроль у них различаются.

Где появляются артефакты

Проблемы видны там, где motion vectors отсутствуют или неверны:

  • быстрые objects дрожат или деформируются;
  • прозрачность не передаёт движение геометрии за собой;
  • частицы и пользовательские шейдеры остаются на половинной частоте;
  • UI в слое сцены и мелкий контрастный текст искажаются;
  • края objects открывают отсутствовавшие в предыдущем frame области.

Composition layers не обрабатываются SpaceWarp. Интерфейс в отдельном слое можно обновлять с полной частотой, но результат проверяют в HMD.

Как внедрять в Unity project

Зафиксируйте версии Unity, Meta XR SDK и OpenXR, затем сверьте prerequisites. Основы есть в настройке Unity OpenXR project. Репозиторий Unity-AppSpaceWarp используйте как sample, а не универсальную настройку.

Рабочий порядок:

  1. Добейтесь стабильного full-rate build без AppSW.
  2. Включите motion/depth passes и проверьте материалы.
  3. Сравните CPU time, GPU time, память и app frame rate.
  4. Протестируйте руки, быстрые objects, прозрачность, частицы и UI.

Application SpaceWarp полезен, когда выигрыш бюджета важнее артефактов. Решение принимают по измерениям и просмотру в гарнитуре.

Поделиться:TelegramВКонтакте

Источники

  1. Meta Developers: Introducing Application SpaceWarp
  2. Meta Developers: App Spacewarp
  3. Unity Manual: Application spacewarp in URP
  4. Meta sample: Unity-AppSpaceWarp