Освітлення та рендеринг
Уявіть сцену: художник освітлення витрачає годину на запікання лайтмап, перевіряє результат, виявляє артефакт на стику двох мешів, переробляє UV, запікає знову. Ще година. Якщо проект розробляється такими темпами, дата релізу відсувається швидше, ніж просувається розробка. Освітлення — одна з тих областей, де неправильний вибір підходу на початку проекту коштує дорого в кінці.
Ми займаємося налаштуванням освітлення для Unity і Unreal-проектів: від вибору стратегії (запечене, динамічне, змішане) до відладки конкретних артефактів у готовій сцені.
Динамічне, статичне та змішане освітлення
Перш ніж беритися за інструменти, потрібно визначитися з моделлю. У Unity це три режими для кожного джерела світла:
| Режим | Тіні | Навантаження GPU | Навантаження CPU | Застосування |
|---|---|---|---|---|
| Realtime | Динамічні | Високе | Середнє | Персонажі, рухомі об'єкти |
| Baked | Запечені в текстуру | Мінімальне | Немає | Статичні декорації |
| Mixed | Гібридні | Середнє | Низьке | Ключові джерела зі тінями |
Помилка, яку ми бачимо регулярно: студія встановлює все освітлення в Realtime, тому що «це простіше», і отримує сцену з 12 джерелами теней на екрані. На мобільних платформах це гарантований провал у продуктивності. На ПК це перевантажує конвеєр тіней.
Mixed Lighting з підрежимом Subtractive або Shadowmask — робочий компроміс для більшості проектів. Статичні об'єкти отримують запечені тіні, динамічні об'єкти кидають реалтаймові тіні від тих же джерел.
Глибше: оптимізація запеченого освітлення
Це та область, де губиться більше всього часу — і де ми можемо його найбільше заощадити.
Вибір між Enlighten та Progressive Lightmapper
Unity підтримує два backend'и для запікання:
- Enlighten — старий рушій, працює в реальному часі, але дає менш точний GI. Формально застарілий, але досі використовується на мобільних платформах через низьку вартість оновлень рантайму.
- Progressive Lightmapper (CPU/GPU) — сучасний path-tracing backend. GPU-варіант на хорошій карті працює в 5–10 разів швидше, ніж CPU-варіант. Це наше стандартне рішення для ПК і консольних проектів.
Ключові параметри 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 сэмплів достатньо, і ітерація займає хвилини, а не години.
Типові артефакти та їхні причини
Яскраві швидкі між об'єктами. Причина — різні UV-острови не узгоджені на границях. Рішення: правильно встановити Stitch Seams в налаштуваннях меша або використати Auto UV Charts з зазором (Pack Margin).
Темні плями біля основи об'єктів. Зазвичай: перетин коллайдера з підлогою. Enlighten/Progressive інтерпретує перетин геометрії як закриту область і затемнює її. Рішення: піднімати об'єкт на 0.01–0.05 одиниці або правильно налаштувати Backface Tolerance.
Засвітлення на стиках лайтмап-атласів. Відбувається, коли UV-острови від різних об'єктів опиняються занадто близько в атласі. Рішення: збільшити Pack Margin або вручну розміщувати великі об'єкти в окремих атласах через Lightmap Parameters.
Організація сцени для швидкого запікання
Великий масштаб сцени — головний ворог швидкості. Кілька правил:
- Об'єкти розміром менше 0.5 одиниці не потребують включення в запікання — вони отримують освітлення через 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 для консольних і ПК-проектів.
Типова помилка — занадто високі 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
Якщо у вас уже є сцена з проблемами — надішліть скриншоти та опис: у більшості випадків джерело проблеми видно одразу.





