Meta модернизирует алгоритм тайминга кадров в Horizon OS: обновление под названием FrameSync должно обеспечить более стабильную визуальную плавность VR и заметно сократить количество микрозадержек.
Что такое FrameSync?
FrameSync заменяет Phase Sync — текущий алгоритм тайминга кадров в гарнитурах Quest.
Phase Sync был представлен вскоре после запуска Quest 2 как опциональная функция, которую разработчики могли включать в своих приложениях, и за последующие годы стал постоянно активной возможностью. Его базовая задача — минимизировать задержку motion-to-photon.
Без Phase Sync или FrameSync VR-приложения рендерились с фиксированной задержкой. Рендеринг начинался максимально рано, что повышало вероятность готовности кадра к каждому обновлению дисплея, но означало, что данные трекинга, использованные для кадра, были более «устаревшими», чем это необходимо.
С Phase Sync или новым FrameSync операционная система прогнозирует, сколько времени должен занять рендеринг кадра, и намеренно задерживает момент старта, чтобы выборка данных трекинга была максимально актуальной. Разница между технологиями заключается в том, как именно выполняется этот прогноз.
Phase Sync анализировал несколько предыдущих кадров, делая упрощённое предположение, что следующий кадр будет аналогичным. Однако при изменении нагрузки рендеринга — например, при повороте головы от пустой области сцены к насыщенной — это могло приводить к пропуску кадра. Если ситуация повторялась, система переходила обратно на режим фиксированной задержки.
Новый FrameSync вместо этого использует «устойчивую статистическую систему», которая учитывает больше факторов, чем несколько последних кадров. По заявлению Meta, это даёт существенно более точный прогноз — настолько, что отпадает необходимость возвращаться к режиму фиксированной задержки:
1) Более стабильная плавность (и часто более высокий FPS)
FrameSync помогает стабилизировать темп выдачи кадров, что обычно выражается в меньшем джиттере и меньшем числе заметных микрозадержек в движении.
2) Меньше «устаревших» кадров, особенно длинных серий
Последовательные «устаревшие» кадры могут быть особенно заметны (и вызывать дискомфорт). FrameSync снижает как частоту таких кадров, так и длительные серии, способные нарушать восприятие.
3) Более низкая задержка motion-to-photon
Более точный прогноз может сократить задержку между движением человека и соответствующим визуальным обновлением, делая взаимодействия более непосредственными и отзывчивыми.
По данным Meta, более точный прогноз FrameSync должен обеспечить более стабильный темп кадров, меньше «устаревших» кадров и более низкую задержку motion-to-photon. Проще говоря, это означает более плавную картинку VR на Quest.
Когда и как появится FrameSync?
В Horizon OS v201 — текущей стабильной версии операционной системы — FrameSync доступен разработчикам для включения в своих приложениях через добавление метаданных com.oculus.enable_frame_sync в AndroidManifest.xml:
<meta-data android:name="com.oculus.enable_frame_sync" android:value="true" />
Начиная с Horizon OS v203, Meta сообщает, что функция станет включённой по умолчанию для всех приложений Horizon Store, при этом будет доступна возможность отключения для тех приложений, которым это необходимо.
Причина, по которой приложение может захотеть отказаться от функции, и почему Meta рекомендует разработчикам как можно раньше протестировать её, заключается в том, что рост пропускной способности, который FrameSync обеспечивает по сравнению с Phase Sync, может увеличить нагрузку на CPU и GPU. Это, в свою очередь, в некоторых сценариях способно повысить тепловыделение до уровня термального троттлинга, что приведёт к итоговому снижению производительности. Однако, как указывает Meta, такие случаи должны быть редкими, а большинство приложений получит суммарное улучшение.
