В VR кадр нужно рендерить дважды — для левого и правого глаза. На Quest 2 это 72 fps × 2 = 144 Draw Call-пачки в секунду. Если ваш проект не прошёл через Single Pass Instanced Rendering и у вас больше 100 batches на кадр, стереоскопическая сцена просто не уложится в тайм-слот GPU. Головная боль и тошнота у пользователей — прямое следствие dropped frames. Мы на практике знаем, как это исправить: за плечами десятки оптимизированных XR-проектов под разные платформы. Наша специализация — оптимизация графики под VR/AR устройства.
AR-проекты на ARCore/ARKit добавляют поверх этого захват с камеры, обработку плоскостей и occlusion mesh. Устройство уже загружено CPU-задачами трекинга до того, как ваш шейдер сделал первый вызов. Мы помогаем уложиться в FPS-бюджет даже на бюджетных устройствах. Закажите аудит — мы оценим ваш проект за 2 дня и предоставим план оптимизации с конкретными метриками.
Как оптимизация графики под VR/AR устройства решает проблему dropped frames?
Ключевые техники — Single Pass Instanced Rendering, Fixed Foveated Rendering, GPU Instancing и оптимизация шейдеров. Single Pass Instanced позволяет рендерить оба глаза за один проход, снижая количество Draw Calls вдвое. Fixed Foveated Rendering уменьшает нагрузку на GPU на 15–30% без заметного ухудшения картинки. GPU Instancing группирует одинаковые объекты в один Draw Call. Вместе эти методы обеспечивают стабильные 72 fps даже на мобильных XR-устройствах.
Почему стандартные методы оптимизации графики не работают в VR/AR?
Снижение полигонажа — это последнее, что мы делаем. Сначала смотрим на то, что реально убивает производительность на XR-устройствах.
Overdraw в мобильном VR
На Adreno и Mali GPU overdraw стоит непропорционально дорого — тайловый рендер не любит большое количество полупрозрачных объектов. Стандартные партикл-системы с Additive-блендингом на фоне HDR-скайбокса — типичный убийца frame rate на Quest. Frame Debugger в Unity покажет это мгновенно: ищем красные зоны в overdraw view.
Неправильная настройка Fixed Foveated Rendering
Fixed Foveated Rendering на Meta XR SDK снижает нагрузку на GPU на 15-30% — но только если правильно выбран уровень (Low/Medium/High) под конкретный контент. В динамичных сценах с быстрым движением камеры High-уровень даёт артефакты на периферии. Рекомендуем Medium для большинства проектов: он даёт до 20% прироста производительности без заметных артефактов.
Single Pass Instanced не работает с кастомными шейдерами
Если в проекте есть хоть один шейдер без UNITY_VERTEX_INPUT_INSTANCE_ID и UNITY_SETUP_INSTANCE_ID, весь рендер автоматически fallback'ается в Multi Pass. Это удваивает нагрузку. Находим через XR Plug-in Management → Rendering Stats. Мы гарантируем, что после аудита все шейдеры будут корректно поддерживать Single Pass Instanced.
Как мы работаем с XR-проектами
Начинаем с профилирования на целевом железе — не в Editor, а на устройстве. RenderDoc для Android, Xcode Instruments для iOS/visionOS, OVR Metrics Tool (часть Meta XR Best Practices Guide). Эмулятор не покажет реальных задержек памяти и bandwidth.
Из нашей практики: кейс клиента
Проект под Quest 3 — архитектурная визуализация, 8 комнат, PBR-материалы. Первый билд: 45 fps в центре сцены, 28 fps при взгляде в сторону окна. Анализ через OVR Metrics Tool показал 340 Draw Calls и 4 overdraw-слоя на оконных стёклах. Решение: GPU Instancing для повторяющейся мебели (стулья × 24 → 1 Draw Call), замена стёкол с Standard Transparent на кастомный шейдер с Surface Type Opaque + альфа в клипе, включение Fixed Foveated Rendering уровня Medium. Итог: 72 fps стабильные, thermal throttling исчез. Наши клиенты экономят до 30% времени на профилирование благодаря автоматизированным инструментам.
Для AR-проектов отдельно прорабатываем occlusion — AR Foundation Environment Depth требует корректной настройки глубины в шейдерах, иначе виртуальные объекты «просвечивают» сквозь реальные поверхности.
Инструменты, которые используем
- Unity Profiler + Frame Debugger (GPU Usage module)
- RenderDoc (Android Vulkan/OpenGL ES)
- Meta Quest Developer Hub + OVR Metrics Tool
- XR Interaction Toolkit Profiling Guidelines
- ARM Mobile Studio (Streamline) для Adreno/Mali deep-dive
Shader Graph оптимизируем вручную — смотрим на instruction count в Preview окне, убираем лишние sample операции, переносим вычисления из Fragment в Vertex там, где допустима интерполяция.
Этапы работы над оптимизацией XR-графики
Сначала собираем билд в Release-конфигурации и снимаем baseline-метрики: fps, GPU time per frame, Draw Calls, memory footprint. Без baseline невозможно оценить результат.
Затем — аудит сцены: иерархия объектов, количество уникальных материалов, настройки освещения (статическое/динамическое), наличие real-time теней (на мобильном VR они почти всегда под запретом), LOD-группы.
После аудита готовим план оптимизации с приоритетами по impact/effort. Реализация идёт итерациями с промежуточными замерами — важно не потерять baseline и понимать, что именно дало прирост.
Финальный этап — тепловое тестирование на устройстве 20-30 минут в условиях нагрева. Thermal throttling на мобильных чипах (Snapdragon XR2) начинается раньше, чем кажется.
| Масштаб задачи | Ориентировочные сроки |
|---|---|
| Аудит + отчёт без правок | 2–4 дня |
| Оптимизация одной сцены (до 500 объектов) | 1–2 недели |
| Полный проект (5–15 сцен, кастомные шейдеры) | 3–6 недель |
| Портирование PC VR → standalone Quest | 4–8 недель |
Стоимость рассчитывается индивидуально после аудита проекта и целевой платформы.
Сравнение методов оптимизации
| Метод | Impact (прирост FPS) | Effort |
|---|---|---|
| Fixed Foveated Rendering | 15-30% | Низкий — включение в SDK |
| Single Pass Instanced | 40-50% | Умеренный — правка шейдеров |
| GPU Instancing | 20-60% | Низкий — группировка объектов |
| Оптимизация текстур (mipmap, сжатие) | 10-20% | Низкий — настройка импорта |
Что входит в работу
- Аудит производительности на целевом устройстве с baseline-метриками
- Оптимизация шейдеров и настройка рендеринга (Single Pass Instanced, Foveated Rendering)
- Снижение Draw Calls через batching, Instancing, LOD
- Настройка освещения и теней (baked lighting, blob shadows)
- Тепловое тестирование и финальный отчёт
- Документация по использованным техникам и рекомендации по дальнейшему развитию
Частые ошибки при подготовке XR-графики
- Real-time тени на мобильном VR. Cascaded Shadow Maps с 4 каскадами на Quest — это гарантированные dropped frames. Заменяем на запечённые в Lightmap или Blob Shadow (простой проектор).
- Не отключён MSAA выше 4x. На тайловых GPU (Adreno) MSAA 8x ломает производительность. В XR Project Settings ставим 4x максимум, в сложных сценах — 2x.
- Текстуры без Mipmap. В VR объекты могут быть на разных расстояниях от камеры одновременно. Без Mipmap GPU берёт полное разрешение для далёких объектов — bandwidth растёт без причины.
- Physics Colliders сложнее необходимого. Mesh Collider на объектах интерьера там, где достаточно Box/Capsule. В VR physics tick тоже влияет на frame time.
Закажите аудит вашего XR-проекта — мы оценим его за 2 дня и предоставим план оптимизации с конкретными метриками. Single Pass Instanced эффективнее Multi Pass в два раза на одинаковой сцене, а оптимизация может сократить затраты на облачные инстансы до 2 раз. Получите консультацию, чтобы узнать, как наши решения подходят вашему проекту.






