Створення візуальних ефектів оточення (дим, вогонь, пил)

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1Усі 242 послуг
Створення візуальних ефектів оточення (дим, вогонь, пил)
Середній
від 2 днів до 2 тижнів
Часті запитання

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

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1457
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    979
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    605
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    674
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    29

Створення візуальних ефектів оточення (дим, вогонь, пил)

Відзначимо: коли ви розробляєте гру, ambient VFX — дим із труби, вогонь у каміні, пил від ніг — повинні працювати непомітно, але мозок швидко помічає будь-який збій у циклі. Саме тому ми приділяємо особливу увагу продуктивності цих ефектів: вони працюють безперервно. Ми створюємо ambient VFX під ключ: від прототипу до фінальної інтеграції. Пишіть, і ми оцінимо ваш проєкт. У нас 10+ років досвіду в геймдеві, понад 50 успішних проєктів на Unity та Unreal Engine, і ми гарантуємо стабільну роботу ефектів на цільових платформах.

Як досягти об'ємного диму без втрати продуктивності?

Дим в іграх — це баланс між переконливістю та продуктивністю. Photorealistic volumetric smoke (через Volumetric Clouds або кастомний ray-marching) коштує дорого навіть на PC. Для більшості ігор billboard-based smoke з правильними параметрами виглядає досить добре при ціні в кілька draw calls.

Ключові параметри billboard smoke в Particle System або VFX Graph:

  • Flipbook анімація: smoke текстура повинна бути flipbook sprite sheet, а не статичним зображенням. Мінімум 4×4 = 16 кадрів, щоб цикл не був очевидним. У VFX Graph: Output Particle Quad з Flipbook Player блоком, Flipbook Size відповідає розміру sprite sheet. Frame Blending (субкадрова інтерполяція) — критично важлива для плавного диму: без неї переходи між кадрами видимі як мерехтіння, особливо при низькій частоті анімації.
  • Rotation та turbulence: частинки диму повинні повільно обертатися під час підйому. Angular Velocity over Lifetime у Particle System або Set Angle over Lifetime у VFX Graph. Випадкова початкова ротація (Start Rotation: Random Between Two Constants) запобігає синхронному патерну.
  • Колір та opacity по висоті: дим біля основи — темний, щільний. При підйомі — світлішає, стає прозорим. У Particle System: Color over Lifetime градієнт. У VFX Graph: Set Color over Lifetime + Gradient або Graph за параметром Age/Lifetime.
  • Blending mode — Premultiplied: для soft smoke ефектів краще працює Premultiplied blending, а не Alpha Blend. Premultiplied уникає «чорної обвідки» навколо димових частинок при overlapping з яскравим фоном — це видно особливо в сонячних сценах. В URP Particle Lit або Particle Unlit шейдері: Surface Type = Transparent, Blending Mode = Premultiply.

Чому шарова структура вогню — основа реалізму?

Переконливий вогонь рідко робиться одним Particle System. Стандартна структура:

  • Шар 1 — ядро полум'я: маленькі, яскраві, швидкі частинки біля основи. Висока emission rate, маленький radius, короткий час життя (0.3–0.5 сек). Колір: білий → жовтий. Additive blending.
  • Шар 2 — основне полум'я: середні частинки, що рухаються вгору з turbulence. Flipbook fire текстура. Час життя 0.8–1.5 сек. Колір: жовтий → оранжевий → червоний. Opacity до нуля по Lifetime.
  • Шар 3 — дим над вогнем: окремий Particle System, що активується на висоті, де полум'я закінчується. Повільніші, великі частинки. Сірий колір. Alpha Blend.

Всі три шари — різні Particle System компоненти на одному GameObject. В Inspector їх легко вмикати/вимикати незалежно. У грі вони активуються разом через один ParticleSystem.Play() на root компоненті з Include Children.

VFX Graph для вогню дає можливість додати Collision з SDF сцени: частинки вогню, досягаючи стіни, «прилипають» до неї та горять по поверхні. Це вартує налаштування: SDF Asset потрібно згенерувати через VFX SDF Baker для статичної геометрії, або використовувати Dynamic Collider для physics об'єктів.

Що входить в роботу зі створення ambient VFX?

