VR-игра на Quest 2 держит 72 fps только в пустой сцене, а в открытой локации проседает до 60. Обычное уменьшение разрешения помогает ненадолго: с новыми объектами падение возвращается. Мы идём другим путём — сначала находим конкретные GPU-узкие места через профилирование, затем устраняем их точечно.
Специфика VR: на standalone Quest нет полноценного GPU capture. Инструменты подбирают под платформу. Для standalone — OVR Metrics Tool и Snapdragon Profiler. Для PCVR (SteamVR, OpenXR) — RenderDoc, NVIDIA Nsight или AMD Radeon GPU Profiler. Для Quest через Link — гибридный вариант. Наш десятилетний опыт показывает, что правильный выбор инструмента — половина успеха.
Как читать GPU capture в VR с помощью RenderDoc?
RenderDoc — стандарт для анализа рендер-пайплайна. Для VR в Unity подключается через RenderDoc Integration или вручную через UnityEngine.Rendering.DebugManager. В Single Pass Instanced режиме в RenderDoc видны два viewport в одном draw call — это нормально.
Первым делом смотрим Timeline view: он показывает длительность каждого прохода в миллисекундах. В типичной VR сцене самые дорогие пассы — Shadow Map (3+ мс при бюджете 8–9 мс на фрейм), Opaque, Transparent. RenderDoc даёт в 3–4 раза больше информации о каждом draw call, чем встроенные профилировщики Unity.
В Drawcall list ищем повторяющиеся паттерны: одни и те же вызовы без батчинга. Если Mesh Renderer отрисовывается 50 раз отдельными вызовами вместо одного инстансированного — это CPU-overhead, не GPU.
Для GPU bottleneck используем PIX markers — в Unity через CommandBuffer.BeginSample/EndSample. Маркеры разбивают frame на именованные блоки и сразу показывают затраты GPU-времени. Без них приходится угадывать, к какому участку кода относится draw call.
Почему Snapdragon Profiler незаменим для Meta Quest?
RenderDoc не работает на Android-based Quest без PCVR Link. Основной инструмент — Snapdragon Profiler от Qualcomm. Подключается через ADB (adb connect), требует режима разработчика. Наш опыт с проектами для Quest показывает, что без него невозможно точно измерить перегрузку шейдеров.
Ключевые метрики: GPU Busy %, Fragment ALU Instructions/Vertex, Textures Fetches per Cycle, L2 Cache Hit Rate. Если GPU Busy постоянно 95–100% — GPU-bound; ниже 70% при дропах — CPU-bound. Overdraw показывается как Visibility Ratio. Для мобильного VR нормой считается 1.5–2x, выше 3x — проблема с сортировкой. Snapdragon Profiler предоставляет в 2 раза больше метрик, чем OVR Metrics Tool, особенно по тайловой архитектуре.
Тайловая архитектура GPU на Quest (Tile-Based Deferred Rendering) принципиально отличается от desktop: записи буферизуются в on-chip tile memory. Если шейдер или постобработка нарушает поток (чтение из render target, в который только что писали), происходит tile flush — данные выгружаются в RAM и снова загружаются. Это дорого. В Snapdragon Profiler видно по spike в Tile Flush Count.
Кейс: 43% GPU-времени на один эффект тумана (из нашей практики)
Проект — приключенческая VR-игра для Quest 2. Жалоба: стабильно 60–65 fps при целевых 72, без явных тяжёлых объектов в сцене.
Профилирование через Snapdragon Profiler выявило: 43% GPU-времени в outdoor-сценах уходит на volumetric fog. Эффект был портирован напрямую из PC-версии: full-screen ray marching с 64 шагами на пиксель. На Quest это катастрофа — каждый пиксель делает 64 выборки текстуры.
Решение: замена volumetric fog на псевдообъёмный туман через Depth Fog в шейдере (fog по глубине) плюс несколько крупных particle-plane с тумановым текстурным атласом на ближних планах. GPU-время — с 4.2 мс до 0.3 мс. Экономия бюджета проекта составила несколько тысяч долларов. Визуально — практически неотличимо для конечного пользователя в VR.
Этапы работы
- Определение платформы и инструментов.
- Сбор baseline метрик в нескольких репрезентативных сценах.
- Анализ и приоритизация проблем по вкладу в GPU-время и сложности устранения.
- Разработка и внедрение оптимизаций.
- Верификация: повторное профилирование и подтверждение прироста производительности.
Обычно 3–5 точек дают 60–70% прироста производительности. Остальное — работа по убывающей доходности.
| Этап | Сроки |
|---|---|
| Профилирование + отчёт с рекомендациями | 3–5 дней |
| Профилирование + устранение топ-3 проблем | 1–2 недели |
| Полный цикл оптимизации с верификацией | 3–5 недель |
Стоимость оптимизации рассчитывается индивидуально после получения доступа к проекту и информации о целевой платформе.
Что входит в работу
- Детальный отчёт с визуализацией узких мест (графики, скриншоты из профилировщиков).
- Оптимизированные шейдеры и конфигурации рендеринга.
- Рекомендации по asset-пайплайну (LOD, текстуры, батчинг).
- Обучение команды работе с профилировщиками.
- Гарантия: фиксируем базовые метрики и подтверждаем улучшение.
Сравнение инструментов профилирования
| Инструмент | Платформа | Сильные стороны | Ограничения |
|---|---|---|---|
| RenderDoc | PCVR (SteamVR, OpenXR) | Детальный анализ draw call, PIX маркеры | Не работает на Quest standalone |
| Snapdragon Profiler | Quest (ADB) | Метрики тайловой архитектуры, overdraw | Требует режим разработчика |
| OVR Metrics Tool | Quest | Простота, быстрый baseline | Мало метрик, нет GPU capture |
Получите консультацию по вашему проекту — напишите нам. Закажите профилирование под ключ: мы оценим ваш проект за 1 день и гарантируем прирост производительности.






