Виявлення вузьких місць 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 день і гарантуємо приріст продуктивності.