Выявление узких мест GPU в VR: RenderDoc и Snapdragon Profiler

VR-игра на Quest 2 держит 72 fps только в пустой сцене, а в открытой локации проседает до 60. Обычное уменьшение разрешения помогает ненадолго: с новыми объектами падение возвращается. Мы идём другим путём — сначала находим конкретные GPU-узкие места через профилирование, затем устраняем их точечно.

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1006
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    95

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.

Этапы работы

  1. Определение платформы и инструментов.
  2. Сбор baseline метрик в нескольких репрезентативных сценах.
  3. Анализ и приоритизация проблем по вкладу в GPU-время и сложности устранения.
  4. Разработка и внедрение оптимизаций.
  5. Верификация: повторное профилирование и подтверждение прироста производительности.

Обычно 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 день и гарантируем прирост производительности.