Динамічні тіні та відображення — найбільш ресурсомісткі частини рендер-пайплайну за GPU-час. У нашій практиці ми часто стикаємося з тим, що налаштувати їх «за замовчуванням» не вийде: кожен проект вимагає свого балансу між якістю та продуктивністю. На мобільному пристрої 2-мегапіксельний Shadow Map для одного Directional Light — це катастрофа. На десктопі відсутність Screen Space Reflections у шутері від першої особи кидається в очі одразу.
Чому налаштування динамічних тіней та відображень критично важливе?
Помилки в налаштуваннях призводять до провалу FPS budget або до відверто поганої картинки. Наші сертифіковані інженери Unity мають досвід роботи з проектами під Android, iOS, PC та консолі. Ми гарантуємо стабільний FPS після оптимізації. Зв'яжіться з нами для оцінки вашого проекту.
Динамічні тіні та відображення: де втрачається продуктивність
Shadow Casting працює через додатковий рендер-прохід — Shadow Caster Pass. Кожен об'єкт, що входить у зону видимості тіні, рендериться повторно з depth-шейдером у текстуру Shadow Map. Чим більше джерел з тінями, тим більше додаткових проходів.
Найболючіше — Spot Light або Point Light з увімкненим Shadow Casting на мобільних платформах. Point Light рендерить Shadow Map у вигляді cubemap — 6 граней, 6 рендер-проходів для одного джерела. На сцені з 5 такими джерелами це 30 додаткових рендер-проходів кожен кадр. На мобільних пристроях це не влізає в 16-ms бюджет.
Практичний підхід: залишаємо Shadow Casting тільки на Directional Light (основне спрямоване джерело), Point та Spot Lights переводимо в режим без тіней і компенсуємо їх відсутність через Blob Shadow проектор або Decal з м'якою тінню під персонажем. Гравець не помічає, що тінь «ненатуральна», якщо її форма правдоподібна.
Для Shadow Distance критично важливо виставити адекватне значення. В Unity це Quality Settings → Shadow Distance. Типова помилка — залишити дефолтні 150 одиниць для мобільного проекту з видом зверху, де дальня видимість — 30 одиниць. Все зайве за цією відстанню Unity все одно рендерить у Shadow Map, але ніколи не показує.
Shadow Cascades для Directional Light
Directional Light з одним Shadow Map без каскадів дає або детальні тіні поблизу при втраті якості вдалині, або охоплює всю дальність при низькій роздільній здатності поблизу. Shadow Cascades ділять Shadow Map на зони: ближня зона отримує високу роздільну здатність, дальня — низьку.
Для PC-проектів 4 каскади — стандарт. Для мобільних — максимум 2 каскади, а краще 1 із невеликим Shadow Distance. Розподіл каскадів (Cascade Split) за замовчуванням у Unity рівномірний, але краще працює логарифмічний: 0.05 / 0.15 / 0.35 — більша частина роздільної здатності Shadow Map йде на перші метри перед камерою, де деталізація тіні найпомітніша.
Shadow Normal Bias та Shadow Bias — параметри, які визначають, чи є «тінеакне» (shadow acne, смугасті артефакти самозатінення) або «літаючі тіні» (peter panning, тіні відірвані від об'єктів). Normal Bias 0.4, Bias 0.05 — відправна точка для більшості сцен. Для тонких об'єктів (листя, решітки) Normal Bias потрібно знижувати до 0.1–0.2, інакше тінь зникає повністю.
Відображення: Screen Space vs Probe-based
Screen Space Reflections (SSR) — постпроцесинговий ефект, що працює тільки з тим, що знаходиться в кадрі. Дешево та переконливо для горизонтальних поверхонь (підлога, вода), але ламається на краях екрану та не показує те, що знаходиться за камерою. В HDRP налаштовується через Volume → Screen Space Reflection, ключовий параметр — Minimum Smoothness (поверхні нижче цього значення не отримують SSR, що правильно — матові поверхні не відображають).
Reflection Probes працюють скрізь, де SSR не справляється: вертикальні поверхні, відображення стелі в підлозі, інтер'єри. Baked Reflection Probe — знімок кубічної панорами в конкретній точці простору, запечений заздалегідь. Realtime Reflection Probe перераховується під час гри.
Проблема Baked Probes — статичність. Якщо в сцені є анімовані об'єкти (прапори, вода, персонажі), вони не потрапляють у відображення. Компроміс: Realtime Probe з Refresh Mode On Awake для об'єктів, які змінюються рідко (двері, що відчиняються), та Baked для всього іншого.
Box Projection — обов'язкове налаштування для інтер'єрів. Без неї Reflection Probe поводиться як нескінченно віддалене джерело, і відображення не збігається з реальною геометрією кімнати. З Box Projection та правильно налаштованим Box Size дзеркало на стіні показуватиме коректну перспективу.
Як уникнути типових помилок при налаштуванні відображень?
З нашої практики: на проекті з ізометричним видом вимагалася річка з правдоподібними відображеннями на Android. SSR — недоступний (OpenGL ES 3.0 на цільових пристроях погано перетравлює postprocess stack). Baked Reflection Probe давав статичну картинку без неба.
Рішення: кастомний шейдер води на ShaderGraph з спотворенням UV через Normal Map (імітація хвилювання) + Reflection Probe в Realtime режимі з Refresh Mode Every Frame, але з дуже низьким Shadow Resolution (128×128) — він відображав тільки небо та горизонт. Для динамічних об'єктів (човни) додали Planar Reflection Camera — окрема камера рендерить сцену з перевернутою Y-віссю в Render Texture, яку шейдер води змішує з Reflection Probe через Fresnel-залежність. Результат виглядав переконливо при вартості одного додаткового рендер-проходу в 60% роздільній здатності.
Діагностика та інструменти
Frame Debugger розбирає Shadow Caster Pass по кожному джерелу — одразу видно, хто «жере» час. GPU Usage в Profiler показує мс на кожен рендер-прохід з Shadow Casting.
Для Reflection Probes — Rendering Debugger в режимі перегляду Reflections → Probe Volume: видно, який зонд впливає на конкретну поверхню та чи коректний Box Projection.
| Метод | Переваги | Недоліки |
|---|---|---|
| Screen Space Reflections | Працює швидко, добре для горизонтальних поверхонь | Залежить від кадру, не показує за камерою |
| Baked Reflection Probes | Низька вартість, працює скрізь | Статично, не відображає динаміку |
| Realtime Reflection Probes | Динамічне відображення | Висока вартість, часто потребує зниження роздільної здатності |
Що входить у налаштування тіней та відображень
- Аудит поточної сцени та виявлення проблем продуктивності
- Вибір оптимальних параметрів тіней (Shadow Distance, Cascades, Bias)
- Налаштування Reflection Probes з Box Projection
- Створення кастомних шейдерів при необхідності
- Інтеграція та профілювання
- Документація та передача налаштувань в команду
| Етап | Терміни |
|---|---|
| Аналіз рендер-пайплайну та продуктивності | 1–2 дні |
| Налаштування тіней для однієї сцени (PC/console) | 1–3 дні |
| Налаштування тіней з оптимізацією під мобільні | 3–7 днів |
| Reflection Probes для комплексу інтер'єрів | 3–5 днів |
| Повний пайплайн тіней + відображень, кілька платформ | 2–4 тижні |
| Документація та передача налаштувань | включено |
Оцінимо ваш проект і запропонуємо набір налаштувань під ключ за терміни, вказані в таблиці. Пишіть — ми проконсультуємо та зорієнтуємо за вартістю. Отримайте консультацію з налаштування графіки у вашій грі. Зв'яжіться з нами.






