tags: [vr-ar]
Создание визуальных эффектов (VFX) частиц для VR графики
Particle System в VR — это пространственный объект, который находится в нескольких сантиметрах от лица пользователя. Взрыв, который в обычной игре выглядит эффектно на экране, в VR может занять весь обзор и вызвать дискомфорт. Огонь, который горит «слишком плоско» из-за billboard частиц, в VR сразу заметен — билборды всегда повёрнуты к камере, и в стерео это видно.
Работа с VFX в VR — это в первую очередь понимание бюджета производительности и ограничений восприятия, а потом уже художественное.
Overdraw: главный враг 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 — не все устройства поддерживают.
Billboard частицы в стерео и Mesh Particles
Билборды в VR — известная проблема. Частица-billboard всегда повёрнута перпендикулярно к вектору взгляд-камера. В монорежиме это работает. В стерео левый и правый глаза смотрят под разными углами — billboard одновременно корректно ориентирован только для одного из них. Разница небольшая (~6 см межзрачковое расстояние), но для ближних эффектов (брызги воды, искры рядом с руками) это даёт заметное «плоское» ощущение.
Для ближних VFX предпочтительнее Mesh Particles: трёхмерные геометрии вместо плоских спрайтов. Искра — маленький вытянутый октаэдр. Капля воды — деформированная сфера. Летящий осколок — произвольный меш с LOD. Mesh Particles дороже по числу вертексов, но убирают stero-разрыв и выглядят значительно убедительнее в 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 для полноэкранных вспышек). Ограничения встраиваются на уровне Particle System через Max Particle Lifetime и Emission Rate — нет смысла создавать эффект, который нарушает эти правила.
Эффекты, закрывающие весь обзор (взрыв прямо перед лицом, экран полностью заполняется частицами) вызывают дискомфорт. Правило: если частицы могут оказаться ближе 50 см от HMD-камеры, добавляем Min Particle Distance или фейд-аут по дистанции через Size over Lifetime curve, привязанную к Distance to Camera.
| Тип VFX | Ориентировочные сроки |
|---|---|
| 3–5 простых эффектов (Particle System, атлас) | 3–7 дней |
| Комплект VFX для игры (10–20 эффектов) | 2–5 недель |
| VFX Graph система с кастомной логикой | 3–8 недель |
Стоимость рассчитывается после анализа требований и целевой платформы.





