Настройка динамічного та статичного освітлення в іграх
Вибір між динамічним та статичним освітленням — одне з перших технічних рішень, яке приймається при проектуванні рівня. Це рішення визначає бюджет продуктивності, якість тіней, можливості геймплею та обсяг роботи за світловим пайплайном. Откотувати його в середині виробництва дорого.
Статичне освітлення дає кращу якість тіней та ambient, але не реагує на зміни в сцені. Динамічне — реагує на все, але коштує дорожче по GPU. На практиці в більшості проектів використовується гібридна схема, і саме правильна настройка цієї гібридної схеми — основна технічна задача.
Статичне освітлення: Progressive Lightmapper та його параметри
У Unity статичне освітлення запікується через Progressive Lightmapper (GPU або CPU). Це path-tracing рішення, яке розраховує indirect lighting, soft shadows та ambient occlusion для статичних об'єктів, зберігаючи результат у Lightmap Textures.
Ключові параметри, які напрямку впливають на результат:
Lightmap Resolution. Вимірюється в texels per unit. Для зовнішніх поверхонь стандарт — 4–8 texels/unit, для hero-поверхонь (підлоги, стіни у важливих локаціях) — 16–32. Вище — довше запікання та більше VRAM для зберігання lightmap. Нижче — видима пікселізація тіней. Типова помилка: ставити однакове значення для всієї сцени, замість того щоб контролювати через Scale in Lightmap на кожному об'єкті.
Samples (Direct/Indirect/Environment). Direct Samples — кількість семплів для прямих джерел. 512–1024 для production, менше тільки для швидких preview-запеканнь. Indirect Samples — глибина розрахунку переотражень, 512–2048 залежно від складності сцени. Environment Samples — впливає на якість ambient від skybox. Занижування Indirect Samples — головна причина шуму на стелях та в кутах.
Denoising. Вбудований деноізер Unity (OptiX для Nvidia, OIDN для CPU) убирає шум від path-tracing. Важливо розуміти: деноізинг сглажує, а не поліпшує якість. При занадто малій кількості семплів деноізер розмиває тіні до втрати деталей. Правило: семплів повинно бути достатньо, щоб шум був дрібним — тоді деноізер його акуратно убирає.
Lightmap Compression. Unity по умолчанию сжимає lightmaps у BC6H (HDR). Якщо сцена вимагає точних колірних даних в освітленні — наприклад, coloured light leaking через вікна — BC6H правильний вибір. Для простого outdoor без кольорових джерел можна знизити до BC4 для економії VRAM.
Динамічне освітлення: Shadow Cascades та продуктивність
Динамічні тіні — це shadow map rendering: сцена рендериться з точки зору джерела світла в depth texture, яка потім використовується при основному рендері для визначення затенених зон.
Shadow Cascades — критичний параметр для Directional Light (сонце, місяць). Один shadow map на всю сцену означає компроміс: або мелкі, але охоплюючі, або детальні, але тільки для ближної зони. Cascaded Shadow Maps ділять дистанцію на 2–4 зони з різним розрішенням shadow map: ближня зона — високе розрішення, дальня — низькі.
Правильна настройка Cascade Distances — баланс між якістю та продуктивністю. Якщо First Cascade занадто великий — тіні ближніх об'єктів розмиті. Якщо занадто малий — видна різка межа переходу між каскадами. Межа переходу сглажується через Shadow Cascade Blend у Unity або Dynamic Shadow Distance Fadeout у Unreal.
У Unreal Engine 5 з Lumen динамічне global illumination вичисляється у Screen Space + Signed Distance Fields, що кардинально змінює підхід до освітлення. Shadow Cascades для Directional Light залишаються (Virtual Shadow Maps у UE5 — значне поліпшення якості при контрольованому бюджеті), але indirect lighting від Lumen не вимагає Light Probes та Lightmaps — це real-time GI.
Light Probes та змішане освітлення
Light Probes у Unity — сферичні гармоніки (Spherical Harmonics, L2), що зберігають ambient lighting для конкретної точки простору. Динамічні об'єкти (персонажі, частинки, транспорт) не можуть використовувати lightmaps — вони беруть освітлення з Light Probes.
Помилка, яка зустрічається майже на кожному проекті: Light Probes розставлені занадто рідко або тільки по периметру рівня, а не по зонах з різним освітленням. Персонаж, що входить з освітленої вулиці в темне будівлю, отримує однаковий ambient в обох місцях — освітлення не змінюється. Рішення: щільна сітка Probes у перехідних зонах (дверні отвори, арки, під навісами), розріджена — у однорідно освітлених областях.
Light Probe Proxy Volume (LPPV) — для крупних динамічних об'єктів (транспорт, великі істоти): замість одного Probe в центрі об'єкта, LPPV будує об'ємну решітку Probes по габаритам об'єкта. Різниця помітна: без LPPV великий грузовик освітлений рівномірно як суцільний об'єкт, з LPPV — права сторона темніша, якщо вона у тіні будівлі.
Enlighten — система real-time GI у Unity (доступна у HDRP). Розраховує переотраження від динамічно мінливого Directional Light — day/night cycle з Enlighten означає, що ambient змінюється разом з положенням сонця без перезапекання lightmaps. Коштує CPU часу при кожній зміні джерела, тому використовується вибірково: тільки для Directional Light, інші джерела — статичні або baked.
Гібридна схема: що запекати, що залишити динамічним
Практична схема для більшості проектів:
- Directional Light (сонце) — Mixed mode: статичні тіні у lightmap, динамічні тіні для персонажів через Cascades
- Крупні Point Lights (фонарі, костри) — Baked, якщо статичні. Динамічні тільки якщо горять/гаснуть за геймплеєм
- Мелкі accent lights (свічі, екрани) — Baked, часто як Emissive у lightmap
- Light Probes — розставити вручну по зонах, не покладатися на Auto Generate
| Масштаб завдання | Орієнтовний термін |
|---|---|
| Настройка освітлення однієї невеликої локації | 2–4 дні |
| Interior з full GI та baked lightmaps | 4–8 днів |
| Open-world рівень з day/night cycle | 2–4 тижні |
| Оптимізація та виправлення існуючого освітлення | за угодою |
Почнемо з технічного аудиту: платформа, цільовий framerate, pipeline (URP/HDRP/Lumen). Далі — проектування схеми освітлення, розстановка джерел, настройка shadow cascades, запікання lightmaps та перевірка на цільовому залізі.
Вартість розраховується індивідуально після аналізу вимог проекту.





