Оптимізація графіки під VR/AR пристрої

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Оптимізація графіки під VR/AR пристрої
Складна
від 3 робочих днів до 2 тижнів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Оптимізація графіки під VR/AR пристрої

У VR кадр потрібно рендерити двічі — для лівого та правого ока. На Quest 2 це 72 fps × 2 = 144 Draw Call-пачки в секунду. Якщо ваш проект не пройшов через Single Pass Instanced Rendering та у вас більше 100 batches на кадр, стереоскопічна сцена просто не уляжеться в тайм-слот GPU. Головна біль та тошнота у користувачів — прямий наслідок dropped frames.

AR-проекти на ARCore/ARKit додають поверх цього захоплення з камери, обробку площин та occlusion mesh. Пристрій уже завантажена CPU-завданнями трекінгу до того, як ваш шейдер зробив перший виклик.

Чому стандартні поради «зменши полігони» не працюють у XR

Зниження полігонажу — це останнє, що ми робимо. Спочатку дивимось на те, що реально убиває продуктивність на XR-пристроях.

Overdraw у мобільному VR. На Adreno та Mali GPU overdraw коштує непропорційно дорого — тайловий рендер не любить велику кількість напівпрозорих об'єктів один на одному. Стандартні particle-системи з Additive-блендингом на фоні HDR-скайбокса — типовий убивця frame rate на Quest. Frame Debugger у Unity показує це миттєво: шукаємо червоні зони в overdraw view.

Foveated Rendering настроєний неправильно або взагалі не включений. Fixed Foveated Rendering на Meta XR SDK знижує навантаження на GPU на 15-30% без помітного погіршення картинки — але тільки якщо правильно обраний рівень (Low/Medium/High) під конкретний контент. У динамічних сценах з швидким рухом камери High-рівень дає артефакти на периферії.

Single Pass Instanced не працює з кастомними шейдерами. Якщо у проекті є хоча б один шейдер без UNITY_VERTEX_INPUT_INSTANCE_ID та UNITY_SETUP_INSTANCE_ID, весь рендер автоматично fallback'ається в Multi Pass. Це удвічі збільшує навантаження. Знаходимо через XR Plug-in Management → Rendering Stats.

Як ми працюємо з XR-проектами

Починаємо з профілювання на цільовому залізі — не в Editor, а на пристрої. RenderDoc для Android, Xcode Instruments для iOS/visionOS, OVR Metrics Tool для Meta. Емулятор не покаже реальних затримок пам'яті та 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 + альфа у clip, включення Fixed Foveated Rendering рівня Medium. Результат: 72 fps стабільні, thermal throttling зник.

Для 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 тижнів

Вартість розраховується індивідуально після аудиту проекту та цільової платформи.

Частые ошибки при підготовці 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.