У VR-проєкті ефект вогню з 200 billboard-частинок дає overdraw 12x — замість одного пікселя малюється 12 шарів. Фреймбіт падає з 120 до 45 FPS на Quest 3. Наше завдання — знизити overdraw до 2x без втрати візуалу. За 7 років ми оптимізували VFX для 30+ VR-проєктів: від симуляторів до ігор. Згідно з документацією Unity з профілювання, overdraw залишається головною причиною падіння FPS у VR.
Чому стандартні VFX не підходять для VR?
Particle System з режимом Render Mode = Billboard і напівпрозорим матеріалом — класичне джерело overdraw. Кожна частинка перекривається з іншими кілька разів. 200 частинок з 50% перекриттям — це фактично 300+ піксельних операцій на кожен покритий піксель. У RenderDoc в режимі Overdraw Heatmap система частинок вогню з трьома шарами (основне полум'я, дим, ембри) легко показує 8–12x overdraw у центрі. При бюджеті 8.3 мс на фрейм (120 Hz Quest) це неприйнятно.
Рішення: зменшувати кількість частинок і збільшувати розмір кожної. Менше об'єктів з великими текстурними атласами замість безлічі дрібних частинок. Атлас 4×4 з різними формами диму — одна частинка «смикається» по атласу, імітуючи анімацію, замість 16 окремих частинок.
Другий підхід — використовувати VFX Graph замість Particle System. VFX Graph працює на GPU (Compute Shader), і його частинки не створюють CPU-overhead. Для складних ефектів із тисячами частинок VFX Graph на Quest 3 працює помітно швидше. Але вимагає URP та Unity 2022+ з підтримкою Compute на Android — не всі пристрої підтримують.
Як VFX Graph вирішує проблему продуктивності?
VFX Graph — Visual Effect Graph у Unity — принципово інший підхід. Граф будується нодами: Spawn → Initialize → Update → Output. Логіка руху частинок, зіткнень, прив'язки до поверхонь — все на GPU через Compute Shader.
Для VR ключові можливості: GPU Events — частинки породжують інші частинки при зіткненні (іскра від удару → кілька вторинних іскор), все на GPU без CPU roundtrip. Depth Collision — частинки стикаються з depth buffer сцени без фізичних колайдерів. Для Quest потрібно обережно: depth collision на тайловому GPU Snapdragon може створювати tile flush і втрачати виграш від GPU-симуляції.
Практичний кейс: ефект руйнування скелі. Класичний Particle System: 300 частинок-уламків з Rigidbody, всі з фізикою на CPU — 4.5 мс тільки на Update фізики. VFX Graph з Mesh Particles та GPU Flipbook анімацією: ті ж 300 уламків — 0.4 мс CPU, 1.2 мс GPU. Разом у 2.5 рази швидше для складного ефекту.
Чому mesh частинки кращі за billboard у ближніх ефектах?
Білборди у VR — відома проблема. Частинка-billboard завжди повернута перпендикулярно до вектора погляд-камера. У монорежимі це працює. У стерео ліве і праве очі дивляться під різними кутами — billboard одночасно коректно орієнтований тільки для одного з них. Різниця невелика (~6 см міжзорячна відстань), але для ближніх ефектів (бризки води, іскри поруч із руками) це дає помітне «плоске» відчуття.
Для ближніх VFX кращі Mesh Particles: тривимірні геометрії замість плоских спрайтів. Іскра — маленький витягнутий октаедр. Крапля води — деформована сфера. Летючий уламок — довільний меш з LOD. Mesh Particles дорожчі за кількістю вертексів, але прибирають стерео-розрив і виглядають значно переконливіше у VR.
Компроміс: дальні та дрібні частинки — billboard, ближні великі — mesh. LOD Group на рівні Particle System задається через Level of Detail Bias в Quality Settings — ближні екземпляри переходять на mesh renderer.
| Техніка | CPU навантаження | GPU навантаження | Overdraw | Рекомендація для VR |
|---|---|---|---|---|
| Billboard Particle System | Високе | Середнє | 8-12x | Тільки дальні ефекти |
| Mesh Particles (VFX Graph) | Низьке | Високе | ~2x | Ближні ефекти, іскри |
| VFX Graph з атласом | Низьке | Середнє | 4-6x | Вогонь, дим, складні системи |
Як знизити overdraw у VFX для VR: 3 кроки
- Замініть billboard-частинки на mesh-частинки для ефектів ближче 50 см від камери.
- Використовуйте VFX Graph з GPU Events для систем, де частинки породжують вторинні ефекти.
- Налаштуйте LOD і текстурний атлас: одна частинка з анімацією по атласу замінює кілька окремих.
Комфорт: чого не робити з VFX поруч із обличчям
Стробоскопічні ефекти — миготливі спалахи, швидко чергувані яскраві кольори — у VR особливо небезпечні для користувачів із фоточутливою епілепсією. Meta Quest Store вимагає відповідність гайдлайнам по частоті мигання (не більше 3 Hz для повноекранних спалахів). Обмеження вбудовуються на рівні Particle System через Max Particle Lifetime та Emission Rate — немає сенсу створювати ефект, який порушує ці правила.
Ефекти, що закривають весь огляд (вибух прямо перед обличчям, екран повністю заповнюється частинками) викликають дискомфорт. Правило: якщо частинки можуть опинитися ближче 50 см від HMD-камери, додаємо Min Particle Distance або фейд-аут по дистанції через Size over Lifetime curve, прив'язану до Distance to Camera.
Технічні вимоги до VFX для VR-платформ
| Платформа | Бюджет на фрейм | Рендер пайплайн | Особливості |
|---|---|---|---|
| Meta Quest 2/3 | 8,3 мс | URP | Макс. текстура 256x256, VFX Graph з GPU |
| PSVR2 | 11 мс | HDRP | Eye-tracking фовеатний рендеринг |
| PC VR (SteamVR) | 16 мс | HDRP або URP | DirectX 12, кастомні шейдери |
Що входить в нашу роботу по VFX
- Аналіз вимог: вивчення референсів, гейм-дизайн документа, цільова платформа.
- Прототипування: 2-3 варіанти реалізації з вимірами продуктивності.
- Розробка: створення систем частинок, шейдерів, налаштування LOD та відсікання.
- Оптимізація: профілювання в RenderDoc, симуляція навантажень, правки під бюджет.
- Інтеграція: вбудовування в проєкт, налаштування параметрів під геймплей.
- Документація: опис налаштувань, рекомендації щодо використання.
- Підтримка: гарантійна доробка протягом 2 місяців після здачі.
Орієнтовні терміни
| Тип VFX | Орієнтовні терміни |
|---|---|
| 3–5 простих ефектів (Particle System, атлас) | 3–7 днів |
| Комплект VFX для гри (10–20 ефектів) | 2–5 тижнів |
| VFX Graph система з кастомною логікою | 3–8 тижнів |
Вартість розраховується після аналізу вимог та цільової платформи. Щоб оцінити ваш проєкт, зв'яжіться з нами — ми підберемо ефективне рішення під ключ. Замовте розробку VFX з гарантією продуктивності.






