Налаштування динамічних тіней та відображень графіки

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Налаштування динамічних тіней та відображень графіки
Складна
~3 робочих дні
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Налаштування динамічних тіней та відбиттів графіки

Динамічні тіні та відбиття—найголоднійші частини рендер-конвеєру за GPU-часом. Налаштувати їх «за замовчуванням» не вийде: кожен проект потребує свого балансу між якістю та продуктивністю. На мобільному пристрої 2-мегапіксельна Shadow Map для однієї Directional Light—це катастрофа. На десктопі відсутність Screen Space Reflections у шутері від першої особи одразу помітна.

Тіні: де теряється продуктивність

Shadow Casting працює через додатковий рендер-проход—Shadow Caster Pass. Кожен об'єкт, що входить у зону видимості тіні, перерендерується з depth-шейдером у Shadow Map текстуру. Чим більше источників з тінями, тим більше додаткових проходів.

Найболісніше—Spot Light або Point Light з увімкненим Shadow Casting на мобільних платформах. Point Light рендерить Shadow Map у вигляді cubemap—6 граней, 6 рендер-проходів для одного источника. На сцені з 5 такими источниками це 30 додаткових рендер-проходів кожен кадр. На мобільних пристроях це не влізає в 16-мс бюджет.

Практичний підхід: залишаємо 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.

Завдання Строки
Налаштування тіней для однієї сцени (PC/console) 1–3 дні
Налаштування тіней з оптимізацією під мобільні 3–7 днів
Reflection Probes для комплексу інтер'єрів 3–5 днів
Повний конвеєр тіней + відбиттів, кілька платформ 2–4 тижні

Вартість розраховується індивідуально після аналізу рендер-конвеєру та цільових платформ.