Кастомні VFX-частинки для мобільних AR: оптимізація під Unity

Уявіть: ви запускаєте AR-гру з ефектом вибуху на 2000 частинок. На iPhone 13 — 45 FPS, на Adreno 618 — 22 FPS. Знайома ситуація? Ми 5+ років займаємося мобільною AR-розробкою і знаємо, як вичавити максимум з обмеженого заліза. У цій статті розберемо, чому стандартні системи частинок «просаджують» і

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

Інші послуги студії

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
    1505
  • 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

Уявіть: ви запускаєте AR-гру з ефектом вибуху на 2000 частинок. На iPhone 13 — 45 FPS, на Adreno 618 — 22 FPS. Знайома ситуація? Ми 5+ років займаємося мобільною AR-розробкою і знаємо, як вичавити максимум з обмеженого заліза. У цій статті розберемо, чому стандартні системи частинок «просаджують» і як це виправити.

Чому продуктивність падає в AR-частинках?

Overdraw — головний ворог на мобільних GPU. Кожна напівпрозора частинка перекриває попередню, і GPU виконує blending для кожного перекриття. 500 частинок з Alpha Blend в режимі Overlay — це потенційно 500 × (середнє перекриття) операцій blending за фрейм. На тайлових GPU (Adreno, Mali) overdraw >3x в зоні ефекту — помітний удар по GPU time.

Рішення — Additive blending замість Alpha Blend там, де це можливо. Additive не читає destination buffer — тільки пише додавання, що швидше. Для вогню, світіння, магічних ефектів — ідеально. Для диму та реалістичних хмар — Additive виглядає неприродно, там потрібен Alpha Blend з обмеженою кількістю частинок.

Collision з AR-поверхнею — дорога операція. Particle System → Collision → Type: World з Collision Quality: High змушує кожну частинку проходити фізичний raycast кожен фрейм. 1000 частинок з World Collision = 1000 raycasts/фрейм. На мобілі це катастрофа.

Для AR-сцен краще працює Collision Type: Planes — задаємо кілька площин вручну, що відповідають AR-поверхням. Площини оновлюємо від ARPlane компонентів з AR Foundation при виявленні нових поверхонь. Не всі фізичні деталі, але продуктивність в 10 разів краща.

Draw Calls від багатьох Renderer-ів. Кілька Particle System з різними матеріалами — це кілька Draw Calls, які не батчаться. GPU Instancing для Particle System вмикається через Material.enableInstancing = true, але працює тільки коли частинки не прозорі або Additive — для Alpha Blend GPU Instancing неефективний через вимогу сортування.

Як ми оптимізуємо системи частинок під мобільні AR-ігри?

Покроковий план оптимізації:

  1. Аналіз поточних ефектів і виявлення вузьких місць через Profiler.
  2. Вибір стратегії blending: замінюємо Alpha Blend на Additive де можливо.
  3. Оптимізація collision: перехід на Planes Collision замість World.
  4. Об'єднання матеріалів і включення GPU Instancing.
  5. Профілювання на цільових пристроях і фінальне налаштування.

Visual Effect Graph (VFX Graph) — обчислення частинок на GPU. Ідеальний для PC і консолей, але на мобілі підтримка обмежена: вимагає Compute Shader, який доступний тільки на Metal (iOS A12+) і Vulkan (Android API 28+). Старі пристрої не потягнуть. Якщо таргет — mid-range Android, VFX Graph не підходить.

Burst Compiler + Job System для CPU частинок. Якщо частинки керуються скриптом (не стандартною Particle System), можна перенести логіку на IJobParallelFor з Burst. Це дає 5–15x прискорення обчислень порівняно з Mono, звільняючи головний потік.

LOD для систем частинок через ParticleSystemRenderer.maxParticleSize і динамічне зниження emission.rateOverTime залежно від відстані до AR-об'єкта. На дистанції >3 метрів від AR-маркера знижуємо кількість частинок вдвічі — непомітно візуально, але знижує overdraw.

Texture Sheet Animation замість кількох текстур. Один Sprite Sheet 512x512 з 16 кадрами анімації замість 16 окремих текстур — один Material, одна texture sample, працює в рамках одного Draw Call.

Наш досвід: AR-гра для iOS з ефектами магії на AR Foundation. Спочатку три Particle System на один ефект з Alpha Blend, World Collision, Sub-Emitters — iPhone 12 тримав 45–50 FPS замість цільових 60. Після переходу на Additive + Planes Collision + об'єднання в один Renderer з Texture Sheet — 60 FPS stable. Візуальна якість знизилася незначно, що пройшло непоміченим у плейтестах. Правильна оптимізація економить час і бюджет проекту.

Інтеграція з AR Foundation

Частинки повинні коректно взаємодіяти з AR-оточенням:

  • Позиціювання ефектів на ARPlane через Pose з ARRaycastHit
  • Occlusion: частинки повинні ховатися за реальними об'єктами. Реалізується через ARKit/ARCore Occlusion (AROcclusionManager) — при включеному Human/Environment Occlusion частинки автоматично маскуються глибиною реального світу
  • Освітлення: AREnvironmentProbeManager генерує Light Probe з оточення в реальному часі — частинки з Lighting Mode: Scene Color підхоплюють реальне освітлення, що покращує вписаність ефекту в AR-сцену

Що входить в роботу

Етап Результат
Аналіз вимог Список ефектів, цільові пристрої, вимоги до visual fidelity
Технічне проєктування Вибір Particle System vs VFX Graph, стратегія по overdraw, collision approach
Розробка ефектів Створення з оптимізацією «з нуля», не переробка під обмеження post-factum
Профілювання Unity Profiler + Xcode Instruments / Android GPU Inspector на цільових пристроях
Інтеграція з AR Foundation Прив'язка до AR-поверхонь, occlusion, освітлення
Документація та навчання Вихідники, інструкція з налаштування, консультація команди

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

Кількість ефектів Орієнтовні терміни
3–5 базових ефектів 1–2 тижні
10–15 ефектів з AR-інтеграцією 3–5 тижнів
Складні системи з GPU Instancing і VFX Graph 1–2 місяці

Зв'яжіться з нами для отримання консультації з оптимізації частинок під ваше обладнання. Ми допоможемо досягти стабільних 60 FPS навіть на середніх мобільних пристроях. Замовте оцінку вашого проєкту — ми підготуємо технічну пропозицію.

Unity Particle System Optimization