Освещение и тени
Directional, Point, Spot — и почему статичный свет можно "запечь" заранее.
Свет в 3D-сцене — то, что превращает геометрию из плоского силуэта в объёмную картинку. Unity поддерживает realtime и baked (запечённое) освещение, и в реальном проекте они комбинируются.
Типы источников света
- Directional Light — солнце. Бесконечно далёкий источник параллельных лучей. Один на сцену обычно достаточно.
- Point Light — лампочка. Свет во все стороны от точки, с радиусом затухания.
- Spot Light — фонарик. Конус из точки, с углом и радиусом.
- Area Light — прямоугольный/дисковый источник для запекания (в realtime — только в HDRP).
Каждый Light имеет цвет, интенсивность (в люменах или unitless — зависит от пайплайна) и mode: Realtime, Mixed или Baked.
Realtime, baked и mixed
| Mode | Когда вычисляется | Стоимость | Применение |
|---|---|---|---|
| Realtime | Каждый кадр | Высокая | Движущиеся источники, время суток |
| Baked | Один раз в редакторе | Нулевая в рантайме | Статичная архитектура, интерьеры |
| Mixed | Прямой — realtime, непрямой — baked | Средняя | Главный солнечный свет, динамические тени |
В большинстве проектов главный directional свет ставят в Mixed-режим: прямые тени динамические, непрямое освещение и тени от статичной геометрии запечены. Это лучший баланс качества и производительности.
Baked GI и Light Probes
Global Illumination (GI) — это про непрямое освещение: свет, отражённый от стен и пола. В Unity GI запекается через Progressive Lightmapper (CPU или GPU). Результат — текстуры lightmap для статичной геометрии.
Для динамических объектов lightmap не подходит — они двигаются. Вместо этого используется Light
Probes: сетка “сэмплов” освещения, размещённая в сцене (компонент LightProbeGroup). Динамический
объект интерполирует освещение из ближайших probe’ов.
В Unity 6 (URP/HDRP 17+) появились Adaptive Probe Volumes (APV) — автоматическая сетка проб
с переменной плотностью (больше проб в детализированных зонах). Не нужно вручную ставить
LightProbeGroup. Активация для URP: Edit → Project Settings → Quality → дабл-клик на активный URP Asset → секция Lighting → Light Probe Lighting → Light Probe System: Adaptive Probe Volumes. Запекание spacing — в Window → Rendering → Lighting → Adaptive Probe Volumes (отдельная вкладка). Для новых проектов — стандартный выбор.
Запекание (грубо):
1. Отметьте статичные объекты как "Static" → Contribute GI.
2. Разместите Light Probes в нужных зонах (где могут быть динамические объекты).
3. Window → Rendering → Lighting → Generate Lighting.
4. Ждёте от минут до часов в зависимости от сцены.
Reflection Probes — то же самое для отражений. Сферические или box-проектируемые карты окружения, по которым материалы (особенно металлические) узнают, что отражать.
Тени
У каждого Light есть параметры теней:
- Shadow Type —
No Shadows/Hard Shadows/Soft Shadows. - Shadow Resolution — разрешение shadow map.
- Shadow Strength / Bias / Normal Bias — настройка артефактов (acne, peter-panning).
Realtime-тени — одна из самых дорогих вещей в кадре. На мобильных часто отключают все тени, кроме одной от directional light, и то с малым shadow distance (URP позволяет настраивать каскадные тени и их дальность).
Light Cookie — текстура, проецируемая через источник света (как стенсил кинопроектора). Полезно для красивых паттернов от листвы. Но это дополнительный sampler в шейдере — на слабом железе избегайте.
Skybox и Ambient
Skybox — фон в дальнем поле, обычно cubemap. Также служит источником ambient-освещения: даже без прямых источников мир не будет в полной темноте. Настраивается в Window → Rendering → Environment:
- Skybox Material — материал с типом Skybox/Cubemap или Skybox/Procedural.
- Source для Environment Lighting: Skybox / Gradient / Color.
- Intensity Multiplier — насколько ярко окружение освещает сцену.
Хороший приём для уличной сцены — HDRI cubemap из реальной фотосферы (есть библиотеки бесплатных HDRI, например PolyHaven). HDRI задаёт сразу и фон, и общее освещение.
Что обычно “ломает” освещение у новичка
- Слишком много Point Light’ов в realtime. В URP forward-рендере каждый light добавляет стоимость на каждый видимый объект. Ограничьте 4–8 активных, остальные — baked или disable по расстоянию.
- Все объекты non-static, поэтому GI не работает. Помечайте статичную геометрию как Static и запекайте.
- Auto Generate включён на больших сценах. Это пересчитывает GI после каждого изменения — медленно. Выключите и запекайте вручную через “Generate Lighting”.
- Нет Light Probes в зонах с динамическими объектами — они выглядят неосвещёнными или плоскими.
В следующей главе — анимация: как двигается ваш персонаж.