Что такое Light Baking в Unity? Какие преимущества и недостатки запеченного освещения?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое Light Baking в Unity?
Light Baking (или запекание освещения) — это процесс предварительного расчета статического освещения и сохранения результатов в текстуры (lightmaps) или пробы освещения (light probes). Вместо вычисления освещения в реальном времени, Unity заранее рассчитывает влияние источников света на статические объекты, фиксируя диффузное и отражённое освещение, тени и глобальное освещение (Global Illumination, GI). Это существенно снижает нагрузку на GPU во время выполнения игры, поскольку освещение становится «запечённым» в текстуры.
Технический процесс запекания
Процесс включает следующие этапы:
- Разметка сцены: Объекты помечаются как
StaticилиContribute GI. - UV-развёртка: Unity автоматически генерирует вторые UV-каналы (lightmap UVs) для хранения lightmaps.
- Расчёт освещения: Движок просчитывает прямое освещение, отскоки света (bounces) и тени.
- Сохранение результатов: Данные записываются в lightmaps (текстуры) и light probes для динамических объектов.
Пример настройки источника света для baking:
// В редакторе: источник света (Light) настраивается через инспектор.
// Режим (Mode): Baked или Mixed (для Mixed требуется статика на объектах).
Важно: Для статических объектов используется только Baked свет, для динамических с Mixed — Light Probes.
Преимущества запечённого освещения
- Высокое качество визуализации: Возможность расчёта сложных эффектов, таких как реалистичное глобальное освещение (GI), мягкие тени и цветовой отскок (color bleeding), без затрат в реальном времени.
- Производительность: Освещение предрассчитано, что снижает нагрузку на GPU и CPU. Это критично для мобильных платформ и VR.
- Совместимость со слабым железом: Позволяет добиться фотореализма даже на устройствах с ограниченными ресурсами.
- Использование сложных источников: Можно «запечь» свет от area lights, которые в реальном времени очень дороги.
Недостатки запечённого освещения
- Статичность: Освещение не может динамически меняться (например, движение солнца или включение/выключение ламп). Для Mixed lights частично решается, но требует Light Probes.
- Потребление памяти: Lightmaps — это текстуры, занимающие место в оперативной памяти и на диске. Большие сцены могут требовать сотни мегабайт.
- Время разработки: Процесс baking может занимать от минут до часов для сложных сцен, замедляя итерации.
- Ограничения по развёртке UV: Автоматическая UV-развёртка может создать артефакты (наложения, растяжения), требующие ручной коррекции.
- Сложность с динамическими объектами: Для них требуется настройка Light Probes, иначе они не будут интегрированы в запечённое освещение.
Практический пример настройки
В Unity редакторе:
- Выделите статический объект, в инспекторе отметьте Static.
- Для света укажите режим Baked или Mixed.
- В окне Lighting (Window > Rendering > Lighting) настройте параметры baking (разрешение lightmap, количество bounces и т.д.).
- Нажмите Generate Lighting для запуска процесса.
// Динамический объект может получать запечённое освещение через Light Probes.
// Убедитесь, что он имеет компонент MeshRenderer с опцией "Use Light Probes".
Когда использовать?
- Baking идеален для статических сцен (интерьеры, ландшафты) в мобильных играх или проектах, где важна производительность.
- Mixed или Real-time свет стоит выбирать для динамических сцен (например, с меняющимся временем суток).
Итог: Light Baking — это мощный инструмент для достижения баланса между качеством графики и производительностью, но требующий внимания к статичности сцены и управлению ресурсами.