Запікання карт освітлення (Lightmaps) для графіки
Lightmap-запікання — це технологія, яку прийнято вважати «застарілою» на фоні Lumen та real-time GI. На практиці вона залишається основним способом отримати якісне, продуктивне освітлення на мобільних платформах і бюджетних PC. Навіть у Unreal Engine 5-проєктах багато студій використовують baked lighting для статичних інтер'єрів, тому що Lumen при всіх перевагах не дає тієї ж чіткості тіней і тієї ж продуктивності на слабкому залізі.
Ми, як команда геймдев-інженерів із 10-річним досвідом, гарантуємо, що якість запеченого освітлення — це завжди результат тонкого налаштування десятка параметрів. Більшість проблем із «поганими» lightmaps — наслідок неправильно виставлених саме цих параметрів. Замовте аудит вашого проєкту — ми виявимо вузькі місця та запропонуємо рішення.
Чому UV2 та texel density — головна причина артефактів?
Lightmap у Unity або Unreal запікається в окремий UV-канал — UV2 (або Lightmap UV у Unreal). Це не та розгортка, що використовується для albedo. Lightmap UV має жорсткі вимоги:
- Жодних перекриттів (overlapping): кожен трикутник меша — на своєму унікальному місці в UV2
- Мінімальний відступ між островами (padding): не менше 2 texels при цільовому розширенні lightmap. Якщо lightmap 512px і padding 2px — це ~0.4% від текстури на кожен шов. При 2048px — 0.1%. Недостатній padding = bleeding світлих зон у темні через суміжні острови UV
- Всі острови мають бути розгорнуті без дзеркальних відображень (no mirrored UVs): дзеркалювання дає коректний albedo, але в lightmap викликає подвійне освітлення на симетричних частинах
Unity автоматично генерує Lightmap UV при імпорті (Generate Lightmap UVs в Import Settings). Для простої геометрії це працює. Для складних мешів з гострими кутами або тонкими деталями — автогенерація створює некоректні острови, які при запіканні дають видимі seams на lightmap. У таких випадках UV2 робиться вручну в DCC-інструменті (Blender, Maya, 3ds Max) та імпортується вже готовим.
Texel density в Lightmap UV — це скільки пікселів lightmap припадає на одиницю площі поверхні. Для великих плоских поверхонь (підлога, стіни) — потрібна більша ділянка в UV2. Для дрібних деталей (плінтус, дверна ручка) — менша. Unity та Unreal дозволяють контролювати це через Scale in Lightmap (Unity) та Lightmap Resolution Scale (Unreal) на кожному об'єкті окремо. Однаковий Scale для всіх об'єктів сцени — типова помилка: дрібні об'єкти отримують надлишкове розширення, великі — недостатнє.
Як правильно налаштувати Progressive Lightmapper?
У Unity головний інструмент для запікання — Progressive Lightmapper (з версії 2018.3 LTS, GPU-прискорена версія з'явилася пізніше). Згідно з документацією Unity, основні параметри, що впливають на результат:
Indirect Bounces. Кількість перевідбиттів світла. При Bounces=0 — лише пряме освітлення, без GI. При Bounces=2 — світло відбивається від поверхонь двічі, заповнюючи тіні м'яким ambient. Для темних приміщень Bounces=2–3 — мінімум для достовірного вигляду. Для яскравих outdoor часто достатньо 1–2.
Indirect Intensity та Albedo Boost. Indirect Intensity масштабує яскравість GI глобально. Albedo Boost підсилює вплив кольору поверхонь на перевідбите світло — при значенні 1.0 поверхня з яскраво-червоним albedo створює червонуватий ambient на сусідніх поверхнях (colour bleeding). При Albedo Boost > 1 ефект посилюється, при < 1 — кольори поверхонь менше впливають на GI. Для реалістичного рендеру Albedo Boost = 1, для менш «брудного» ambient — 0.5–0.8.
Prioritize View та Progressive Updates. При запіканні Progressive Lightmapper починає з пікселів, видимих у Scene View — це зручно для ітеративної роботи, але при фінальному запіканні краще вимкнути для рівномірної якості по всій сцені.
Типова проблема на великих сценах — light leaking: світло проникає крізь тонкі стіни. Причина — shadow rays в path-tracer проходять через геометрію тоншу за певний поріг. Рішення: зробити стіни та підлоги не менше 0.2–0.3 unit завтовшки (залежить від масштабу сцени) і переконатися, що немає дірок у геометрії. Альтернатива — Shadow Bias у налаштуваннях джерела світла, але він вирішує проблему лише частково.
Unreal Engine: Lightmass та його специфіка
У Unreal для запікання використовується Lightmass — Global Illumination система зі своїми параметрами в World Settings → Lightmass. Для production-якості в документації Unreal рекомендують наступні значення:
- Static Lighting Level Scale. Глобальний масштаб для якості запікання — чим менше значення, тим вища деталізація lightmaps, але довше запікання. За замовчуванням 1.0 — для production-якості знижують до 0.5–0.75.
- Num Indirect Lighting Bounces. Аналог Bounces у Unity. Для темних інтер'єрів — 4–6, для outdoor — 3–4.
- Indirect Lighting Quality. Множник кількості семплів для indirect lighting. Default = 1.0, для чистого production — 2.0–4.0. При високому значенні різко зростає час запікання.
| Параметр | Unity (Progressive Lightmapper) | Unreal (Lightmass) |
|---|---|---|
| Кількість відбиттів | Indirect Bounces | Num Indirect Lighting Bounces |
| Якість GI семплів | Indirect Samples | Indirect Lighting Quality |
| Масштаб деталізації | Scale in Lightmap (per-object) | Static Lighting Level Scale (global) |
| Додаткове GI для динаміки | Light Probes | Volumetric Lightmap |
| Розподілене запікання | Немає (одна машина) | Swarm (до 10 машин) |
У Unreal Lightmass запікання відбувається через Swarm — розподілену систему, яка може використовувати кілька комп'ютерів у мережі одночасно. Для великих рівнів з великим розширенням lightmaps (4096+) без Swarm запікання може займати 8–24 години; з кількома машинами в Swarm — у 4–8 разів швидше.
Volumetric Lightmap в Unreal — аналог Light Probes у Unity. Автоматично будується при запіканні та забезпечує ambient для динамічних об'єктів. Параметр Volumetric Lightmap Detail Cell Size у World Settings контролює щільність решітки. Менше значення — точніше ambient для динамічних об'єктів, більший об'єм даних.
Поширені проблеми при запіканні та їх вирішення
Чому виникають артефакти? Розбір типових випадків
Seams на lightmap. Видимі межі між UV-островами на освітленій поверхні. Причина: недостатній padding у UV2. Рішення — збільшити padding або переглянути розбивку UV-островів.
Темні плями в кутах. Не завжди artistically correct AO — іноді це недостатня кількість Indirect Samples. Перевірити: збільшити Indirect Samples вдвічі та подивитися, чи змінилися темні зони. Якщо шум зменшився — samples були занижені.
Жовтий або червоний tint на сірих поверхнях. Colour bleeding від сусідніх пофарбованих поверхонь із високим Albedo Boost. Знизити Albedo Boost або перевірити, чи немає сусідніх яскраво пофарбованих об'єктів без Cast Shadows = Off.
Lightmap занадто розмитий. Занадто низький Scale in Lightmap для даного об'єкта — не вистачає texels. Збільшити Scale або переглянути пріоритети розподілу texel density по сцені.
Як ми запікаємо lightmap: покроковий процес
- Аудит — перевірка UV2-розгорток, Import Settings, поточних налаштувань запікання. Виявляємо вузькі місця та артефакти.
- Проектування — розподіл texel density по об'єктах сцени, налаштування Scale in Lightmap для кожного елемента.
- Налаштування параметрів — Indirect Bounces, Intensity, Albedo Boost, якість семплів. Залежить від сцени та цільової платформи.
- Ітеративне запікання — прогресивне збільшення якості з контролем результату. При необхідності коригуємо параметри.
- Фінальна перевірка — візуальний огляд на артефакти, виміри продуктивності (FPS budget), виправлення решти проблем.
- Здача — готові lightmaps, документація по налаштуваннях, рекомендації щодо подальшої оптимізації.
Що входить у роботу
- Повний аудит UV2-каналу та Import Settings
- Налаштування Progressive Lightmapper або Lightmass під ваш проєкт
- Ітеративне запікання з контролем якості
- Усунення артефактів (seams, light leaking, colour bleeding)
- Документація по всіх параметрах і фінальних налаштуваннях
- Підтримка протягом 2 тижнів після здачі проєкту
Ми — команда з 10-річним досвідом у геймдеві, яка виконала понад 50 проєктів з якісним освітленням. Зв'яжіться з нами для оцінки вашого проєкту — отримайте консультацію з lightmap-запікання.
| Масштаб задачі | Орієнтовний термін |
|---|---|
| Запікання одного невеликого приміщення (до 20 об'єктів) | 1–2 дні |
| Interior-рівень середнього розміру | 3–6 днів |
| Outdoor-рівень з лісом, terrain та prop-ами | 5–12 днів |
| Виправлення артефактів у готовому проєкті | 2–4 дні |
| Налаштування UV2 + запікання з нуля (весь рівень) | 2–6 тижнів |
Спочатку аудит UV2-розгорток і налаштувань Import Settings, потім проектування розподілу texel density, ітеративне запікання зі збільшенням якості, фінальна перевірка артефактів і здача.
Вартість розраховується індивідуально після аналізу проєкту: розмір сцени, кількість джерел, цільова платформа та існуючий стан UV2. Пишіть — ми оцінимо ваш проєкт протягом дня.






