Налаштування PBR-матеріалів для ігрових рушіїв

Зібрали PBR-матеріал у Substance Painter, а в рушії він виглядає по-іншому? Знайома ситуація. У 80% випадків проблема криється в mismatch колірних просторів: Albedo імпортується як sRGB, а рушій очікує Linear. Або Normal Map без інверсії зеленого каналу для DirectX. Ми стикалися з проектами, де чере

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

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

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

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1515
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1017
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    649
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    729
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    117

Зібрали PBR-матеріал у Substance Painter, а в рушії він виглядає по-іншому? Знайома ситуація. У 80% випадків проблема криється в mismatch колірних просторів: Albedo імпортується як sRGB, а рушій очікує Linear. Або Normal Map без інверсії зеленого каналу для DirectX. Ми стикалися з проектами, де через невірне пакування Mask Map в HDRP доводилося перезбирати 50 матеріалів вручну. Наша методика виключає такі помилки. Аналізуємо вихідні текстури, підбираємо правильні налаштування імпорту, створюємо Master Material з параметрами — і матеріал виглядає ідентично Substance Painter. Зв'яжіться з нами, щоб отримати консультацію щодо ваших матеріалів.

Проблема майже завжди одна з трьох: неправильний color space, невірне пакування каналів або розузгодження за налаштуваннями Tone Mapping між DCC-інструментом і рушієм. Вирішуємо її за 2–4 дні для набору з 20 матеріалів.

Чому PBR-матеріали виглядають інакше в рушії?

Кожен рушій трактує PBR-дані по-своєму. Unity в різних пайплайнах використовує різні формати матеріалів, Unreal Engine 5 вимагає packed ORM текстуру. Якщо не врахувати ці нюанси, Albedo зсувається, Smoothness інвертується, нормалі «вивертаються». Результат — матеріал, який «не працює».

Як налаштувати пакування каналів для HDRP та URP?

У Unity різниця між HDRP та URP — не лише в якості рендерингу. У них повністю різні формати матеріалів.

Universal Render Pipeline (URP) використовує Lit Shader з прямолінійним пакуванням: Albedo, Normal, Metallic (R) + Smoothness (A), AO (G), Emission. Smoothness в URP — це інвертований Roughness. Якщо експортувати Roughness із Substance Painter і підключити в Smoothness канал без інверсії, матеріал буде дзеркальним там, де має бути матовим.

High Definition Render Pipeline (HDRP) має Mask Map з пакуванням: Metallic (R), AO (G), Detail Mask (B), Smoothness (A). Це нестандартне пакування, яке Substance Painter не створює автоматично в базових шаблонах. Потрібно або використовувати HDRP-шаблон у Substance Painter при створенні проекту, або вручну компонувати Mask Map. Помилка при пакуванні каналів — один із найчастіших багів при перенесенні асетів з іншого рушія.

Color Space — окремий критичний момент. У Unity Albedo імпортується як sRGB, Normal Map — як Linear (обов'язково зняти прапорець sRGB в Import Settings), Roughness, Metallic, AO — як Linear. Ігнорування цих налаштувань — джерело половини проблем.

Як правильно упакувати ORM текстуру для Unreal Engine?

В Unreal Material Graph текстури підключаються до відповідних входів Principled BSDF-аналога. Але є кілька нюансів.

Packed ORM текстура. В Unreal Engine стандарт — пакування AO (R), Roughness (G), Metallic (B) в одну текстуру з прапорцем Linear Color. Це знижує кількість текстурних семплів у шейдері з трьох до одного, що покращує продуктивність на 20% у сценах з багатьма матеріалами. Правильний Export Preset для Unreal у Substance Painter — Unreal Engine 4 (Packed).

Normal Map координати. Unreal використовує DirectX-простір нормалей: зелений канал (Y) інвертований відносно OpenGL. При імпорті нормалей потрібно або використовувати DirectX прапорець при експорті з Substance, або включити опцію Flip Green Channel в Import Settings Unreal.

Texture Compression. Unreal стискає текстури в BC7 (DirectX) або ETC2 (мобайл). Albedo — Default (BC7), Normal Map — Normal Map (BC5), Metallic/Roughness/AO — Masks (BC4/BC7 без sRGB).

Material Instances — обов'язкова практика. Замість дублювання Material Graph для кожного варіанту — один Master Material з параметрами, до яких створюються Instances. Це знижує кількість унікальних шейдерів у 3–4 рази, прискорює завантаження на 30% і дозволяє змінювати параметри без перезбірки. Така оптимізація шейдерів знижує draw calls і покращує FPS. Наприклад, ми оптимізували проект з 200 матеріалів до 15 Master Materials + 200 Instances, скоротивши час завантаження на 40%.

Як ми налаштовуємо PBR-матеріали: покроковий процес

  1. Аудитуємо вихідні текстури: перевіряємо бітність, колірний простір, наявність всіх карт.
  2. Обираємо цільовий рушій і рендер-пайплайн, визначаємо формат пакування.
  3. Налаштовуємо експорт із Substance Painter з потрібним пресетом або пишемо кастомний JSON-конфіг.
  4. Імпортуємо в рушій з правильними Import Settings (sRGB/Linear).
  5. Збираємо Master Material з параметрами, створюємо Instances.
  6. Перевіряємо матеріал на тестовій сцені: Albedo (30–240 sRGB), Normal Map (без артефактів), Smoothness (0–1), AO (не подвійне затінення), Metallic (бінарний).

Порівняння рендер-пайплайнів за параметрами PBR

Параметр Unity HDRP Unity URP Unreal Engine 5
Пакування текстур Mask Map (RGBA) Окремі текстури з Smoothness ORM packed (R=AO, G=Rough, B=Met)
Smoothness Зі збереженої шорсткості Інверсія Roughness З Roughness каналу
Normal Map простір OpenGL (стандарт) OpenGL DirectX (вимагає інверсії Y)
Стиснення Normal BC5 BC5 BC5
Material Inheritance Shader Graph / Instances Shader Graph / Instances Master Material + Instances

Що входить у налаштування PBR-матеріалів

  • Аналіз вихідних текстур та їх придатності під цільовий рушій.
  • Налаштування Export Preset та конвертація текстур (канали, колірний простір).
  • Створення Master Material з параметрами (Base Color, Normal, ORM/Mask, Emission).
  • Збірка Material Instances для кожного асета.
  • Перевірка на тестовій сцені з бічним світлом та HDRI.
  • Документування налаштувань та передача в git-репозиторій проекту.
Масштаб задачі Орієнтовний термін
Налаштування одного матеріалу від 0.5 дня
Перенесення набору з 10–20 асетів від 2 днів
Розробка Master Material + 30 Instances від 5 днів
Повний аудит матеріалів проекту за узгодженням

Терміни уточнюються після аналізу проекту. Замовте налаштування PBR-матеріалів — гарантуємо сумісність під ваш рушій. Зв'яжіться з нами для безкоштовної оцінки обсягу робіт.

Physically Based Rendering — основа сучасних ігрових матеріалів. Детальніше у Wikipedia.