Настройка глобального освещения (Global Illumination) игр

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

От иммерсивных приложений до игровых миров и 3D-сцен

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Настройка глобального освещения (Global Illumination) игр
Сложная
от 1 рабочего дня до 1 недели
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Настройка глобального освещения (Global Illumination) игр

Сцена выглядит правдоподобно тогда, когда свет не только падает напрямую от источника, но и отражается от стен, перетекает через дверные проёмы, окрашивает теневые зоны в тёплый или холодный оттенок. Без GI всё это приходится имитировать вручную через дополнительные Fill Lights — и всё равно картинка выглядит плоской. Правильно настроенный Global Illumination избавляет от этого компромисса.

Почему GI-пайплайн ломается чаще, чем кажется

Самая частая жалоба: «запекли лайтмапы, а стыки между тайлами светятся белой полосой». Это расхождение 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.

Как строится пайплайн GI на реальных проектах

Первый шаг — определить, какой режим нужен: полностью запечённый (Baked Indirect), смешанный (Mixed) или полностью реалтаймовый. Это не вкусовщина — это архитектурное решение, которое влияет на весь пайплайн.

Baked Indirect подходит для статичных сцен — казуальные игры, RPG с фиксированными уровнями. В Unity настраиваем через Window → Rendering → Lighting, выбираем Progressive GPU Lightmapper (быстрее на большинстве сцен, чем CPU-вариант), выставляем Lightmap Resolution отдельно для каждого типа поверхности через Lightmap Parameters Asset. Для внешних сцен с большими открытыми пространствами разумно понизить разрешение для удалённых объектов через LOD Groups.

Mixed Mode с Subtractive или Shadowmask — компромисс для мобильных проектов с динамическими персонажами. Shadowmask хранит запечённые тени в отдельном каналe текстуры и позволяет динамическим объектам отбрасывать тени в реалтайме поверх запечённых. Subtractive проще и дешевле, но некорректно работает с цветными тенями.

Для полностью динамических сцен — Light Probes и Reflection Probes. Light Probe Group размещаем вручную в ключевых точках перехода света (дверные проёмы, углы комнат, переходы улица/помещение). Автоматическое размещение через Probe Volume (HDRP/URP Adaptive Probe Volume) появилось в Unity 2022.2 и значительно ускоряет работу на больших уровнях — зоны с частыми изменениями освещения получают больше зондов, открытые однородные пространства — меньше.

Reflection Probes требуют отдельного внимания. Box Projection для interior spaces обязателен — без него отражения на полу выглядят как снятые с улицы. Тип Realtime с Refresh Mode Every Frame убивает производительность, поэтому для большинства сцен используем Baked или Realtime с Refresh Mode On Awake + ручной вызов RenderProbe() при изменении сцены.

Кейс: настройка 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 минут, визуальное качество не изменилось — мелкие объекты корректно принимают освещение через ближайший Light Probe.

Этапы работы над GI-настройкой

Работа начинается с аудита текущего состояния: смотрим Scene Lighting Stats, анализируем количество и размер лайтмап-текстур, проверяем UV1-развёртку через Lightmap UV Preview. На этом этапе уже видно 80% проблем.

Дальше — согласование архитектурного решения (Baked/Mixed/Realtime) исходя из платформы и художественного стиля. Если проект уже в продакшене, смена режима может потребовать переработки шейдеров и художественного переосмысления освещения.

После выбора стратегии — настройка параметров запекания, расстановка Light Probe Group и Reflection Probe, тестовые запекания с анализом артефактов. Финальный этап — валидация на целевом железе через GPU Profiler и проверка корректности LOD-переходов освещения.

Масштаб сцены Ориентировочные сроки
Одна небольшая локация (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.