Настройка 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.