Собрали 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-материалы: пошаговый процесс
- Аудируем исходные текстуры: проверяем битность, цветовое пространство, наличие всех карт.
- Выбираем целевой движок и рендер-пайплайн, определяем формат упаковки.
- Настраиваем экспорт из Substance Painter с нужным пресетом или пишем кастомный JSON-конфиг.
- Импортируем в движок с правильными Import Settings (sRGB/Linear).
- Собираем Master Material с параметрами, создаём Instances.
- Проверяем материал на тестовой сцене: 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.






