Запекание карт освещения (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. Пишите — мы оценим ваш проект в течение дня.






