Чому GI-пайплайн ламається частіше, ніж здається?
Сцена виглядає правдоподібно, коли світло не лише падає безпосередньо від джерела, але й відбивається від стін, перетікає через дверні прорізи, фарбує тіньові зони в теплий чи холодний відтінок. Без глобального освітлення усе це доводиться імітувати вручну через додаткові Fill Lights — і все одно картинка виглядає плоскою. Наше налаштування Global Illumination для ігор в Unity та Unreal Engine позбавляє від цього компромісу на будь-якому рушії.
Найчастіша скарга: «запекли лайтмапи, а стики між тайлами світяться білою смугою». Це розходження UV-розгортки в Lightmap UV (UV Channel 1) — або острови занадто щільно упаковані, або Texels Per Unit виставлений однаково для об'єктів різного масштабу. В результаті Progressive Lightmapper не встигає коректно семплювати граничні пікселі, і замість плавного переходу отримуємо артефакт.
Друга типова ситуація: Realtime GI через Enlighten працює в Editor, але в білді освітлення «стрибає» при завантаженні сцени. Причина зазвичай у тому, що Lighting Data Asset не був включений у білд — його треба явно прописати в Scene settings або генерувати через Lighting.BakeAsync() і зберігати в Addressables.
Окрема історія з HDRP та Lumen-подібними рішеннями. В HDRP Screen Space GI (SSGI) дає гарний результат, але потребує коректного налаштування Ray Tracing Acceleration Structure — якщо в сцені є skinned meshes з включеним Raytracing, кожен кадр перераховує BVH і Frame Time різко зростає. Для скинованих персонажів краще вимкнути Raytracing на компоненті Mesh Renderer і залишити їх поза Ray Tracing Acceleration Structure.
Наш досвід показує, що правильне виявлення цих проблем на старті скорочує час доопрацювань на 40%, а економія бюджету може сягати 30–50% (від $500 до $2000 на типовий проєкт). Замовте консультацію — ми допоможемо уникнути цих помилок.
Як вибрати між Baked, Mixed та Realtime GI?
Перший крок — визначити, який режим потрібен: повністю запечений (Baked Indirect), змішаний (Mixed) або повністю реалтаймовий. Це архітектурне рішення, яке впливає на весь пайплайн.
Baked Indirect підходить для статичних сцен — казуальні ігри, RPG з фіксованими рівнями. В Unity налаштовуємо через Window → Rendering → Lighting, обираємо Progressive GPU Lightmapper (він в 1.5–2 рази швидше за CPU-варіант на сценах до 500 об'єктів), виставляємо Lightmap Resolution окремо для кожного типу поверхні через Lightmap Parameters Asset. Для зовнішніх сцен з великими відкритими просторами розумно знизити роздільність для віддалених об'єктів через LOD Groups.
Mixed Mode з Subtractive або Shadowmask — компроміс для мобільних проєктів з динамічними персонажами. Shadowmask зберігає запечені тіні в окремому каналі текстури і дозволяє динамічним об'єктам відкидати тіні в реалтаймі поверх запечених. Subtractive простіший і дешевший, але некоректно працює з кольоровими тінями.
Для повністю динамічних сцен — Light Probes та Reflection Probes. Light Probe Group розміщуємо вручну в ключових точках переходу світла (дверні прорізи, кути кімнат, переходи вулиця/приміщення). Автоматичне розміщення через Adaptive Probe Volume (доступне в останніх версіях Unity) значно прискорює роботу на великих рівнях — зони з частими змінами освітлення отримують більше зондів, відкриті однорідні простори — менше.
Reflection Probes потребують окремої уваги. Box Projection для interior spaces обов'язковий — без нього відбиття на підлозі виглядають як зняті з вулиці. Тип Realtime з Refresh Mode Every Frame вбиває продуктивність (падіння FPS до 10–15), тому для більшості сцен використовуємо Baked або Realtime з Refresh Mode On Awake + ручний виклик RenderProbe() при зміні сцени.
Порівняння режимів у таблиці:
| Режим | Коли використовувати | Продуктивність | Час налаштування |
|---|---|---|---|
| Baked Indirect | Статичні сцени, казуальні ігри | Висока (все запечено) | Середнє (запікання) |
| Mixed (Shadowmask) | Мобільні проєкти з динамікою | Середня (частина реалтайм) | Високе (гібрид) |
| Realtime (Probes) | Динамічні сцени, відкриті світи | Низька (реалтайм розрахунок) | Низьке (без запікання) |
Кейс: налаштування GI для ізометричної RPG
Наш клієнт розробляв ізометричну RPG з тайловими рівнями. Початковий час запікання становив 4 години на сцену середнього розміру. Після аудиту з'ясувалося: у 60% об'єктів Contribute GI був включений за замовчуванням, включаючи декоративні дрібні пропси (каміння, трава) з площею UV-острова в 2–4 пікселі. Progressive Lightmapper витрачав величезний час на семплювання об'єктів, які не давали візуального внеску в підсумковий лайтмап.
Рішення: винесли дрібні пропси в окремий Lightmap Parameters Asset з параметром Indirect Resolution 0.5 (проти 2.0 у основних поверхонь), а декоративні об'єкти менше 0.5 м² повністю перевели в Receive GI: Light Probes. Час запікання впав до 35 хвилин (зниження на 85%), візуальна якість не змінилася — дрібні об'єкти коректно приймають освітлення через найближчий Light Probe. Економія бюджету на доопрацюваннях склала близько 40% (близько $800) порівняно з початковою оцінкою.
Процес роботи над GI: 6 кроків
- Аудит поточного освітлення та UV-розгортки — дивимось Scene Lighting Stats, аналізуємо кількість та розмір лайтмап-текстур, перевіряємо UV1 через Lightmap UV Preview. На цьому етапі видно 80% проблем.
- Узгодження архітектурного рішення — обираємо Baked/Mixed/Realtime виходячи з платформи та художнього стилю. Якщо проєкт вже в продакшені, зміна режиму може потребувати переробки шейдерів.
- Налаштування параметрів запікання — створюємо Lightmap Parameters Asset під різні типи поверхонь, розставляємо Light Probe Group та Reflection Probes (вручну або через Adaptive Probe Volume).
- Тестове запікання та усунення артефактів — Lighting Seam Stitching, перевірка через Rendering Debugger, аналіз Indirect Diffuse.
- Валідація на цільовому залізі — через GPU Profiler та перевірка коректності LOD-переходів освітлення.
- Передача документації — Lighting Data Asset, параметри, інструкція з оновлення. Підтримка після здачі (гарантія 1 місяць на коригування).
| Масштаб сцени | Орієнтовні терміни |
|---|---|
| Одна невелика локація (indoor, до 50 об'єктів) | 2–5 днів |
| Середній рівень (mixed indoor/outdoor, до 300 об'єктів) | 1–2 тижні |
| Відкритий світ або комплекс з декількох сцен | 3–6 тижнів |
Типові помилки при налаштуванні GI
Вмикати Contribute GI на всіх об'єктах без розбору — перша і найчастіша помилка. Особливо болісно це на рівнях з рослинністю: кожен екземпляр трави чи листя з включеним Contribute GI багаторазово збільшує час запікання і плодить артефакти в лайтмапах.
Використовувати однаковий Lightmap Resolution для всієї сцени. Далекі гори та ближній інтер'єр не можуть мати однакове texels-per-unit — різниця повинна бути 4–8x на користь ближніх поверхонь.
Забувати про Lighting Seam Stitching. В Progressive Lightmapper він вмикається в Mesh Renderer → Stitch Lightmap Seams і виправляє більшість стиків між сусідніми плитками рівня без ручних правок.
Нехтувати перевіркою через Rendering Debugger (Window → Analysis → Rendering Debugger). Режим перегляду Lighting → Indirect Diffuse одразу показує зони з нульовим внеском GI — саме там часто ховаються неправильно налаштовані об'єкти або прогалини в покритті Light Probe.
Що входить у роботу під ключ
- Діагностика поточного GI (аудит UV, лайтмап, продуктивності).
- Вибір архітектури освітлення (Baked/Mixed/Realtime).
- Налаштування Lightmap Parameters, Light Probes, Reflection Probes.
- Запікання лайтмап з усуненням артефактів.
- Валідація на цільових пристроях.
- Документація та інструкція з оновлення освітлення.
- 1 місяць безкоштовної підтримки після здачі.
Оцінимо ваш проєкт за 1 день. Пишіть на консультацію — обговоримо терміни та вартість.
Наша команда має 10+ років досвіду в геймдеві та реалізувала GI більш ніж для 50 проєктів. Ми сертифіковані по Unity та Unreal. Замовте налаштування GI — отримайте професійний результат.






