Освещение и рендеринг
Представьте сцену: художник по освещению час запекает лайтмапы, получает результат, замечает артефакт на стыке двух мешей, правит UV, запекает заново. Ещё час. Если проект делается в таком режиме, релиз сдвигается влево быстрее, чем успевает двигаться разработка. Освещение — одна из тех областей, где неправильно выбранный подход в начале проекта обходится дорого на финише.
Мы занимаемся настройкой освещения для Unity- и Unreal-проектов: от выбора стратегии (запечённое, динамическое, смешанное) до отладки конкретных артефактов в готовой сцене.
Динамическое, статическое и смешанное освещение
Прежде чем браться за инструменты, нужно определиться с моделью. В Unity это три режима для каждого источника света:
| Режим | Тени | Нагрузка на GPU | Нагрузка на CPU | Применение |
|---|---|---|---|---|
| Realtime | Динамические | Высокая | Средняя | Персонажи, движущиеся объекты |
| Baked | Запечённые в текстуру | Минимальная | Нет | Статичные декорации |
| Mixed | Гибрид | Средняя | Низкая | Ключевые источники с тенями |
Ошибка, которую мы видим регулярно: студия выставляет всё освещение в Realtime, потому что «так проще», и получает сцену с 12 источниками теней на экране. На мобильных платформах это гарантированный провал по производительности. На PC — перегрев пайплайна с тенями.
Mixed Lighting с подрежимом Subtractive или Shadowmask — рабочий компромисс для большинства проектов. Статичные объекты получают запечённые тени, динамические объекты отбрасывают реалтаймовые тени от тех же источников.
Глубже: оптимизация запечённого освещения
Это та часть, где теряется больше всего времени и где мы можем сэкономить его больше всего.
Выбор между Enlighten и Progressive Lightmapper
Unity поддерживает два бэкенда для запекания:
- Enlighten — старый движок, работает в реальном времени, но даёт менее точный GI. Формально устарел, но до сих пор используется на мобильных платформах из-за низкой стоимости рантайм-обновлений.
- Progressive Lightmapper (CPU/GPU) — современный path-tracing бэкенд. GPU-вариант на хорошей карте работает в 5–10 раз быстрее CPU-варианта. Именно его мы используем по умолчанию для PC- и консольных проектов.
Ключевые параметры Progressive Lightmapper, которые влияют на скорость запекания:
Lightmap Resolution: 10–20 texels/unit для большинства сцен
Max Bounces: 2–4 (не 8, как стоит по умолчанию)
Samples (Direct): 32–64
Samples (Indirect): 512–1024
Denoiser: OIDN (Intel) или OptiX (NVIDIA)
Деноизер — обязательный инструмент. Без него для достаточно чистого результата нужны тысячи сэмплов. С деноизером хватает 256–512, и итерация занимает минуты, а не часы.
Типичные артефакты и их причины
Светлые швы между объектами (seams). Причина — разные UV-острова не согласованы на границах. Решение: правильно выставить Stitch Seams в настройках меша или использовать Auto UV Charts с запасом отступа (Pack Margin).
Тёмные пятна у основания объектов. Чаще всего — пересечение коллайдера с полом. Enlighten/Progressive интерпретируют пересечение геометрии как закрытую область и затемняют её. Решение: поднять объект на 0.01–0.05 единиц или правильно настроить Backface Tolerance.
Засвет на стыках лайтмап-атласов. Происходит, когда UV-острова от разных объектов оказываются слишком близко в атласе. Решение: увеличить Pack Margin, либо вручную раскладывать крупные объекты в отдельные атласы через Lightmap Parameters.
Организация сцены для быстрого запекания
Большой масштаб сцены — главный враг скорости. Несколько правил:
- Объекты размером меньше 0.5 unit не нужно включать в запекание — они получают освещение через Light Probes.
- Повторяющиеся объекты (деревья, камни, заборы) должны использовать Instanced Meshes — они шарят один UV-атлас.
- Terrain запекается отдельно с пониженным разрешением (2–5 texels/unit) — на земле детализация лайтмапа всё равно не читается.
Light Probes и Reflection Probes
Light Probes — это система, которая даёт динамическим объектам (персонажам, противникам, подбираемым предметам) иллюзию запечённого освещения без реальных лайтмапов. Проб нужно расставить достаточно: одна каждые 2–4 метра в зонах с изменением освещения. Слишком редкая расстановка даёт резкие скачки освещения при перемещении персонажа.
Инструмент Probe Volumes (доступен в Unity 2022+, HDRP) заменяет ручную расстановку проб на объёмную сетку. Для больших открытых сцен это существенная экономия времени художника по освещению.
Reflection Probes закрывают другую задачу — корректные отражения на PBR-материалах. Без них металлические и зеркальные поверхности отражают скайбокс вместо окружения, что сразу читается как низкое качество. Настройка:
- Тип Baked для статичных помещений
- Тип Realtime для небольших зон с изменяемым окружением (например, телевизор в комнате)
- Грамотная настройка Box Projection для корректного отражения геометрии комнаты
Пост-обработка: SSAO и SSR
Это не часть системы освещения в строгом смысле, но обе техники критически влияют на восприятие глубины и качества рендера.
SSAO (Screen Space Ambient Occlusion) добавляет затемнение в щелях, углах и местах контакта объектов с поверхностью. В URP это компонент Ambient Occlusion в Volume. В HDRP — Ambient Occlusion с настройкой Ray Tracing для консольных и PC-проектов.
Типичная ошибка — слишком высокий Radius и Intensity. Результат выглядит как грязное размытое затемнение по всей сцене. Рабочие значения для большинства проектов: Radius 0.5–1.5, Intensity 1.0–2.0.
SSR (Screen Space Reflections) даёт динамические отражения на горизонтальных поверхностях (пол, вода, мокрый асфальт). Техника работает только с тем, что видно на экране — это и ограничение, и преимущество по производительности перед cube-map отражениями. В HDRP настраивается через Screen Space Reflection в Volume Profile, в URP — через Screen Space Reflection Renderer Feature.
Что мы делаем в рамках этой услуги
- Аудит текущей системы освещения: выявление узких мест по времени запекания и производительности рантайм
- Настройка Mixed Lighting для конкретной платформы и жанра
- Оптимизация UV-развёртки под лайтмапы
- Расстановка и настройка Light Probe и Reflection Probe сеток
- Настройка пост-обработки (SSAO, SSR, Bloom, Tonemapping) под стилистику проекта
- Профилирование освещения через Unity Frame Debugger и RenderDoc
Если у вас уже есть сцена с проблемами — пришлите скриншоты и описание: в большинстве случаев источник проблемы виден сразу.





