tags: [vr-ar]
Створення візуальних ефектів та систем частинок для VR графіки
Particle System у VR — це пространственний об'єкт, який знаходиться у кількох сантиметрах від обличчя користувача. Вибух, який у звичайній грі виглядає ефектно на екрані, у VR може займути весь обзір та викликати дискомфорт. Вогонь, який горить «надто плоско» через billboard частинки, у VR одразу помітний — билборди завжди повернені до камери, і в стерео це видно.
Робота з VFX у VR — це в першу чергу розуміння бюджету продуктивності та обмежень сприйняття, а потім вже художнє.
Overdraw: головний враг VFX у VR
Particle System з режимом Render Mode = Billboard та напівпрозорим матеріалом — класичний джерело overdraw. Кожна частинка перекривається з іншими кілька разів. 200 частинок з 50% перекриттям — це фактично 300+ піксельних операцій на кожен накритий піксель.
У RenderDoc у режимі Overdraw Heatmap система частинок вогню з трьома шарами (основне полум'я, дим, embersi) легко показує 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 — не всі пристрої підтримують.
Billboard частинки у стерео та Mesh Particles
Билборди у VR — відома проблема. Частинка-billboard завжди повернена перпендикулярно до вектора взгляду. У mono режимі це працює. У стерео ліве та праве оки дивляться під різними кутами — billboard одночасно коректно орієнтований тільки для одного з них. Різниця невелика (~6 см міжзрачкова дистанція), але для ближніх ефектів (брізги води, іскри рядом з руками) це дає помітне «плоске» ощущення.
Для ближніх VFX бажано Mesh Particles: тривимірні геометрії замість плоских спрайтів. Іскра — маленький витягнутий октаедр. Крапля води — деформована сфера. Летючий осколок — довільний меш з LOD. Mesh Particles дорожче за число вертексів, але видаляють stereo-розрив та виглядають значно переконливіше у VR.
Компромісс: дальні та дрібні частинки — billboard, ближні крупні — mesh. LOD Group на рівні Particle System задається через Level of Detail Bias у Quality Settings — ближні екземпляри переходять на mesh renderer.
VFX Graph: симуляція на GPU
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 раза швидше для складного ефекту.
Комфорт: що не робити з VFX рядом з обличчям
Стробоскопічні ефекти — мигаючі вспишки, швидко чередуючі яскраві кольори — у VR особливо небезпечні для користувачів з фоточутливою епілепсією. Meta Quest Store вимагає відповідність гайдлайнам за частотою мигання (не більше 3 Hz для fullscreen вспишок). Обмеження закладаються на рівні Particle System через Max Particle Lifetime та Emission Rate — немає сенсу створювати ефект, який порушує ці правила.
Ефекти, що закривають весь обзір (вибух прямо перед обличчям, екран повністю заповнений частинками) викликають дискомфорт. Правило: якщо частинки можуть опинитися ближче 50 см від HMD-камери, додаємо Min Particle Distance або fade-out за дистанцією через Size over Lifetime curve, привязану до Distance to Camera.
| Тип VFX | Орієнтовні строки |
|---|---|
| 3–5 простих ефектів (Particle System, атлас) | 3–7 днів |
| Комплект VFX для гри (10–20 ефектів) | 2–5 тижнів |
| VFX Graph система з кастомною логікою | 3–8 тижнів |
Вартість розраховується після аналізу вимог та цільової платформи.





