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

Репроекция преобразует предыдущий кадр с учётом свежей позы головы или синтезирует промежуточное изображение, когда приложение не успевает отрисовать новое. Rotational timewarp корректирует поворот, а motion reprojection пытается учитывать движение сцены. Метод уменьшает рывки, но может создавать двоение и деформации, поэтому не заменяет устойчивую производительность.

Reprojection VR обновляет или синтезирует изображение, когда приложение не подготовило полноценный свежий кадр.

Репроекция помогает VR-системе показать новый кадр, когда приложение не успело полностью его отрендерить. Runtime берёт предыдущий результат, учитывает более свежую позу головы и преобразует изображение к моменту вывода. Это снижает видимое отставание, но не восстанавливает всю информацию о движущейся сцене.

Rotational timewarp

Самый надёжный случай — коррекция поворота головы. Известный кадр можно повернуть ближе к новой ориентации. По краям иногда не хватает пикселей, но мир остаётся стабильнее, чем при показе старой позы.

Поступательное движение сложнее: объекты имеют разную глубину, и один плоский кадр не содержит всё, что откроется из новой точки.

Motion reprojection

Когда приложение выдаёт, например, половину целевой частоты, runtime может синтезировать промежуточные кадры по движению и глубине. Названия отличаются: motion smoothing, spacewarp и другие технологии решают близкую задачу разными методами.

Система особенно заметна на движущихся руках, тонких линиях и объектах перед контрастным фоном. Там появляются двоение, волны или разрывы.

Почему режим включается

Причина — приложение не укладывается в бюджет кадра. При 90 Гц доступно около 11,1 мс на цикл. Если нагрузка стабильно выше, runtime выбирает запасной режим. Редкие пики и постоянная половинная частота ощущаются по-разному.

Оверлей производительности поможет отличить CPU-bound от GPU-bound. Снижение разрешения полезно только во втором случае.

Это ошибка или функция

Репроекция является штатной защитой комфорта, а не признаком поломки. Но приложение не должно полагаться на неё как на бесплатное удвоение FPS. Синтезированный кадр не знает будущего состояния игры и создаёт артефакты.

Для спокойного симулятора устойчивый режим половинной частоты может быть приемлем. Для быстрых рук, прицела и интерфейса артефакты сильнее.

Как уменьшить зависимость

  • снизить разрешение или тяжёлые эффекты;
  • проверить частоту дисплея;
  • устранить пики CPU;
  • закрыть фоновые оверлеи;
  • использовать актуальный runtime и драйвер;
  • тестировать одну сцену после каждого изменения.

Общая цепочка задержки описана в статье motion-to-photon latency.

Как распознать артефакт

Двигайте контроллер поперёк контрастного фона. Двойной контур или желеобразное искажение при стабильном положении мира характерны для синтеза движения. Если весь мир дёргается вместе с головой, ищите потерю кадров или трекинга.

Итог

Репроекция обновляет старый кадр под более свежую позу и при необходимости создаёт промежуточное изображение. Она полезна как страховка, но не заменяет производительность приложения. Оценивать следует стабильность, тип артефактов и конкретный runtime, а не только индикатор «включено».

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

Источники

  1. Microsoft Learn — OpenXR best practices
  2. Wikipedia — Asynchronous reprojection
  3. SteamVR discussion — reprojection