Ми надаємо повний комплект:

  • Прототипування ефекту з підбором текстур і шейдерів.
  • Налаштування Particle Systems та VFX Graph з оптимізацією.
  • Інтеграція в проект: animation events, LOD, culling.
  • Тестування на цільових платформах (PC, console, mobile, XR).
  • Документація з налаштувань та підтримка при впровадженні.

Пил та contact particles

Пил — це ambient частинки (пил у повітрі) плюс contact particles (пил від кроків, ударів, ковзання).

Ambient dust: сотні повільних, майже невидимих alpha-thin частинок, що дрейфують у випадкових напрямках. Сенс — не сам пил, а відчуття повітря в просторі. Часто забувають про цей шар, тому що він непомітний. Але його відсутність робить повітря в приміщенні стерильним. Particle System: emission rate 20–50 в секунду, Start Speed 0.01–0.1, Start Size 0.01–0.05, дуже низький Start Color Alpha (5–20 із 255).

Відзначимо: як налаштувати contact dust:

  1. Створіть Particle System з параметрами для пилу (Start Lifetime 0.5–1 сек, Size 0.05–0.1, Color темно-коричневий).
  2. Додайте Animation Event на кадр footfall, що викликає ParticleSystem.Play().
  3. Зв'яжіть з PhysicMaterial через Raycast із точки під ногою — перевіряйте тег матеріалу для вибору правильного VFX.

Оптимізація ambient VFX

Головна помилка — залишити Culling Mode в Particle System на значенні Automatic або Always Simulate. Для ambient ефектів правильно: Culling Mode = Pause And Catch-Up або Stop Emitting при виході за межі camera frustum. Це налаштовується в Particle System Main модулі.

Налаштування Culling Mode для різних платформ Для mobile: Stop Emitting, щоб не витрачати ресурси на невидимі ефекти. Для PC: Pause And Catch-Up, щоб при поверненні в кадр частинки не зникали різко.

Для LOD: дальні джерела диму та вогню повинні перемикатися на спрощені шейдери або sprite анімацію через LOD Group. У VFX Graph немає вбудованого LOD — потрібен кастомний VisibilityController, який змінює VFX Asset або його параметри залежно від Distance to Camera.

Порівняння blending mode для smoke та fire:

Blending Mode Застосування Особливості
Alpha Blend Дим, туман Може давати чорну обвідку при перекритті з яскравим фоном
Premultiplied Дим, soft VFX Уникає чорної обвідки, краще для освітлених сцен
Additive Вогонь, сяйво Яскравість накопичується, прозорість не підтримується

Орієнтовні терміни:

Тип ефекту Термін
Один ambient ефект (дим або вогонь) 1–3 дні
Повний набір для оточення (вогонь + дим + пил) 5–8 днів
Contact particles система (кроки, удари, ковзання) 3–5 днів
Оптимізація існуючих VFX для mobile 2–4 дні

Вартість розраховується індивідуально після обговорення платформи, кількості одночасних джерел та референсів по стилю. Зв'яжіться з нами, щоб отримати консультацію та попередню оцінку.

Рекомендації засновані на офіційній документації Unity Particle System.

Як відрізнити робочий шейдер від провального?

Програміст додає в сцену воду — отримує синій прямокутник. Asset Store видає застарілий асет з артефактами на мобайлі. Розробка шейдерів — це не просто натягування текстури, а складна інженерна задача: потрібно розуміти depth buffer, семплювати нормалі в кілька шарів, організовувати foam на перетині з геометрією. Без цього шейдер або не працює, або вбиває FPS. Ми займаємося професійною розробкою шейдерів і VFX понад п’ять років — за цей час пройшли десятки проектів від інді до AAA. Одного разу замовник приніс сцену з водою з Asset Store: на мобільному пристрої вона видавала 12 FPS через відсутність LOD та неправильного batching. Переписали шейдер під URP — отримали 60 FPS зі збереженням візуалу.

URP vs HDRP: що обрати для вашого проекту?

Вибір Render Pipeline фіксується на старті — шейдери під HDRP не працюють в URP і навпаки. Оцініть компроміси за таблицею:

Параметр URP HDRP
Цільові платформи Mobile, PC, консолі PC, консолі (High-end)
Продуктивність Низький overhead, до 40% швидше на мобайлі Високе навантаження, фотореалізм
Screen Space Reflections Обмежено (з версії URP 14) Повноцінно з налаштуваннями
Volumetric Fog Через кастом Вбудована система
Water System Відсутня Вбудована
ShaderGraph ноди Базовий набір Розширений (Diffusion Profile, Eye)

