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






