Если коротко:
Fixed foveated rendering снижает плотность рендеринга на периферии кадра и сохраняет более высокое качество в центре. В отличие от eye-tracked foveation, центральная зона не следует за взглядом пользователя. В Unreal Engine уровень подбирают на целевой гарнитуре после профилирования GPU, проверяя текст, контрастные границы и движение головы на заметность потери качества.
Unreal Engine fixed foveated rendering использует для снижения плотности рендеринга на периферии кадра.
Fixed foveated rendering, или FFR, снижает плотность рендеринга по краям изображения и сохраняет более высокое качество в центре. Для автономного VR это способ сократить нагрузку на GPU без полного уменьшения разрешения кадра. В отличие от динамической фовеации по взгляду, центральная зона FFR не перемещается за зрачком.
В Unreal Engine нет одной универсальной кнопки для всех гарнитур. Возможность, названия уровней и способ включения зависят от OpenXR-расширений, плагина производителя и целевой платформы. Поэтому настройку нужно проверять на реальном устройстве, а не только в редакторе.
Когда FFR даёт выигрыш
Фовеация помогает, когда приложение ограничено скоростью заполнения пикселей: высоким разрешением, сложными материалами, прозрачностью или постобработкой. Если кадр упирается в CPU, физику или количество draw calls, изменение периферийного разрешения может почти не повлиять на время кадра.
Перед включением снимите базовые показатели на устройстве: GPU time, CPU time, стабильность целевой частоты и процент пропущенных кадров. Сравнивать средний FPS недостаточно — VR-приложение должно укладываться в бюджет каждого кадра.
Базовую последовательность измерений мы разобрали в статье об оптимизации VR в Unreal Engine.
Фиксированная и eye-tracked фовеация
FFR предполагает, что пользователь чаще смотрит примерно в центр линзы. Это разумное упрощение для гарнитуры без eye tracking, но взгляд способен уйти на периферию без поворота головы. На высоком уровне фовеации там становятся заметны ступенчатые контуры, потеря мелкого текста и мерцание деталей.
Eye-tracked foveated rendering получает направление взгляда и перемещает качественную область. Такая схема потенциально экономит больше ресурсов при меньшей заметности, но требует поддерживаемой гарнитуры, разрешения на использование eye tracking и устойчивой обработки случая, когда данные взгляда временно недоступны.
Порядок внедрения в Unreal Engine
Сначала определите целевой runtime: Meta XR, VIVE OpenXR, PICO OpenXR или иной поддерживаемый стек. Включите только необходимые плагины и проверьте обычный стереорендеринг. Затем найдите настройку foveated rendering в документации именно этой комбинации версии UE, плагина и устройства.
Практический порядок такой:
- Соберите development build без FFR и сохраните профиль производительности.
- Включите минимальный уровень фиксированной фовеации.
- Проверьте, что функция действительно активна на устройстве, а не только указана в конфигурации.
- Повторите один и тот же тестовый маршрут.
- Сравните GPU time и артефакты по краям линз.
- Повышайте уровень по одному шагу, пока выигрыш остаётся полезным, а дефекты — приемлемыми.
Команда или Blueprint-узел производителя может позволять менять уровень во время работы. Это удобно для адаптивной системы, но сначала нужно доказать пользу каждого фиксированного режима.
Что проверять визуально
Самые чувствительные элементы — мелкий интерфейс, тонкие диагонали, решётки, провода, растительность и контрастные надписи. Смотрите на них не только поворотом головы, но и глазами. Проверяйте светлые и тёмные сцены, поскольку артефакт может быть незаметен на одном фоне и очевиден на другом.
Интерфейс, который должен читаться периферийно, лучше не размещать в зоне агрессивного понижения качества. Если UI закреплён перед камерой, оцените его при разных IPD и посадке гарнитуры: физическая позиция глаза меняет воспринимаемую границу зон.
Динамический уровень без eye tracking
Даже фиксированную фовеацию можно переключать по нагрузке. Например, приложение использует низкий уровень в спокойной сцене и повышает его, когда GPU time приближается к бюджету. Такая логика должна иметь гистерезис: если менять качество около одного порога каждый кадр, изображение будет пульсировать.
FFR следует координировать с dynamic resolution. Две независимые системы, одновременно реагирующие на нагрузку, могут чрезмерно ухудшить картинку или раскачивать качество. Назначьте каждой понятную роль: например, разрешение компенсирует плавные изменения, а уровень фовеации — редкие тяжёлые режимы.
Частые ошибки
Нельзя считать FFR заменой оптимизации материалов и геометрии. Она уменьшает цену части пикселей, но не исправляет тяжёлый game thread. Ещё одна ошибка — оценивать качество по зеркалу на мониторе: композиция и масштаб периферийных дефектов в гарнитуре отличаются.
Также не стоит включать максимальный уровень непосредственно перед релизом. Изменение должно пройти проверку на всех поддерживаемых устройствах, в ключевых сценах и с реальным пользовательским интерфейсом.
Итог
Fixed foveated rendering полезен для мобильного VR, когда проект ограничен GPU и допускает снижение детализации на периферии. Начинать нужно с профилирования, включать функцию через поддерживаемый runtime и подбирать уровень на устройстве. Хорошая настройка FFR не бросается в глаза: пользователь видит стабильный кадр, а не способ, которым разработчик освободил бюджет.
Проверка по шагам
Порядок внедрения в Unreal Engine
Выполнено 0 из 6