Висновок: URP дає до +40% FPS на мобільних пристроях порівняно з HDRP. Для мобільної RPG обрали URP — на iPhone 8 отримали стабільні 60 FPS без втрати якості. HDRP виправданий на PC/консолях, де потрібен фотореалізм і вбудована Water System.

Розробка шейдерів у ShaderGraph: від води до рослинності

ShaderGraph — нодовий редактор без HLSL, але розуміння «під капотом» обов'язкове. Розберемо водний шейдер — він включає кілька технік.

Нормалі з рухом

Два шари normal map, семплованих з різними швидкостями та напрямками:

Time → Multiply (speed1) → Add → Sample Texture 2D (normalMap)
Time → Multiply (speed2) → Add → Sample Texture 2D (normalMap)
→ Normal Blend → Normal (фрагментный шейдер)

Два різнонаправлених шари створюють ефект біжучих хвиль без тайлової періодичності. Споживання — 2 texture samples, що вписується в бюджет 40 draw calls для водної поверхні.

Глибина та foam

Через нод Scene Depth (в URP/HDRP opaque texture має бути включена) отримуємо різницю між глибиною сцени та позицією фрагмента води. Мала глибина (перетин з берегом) → foam через Step/Smoothstep. Велика глибина → більш насичений синій, вища непрозорість. Foam додає 1-2 ms на GPU, але дає реалістичну берегову лінію.

Рефракція

Scene Color + зміщення UV по normal map — дно «пливе». Вода рендериться в Transparent черзі, після всієї непрозорої геометрії. Обов'язково вмикати Opaque Texture в налаштуваннях URP, інакше рефракція не працює.

Fresnel та відбиття

Fresnel Effect нод — поблизу нормалі до камери поверхня прозоріша, під гострим кутом відбиває. Фізично коректно для діелектриків. Поверх Fresnel-маски додається кубмап або Reflection Probe. На мобільних платформах Reflection Probe замінюємо на кубмап низької роздільної здатності (128x128) — економія 1-2 ms.

Шейдер рослинності

Анімація кущів та трави без фізичної симуляції — через вертексний шейдер. В ShaderGraph: беремо XZ-координати вершини як фазовий зсув, Time → Sine з різною фазою, множимо на Vertex Color канал R (білий = хитається, чорний = закріплений до землі). Результат: трава хитається хвилями, основа фіксована. Для «вітру при бігу гравця» — додаємо CPU-параметр _PlayerPosition. Такий шейдер обробляє 100 000 вершин за 0.3 ms на iPhone 11.

VFX Graph: як керувати мільйонами частинок на GPU

VFX Graph виконується повністю на GPU через Compute Shaders. На відміну від Particle System (Shuriken), яка працює на CPU, тут можна керувати мільйонами частинок без навантаження на CPU. Приклад: вибух зі шрапнеллю (200 частинок) на GPU займає 0.05 ms, тоді як CPU Particle System тієї ж складності — 0.8 ms.

Граф ділиться на контексти: Spawn (burst, constant rate, event trigger), Initialize (початкові атрибути), Update (гравітація, турбулентність, колізії), Output (Quad, Mesh, Lit/Unlit, Distortion).

Приклад: вибух зі шрапнеллю

Spawn: Single Burst (count: 200)
  ↓
Initialize:
  Position: Sphere Volume (radius: 0.1)
  Velocity: Spherical * Random(5, 15)
  Size: Random(0.05, 0.3)
  Lifetime: Random(0.5, 2.0)
  Color: Gradient по lifetime (білий → оранжевий → сірий)
  ↓
Update:
  Gravity (force: -9.8)
  Drag (coefficient: 0.2)
  Turbulence (intensity: 2.0)
  Collision (SDF сцени або Depth Buffer)
  ↓
Output Quad (Unlit):
  Texture: іскра
  Blend Mode: Additive

Turbulence використовує Noise Field — тривимірний шум, частинки відхиляються органічно. Flipbook анімації в Output контексті — анімація спрайта для кожної частинки. Для мобільних платформ знижуємо кількість частинок до 50 та вимикаємо Collision — економія 3 ms.

