Почему 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%. Закажите консультацию — мы поможем избежать этих ошибок.
Как выбрать между Baked, Mixed и Realtime GI?
Первый шаг — определить, какой режим нужен: полностью запечённый (Baked Indirect), смешанный (Mixed) или полностью реалтаймовый. Это архитектурное решение, которое влияет на весь пайплайн.
Baked Indirect подходит для статичных сцен — казуальные игры, RPG с фиксированными уровнями. В Unity настраиваем через Window → Rendering → Lighting, выбираем Progressive GPU Lightmapper (быстрее CPU-варианта на 50–70% на сценах до 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% по сравнению с исходной оценкой.
Процесс работы над 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.
Наша команда имеет 10+ лет опыта в геймдеве и реализовала GI более чем для 50 проектов. Мы сертифицированы по Unity и Unreal. Закажите настройку GI — получите профессиональный результат.






