Создание систем частиц и эффектов (VFX) магии
Магические эффекты — это та область, где разница между «приемлемо» и «отлично» целиком определяется тем, насколько художник понимает инструмент. VFX Graph в Unity даёт вычисления на GPU, миллионы частиц, симуляцию сил и collision в реальном времени. Particle System (Shuriken) — CPU-based, ограничен в количестве частиц, но проще в настройке и надёжнее на мобильных платформах.
Выбор инструмента — первое архитектурное решение в работе над магическим VFX.
VFX Graph vs Particle System: где граница
VFX Graph обязателен, когда: нужно больше 10 000 одновременных частиц, нужна GPU physics (Collision с SDF, Vector Field forces), нужна плавная анимация по Grid Layout из спрайт-шита с субкадровой интерполяцией. Для файрбола с тысячами искр, для порталов с турбулентным потоком частиц — VFX Graph.
Particle System достаточен, когда: мобильная платформа (VFX Graph требует Compute Shader support, что есть не у всех мобильных GPU), небольшое количество частиц (до нескольких сотен), нужна простая интеграция с Animator через ParticleSystem.Play() в Animation Event.
Смешивать оба — нормально. Типичная архитектура заклинания: VFX Graph для основного эффекта (поток огня, облако искр), Particle System для вторичных деталей (дым, мелкие светящиеся точки вокруг), кастомный шейдер на меше для oreol и distortion.
Структура магического VFX: слои
Убедительный магический эффект строится из нескольких визуальных слоёв, каждый из которых решает отдельную задачу:
Core — ядро эффекта. Плотный, яркий центр. Обычно это меш с emissive шейдером или billboard sprite с additive blending. Высокая opacity, минимальное движение. Задача — дать взгляду точку фокуса.
Mid — основной объём. Основная масса частиц — огонь, энергия, плазма. Это то, что большинство людей считают «самим эффектом». Здесь работает VFX Graph с Turbulence Force, Vortex Force или кастомным Vector Field. Частицы с Lit шейдером, чтобы принимать освещение от самого эффекта (через Point Light Output нод в VFX Graph).
Edge — края и шлейф. Мелкие частицы, уходящие от основного объёма. Альфа-растворение к нулю по времени жизни. Additive blending — они «светятся» поверх всего остального.
Secondary — детали. Искры, пузыри, рунические символы, листья. Создают ощущение сложности и уникальности. Часто это отдельный Particle System с низкой emission rate.
Distortion — искажение пространства. Fullscreen distortion mask вокруг эффекта через Distortion Renderer Feature в URP или встроенный Distortion pass в HDRP. Это сигнализирует мозгу: «здесь происходит что-то необычное с пространством».
Point Light Output и динамическое освещение от эффекта
VFX Graph в Unity 2022+ имеет Point Light Output block, который позволяет частицам эмитировать свет. Это меняет всё: окружение вокруг заклинания начинает освещаться в реальном времени, тени прыгают, стены мерцают.
Настройка Light Output: Intensity должна быть умеренной (0.5–2.0 для большинства эффектов) иначе bloom перегорит всё вокруг. Range — от 1 до 5 единиц. Количество активных light instances одновременно — ограничено настройкой в URP Pipeline Asset (Maximum Additional Lights per Object). Превышение лимита — лишние источники молча игнорируются без предупреждения.
Для экономии: реальный Point Light нужен только у самых ярких, самых близких к камере частиц. Остальные эмулируют свет через emissive шейдер + Bloom. В VFX Graph это реализуется через Set Active в Light Output с условием по Lifetime или Distance To Camera.
Заклинание огня: разбор конкретного примера
Проект: action RPG, Unity 2022 LTS, URP. Задача: fireball — projectile, летящий от руки к цели, взрывающийся при попадании.
Структура: два VFX Graph Asset'а (travel phase и explosion phase) + два Particle System (trailing sparks и smoke) + кастомный шейдер на sphere меш для core glow.
Travel phase VFX Graph: Sphere Spawner с radius = 0.2, Turbulence Force с небольшой интенсивностью, цвет по Gradient по Lifetime (жёлтый → оранжевый → тёмно-красный), Size over Lifetime — уменьшение к концу жизни частицы. Скорость частиц — в противоположном направлении движения файрбола (шлейф тянется назад).
Explosion phase: Burst emit 2000 частиц за один кадр, Sphere initial velocity с высоким radial factor, Collision с SDF сцены — частицы отскакивают от поверхностей. Point Light Output с intensity 5.0 на первые 0.3 секунды, затем Lerp к 0. Screen-space shockwave через кастомный distortion pass, активируемый через Signal из VFX Graph через C# event binding.
| Тип эффекта | Срок |
|---|---|
| Простой spell (1–2 слоя, без динамического света) | 2–3 дня |
| Полноценный магический эффект (4–5 слоёв, light) | 5–8 дней |
| Система заклинаний (5–10 уникальных VFX) | 2–4 недели |
| Explosion или ambient VFX для environment | 3–6 дней |
Стоимость — индивидуально, после получения референсов и описания платформы.





