Если коротко:
Бюджет производительности VR задают в миллисекундах на кадр для выбранной частоты гарнитуры. Команда отдельно измеряет CPU и GPU на целевом устройстве, оставляет запас для runtime и проверяет тяжёлые сцены повторяемым тестом. Лимит полигонов или draw calls сам по себе такой бюджет не заменяет.
VR performance budget Quest задаёт предел времени и ресурсов, которые сцена может потратить на один кадр автономной гарнитуры.
Главная единица бюджета состоит в миллисекундах, а не в среднем FPS. При 72 Гц кадр длится около 13,9 мс, при 90 Гц около 11,1 мс, при 120 Гц около 8,3 мс. Приложению требуется запас для колебаний нагрузки и работы runtime, поэтому нельзя планировать сцену ровно на весь теоретический интервал.
Разделите CPU и GPU
CPU готовит игровую логику, анимацию, физику и команды рендеринга. GPU выполняет проходы изображения для двух глаз. Проект может упираться в одну сторону, пока другая простаивает.
Зафиксируйте показатели Game thread, Render thread и GPU time на гарнитуре. Если GPU дольше, уменьшайте цену пикселей, материалов, света и прозрачности. Если перегружен CPU, проверяйте количество объектов, вызовы Blueprint, физику и подготовку draw calls.
Бюджет сцены не сводится к одному лимиту
Число треугольников или draw calls удобно как ранний ориентир, но оно не описывает кадр полностью. Один сложный материал может стоить дороже множества простых, а крупная прозрачная поверхность создаёт высокую нагрузку из-за повторного закрашивания пикселей.
Заведите таблицу для типовой, тяжёлой и предельной сцены. Записывайте в неё:
- частоту гарнитуры и разрешение рендера;
- Game, Render и GPU time;
- draw calls и видимые треугольники;
- количество динамических источников света;
- активный уровень foveated rendering;
- пропущенные кадры и срабатывание reprojection.
Как получить рабочий предел
Соберите тестовую сцену, которая отражает реальный проект. Затем добавляйте нагрузку до момента, когда запас по времени становится слишком мал. Полученный предел уменьшите, чтобы оставить место для интерфейса, звука, сетевого обмена и неожиданных сочетаний эффектов.
Проверяйте несколько устройств, если они входят в поддержку. Быстрая модель не должна скрывать проблему слабой гарнитуры. Сборка на ПК через Link не заменяет автономный APK: у них разные GPU, память и драйверный путь.
Динамическое качество
Dynamic resolution и fixed foveated rendering помогают удерживать время кадра, но для них нужен отдельный диапазон. Если базовая сцена уже перегружена, автоматическое снижение качества будет постоянно работать на максимуме.
Сначала добейтесь устойчивого кадра на фиксированных настройках. Затем задайте реакцию на краткие пики и проверьте, насколько заметно изменение. Подробнее настройка фовеации разобрана в материале про fixed foveated rendering.
Контроль перед выпуском
Пройдите один и тот же маршрут несколько раз после холодного запуска. Автономная гарнитура нагревается, а система может снижать частоты. Короткий тест в прохладном устройстве не показывает устойчивость длинной сессии.
Сохраняйте профиль до и после каждой крупной правки. Бюджет производительности работает как инженерное ограничение только при регулярных замерах. Таблица без данных с устройства превращается в список пожеланий и не защищает проект от поздней переработки сцен.