Чому пост-обробка потребує налаштування під платформу?

Post-processing — ефекти на фінальному зображенні після основного рендеру. В Unity через Volume систему (Local/Global Volume). Типовий стек для action-проекту:

Ефект Призначення Особливості
Bloom Світіння яскравих джерел Threshold 0.8, intensity 0.5 — економія 1 ms
Tonemapping ACES filmic для реалізму, Neutral для стилізації Стандарт для realistic проектів
Color Adjustments Контраст +10%, насиченість +5% Корекція під настрій
Vignette Затемнення країв Intensity 0.3 — фокус на центрі
Motion Blur Розмиття за вектором руху На мобайлі вимикаємо — -2 ms GPU
Depth of Field Боке У VR обережно — ламає сприйняття глибини
Screen Space Ambient Occlusion SSAO / HBAO Затемнення в кутах геометрії, +1.5 ms

Для мобільних платформ ми вимикаємо Motion Blur та SSAO, знижуємо Bloom до 2-3 passes — підсумковий бюджет пост-обробки 3-4 ms. На PC/HDRP стек може займати 8-10 ms, але це компенсується потужністю GPU. Як зазначено в Unity Graphics Programming, налаштування пост-обробки під конкретний профіль GPU дає стабільний FPS без артефактів.

Що входить у роботу: від шейдера до підтримки

  • Розробка кастомних шейдерів у ShaderGraph (URP / HDRP): вода, рослинність, персонажні ефекти, голограми, dissolve.
  • VFX Graph ефекти: вибухи, вогонь, дим, магія, оточення. Максимальна продуктивність — до 2 млн частинок на GPU при 60 FPS.
  • Налаштування та оптимізація Particle System (Shuriken) для мобільних платформ: заміна на GPU-інстанси знижує draw calls на 70%.
  • Побудова Post-Processing стеку під візуальний стиль проекту з виміром часу рендеру.
  • Портування шейдерів між URP та HDRP при зміні пайплайна: середній час 0.5-1 день на шейдер.
  • Оптимізація VFX для цільової платформи: GPU instancing, LOD частинок, culling.

Deliverables: вихідні шейдерів та VFX графів, документація з налаштування, навчання команди (1 година консультації), підтримка протягом місяця після здачі. Оцінимо проект за 1 робочий день — зв'яжіться з нами. Отримайте консультацію щодо вашого проекту — ми підберемо оптимальне рішення та назвемо терміни.

Наш досвід та гарантії

Понад п’ять років у геймдеві, 50+ проектів (мобільні, PC, консолі). Гарантуємо, що шейдер буде працювати на цільовій платформі із заявленим FPS — якщо ні, доопрацьовуємо безкоштовно. Приклад: для однієї інді-студії переписали всі шейдери під URP — FPS на iPhone 8 зріс з 25 до 60, а бюджет часу на рендер скоротився на 40%. Використовуємо останні стабільні версії Unity (LTS) та Unreal Engine 5, працюємо з Vulkan, Metal, DirectX 12.

Порівняння: готовий асет з Asset Store часто потребує доопрацювання (сумісність, продуктивність) — кастомна розробка шейдерів обходиться в 2-3 рази швидше за часом, ніж адаптація чужого коду. А шейдер, написаний з нуля під ваші завдання, дає 100% контроль над продуктивністю та візуалом. Економія бюджету на одному проекті досягає 30% за рахунок відсутності зайвого коду.

Етапи роботи

  1. Аналіз: вивчаємо сцену, цільові платформи, вимоги до FPS. Фіксуємо візуальні референси.
  2. Прототипування: створюємо шейдер/VFX граф, тестуємо на референсному пристрої.
  3. Інтеграція: вбудовуємо в проект, налаштовуємо параметри, оптимізуємо draw calls та batching.
  4. QA: перевіряємо на всіх цільових платформах (Android, iOS, PC, консолі), виправляємо артефакти.
  5. Деплой та передача: віддаємо вихідні, документацію, проводимо навчання. Підтримка — 1 місяць.

Терміни: від 2 до 10 робочих днів залежно від складності. Вартість розраховується індивідуально — пишіть, оцінимо ваш проект. Замовте розробку шейдерів — отримайте готовий результат з гарантією продуктивності.