Что такое Material (материал) в Unreal Engine
Material (материал) в Unreal Engine — это специализированный ассет, который применяется к Mesh (3D-модели) и определяет визуальные свойства её поверхности.
Также рекомендую скачать мою бесплатную книгу по Blueprint для Unreal Engine.
Основная цель книги — дать общий, целостный и понятный обзор системы Blueprint. Книга предлагает взгляд с высоты «птичьего полёта» — ясную и чёткую карту игрового мира Unreal Engine, которая поможет увидеть ключевые взаимосвязи и понять, как устроена система визуального скриптинга.
Зарегистрироваться в ЛК и скачать книгу [Blueprints. Взгляд с высоты «птичьего полёта»]

По сути, материал представляет собой набор инструкций для графического процессора (GPU), описывающих, как поверхность объекта взаимодействует со светом в реальном времени.
В основе материала лежат ключевые параметры, определяющие внешний вид поверхности. К ним относятся:
- Base Color — задаёт базовый цвет,
- Metallic — отвечает за степень металличности,
- Roughness — определяет шероховатость,
- Specular — влияет на зеркальные отражения,
- Opacity — контролирует прозрачность,
- и Normal — описывает направление нормалей поверхности.
Комбинируя эти параметры, можно задать характер материала, будь то металл, пластик, стекло или камень. При этом карты нормалей позволяют имитировать мелкие детали рельефа без усложнения геометрии.
Материалы в Unreal Engine не ограничиваются статичными текстурами и позволяют создавать сложные динамические эффекты. Например, движение воды или травы может быть реализовано прямо в материале за счёт смещения вершин с помощью World Position Offset, изменения UV-координат или динамического управления параметрами. Эти методы дают возможность изменять внешний вид и даже форму объекта на уровне шейдера без изменения его базовой геометрии.
Дополнительно материалы поддерживают эффект свечения через Emissive, а также позволяют реализовывать износ, грязь, повреждения и другие визуальные детали. Более продвинутые техники включают параллакс и процедурные эффекты, которые могут зависеть от времени, положения объекта или игровых событий.

Создание и настройка материалов осуществляется в Material Editor — визуальном редакторе, построенном на узловой системе.

Материал формируется в виде графа из узлов, называемых Material Expressions, где каждый узел выполняет определённую функцию: одни работают с текстурами, другие задают параметры, третьи выполняют математические операции или логические преобразования. Центральным элементом графа является узел Material Output, который определяет итоговые свойства поверхности. Все входные параметры, подключённые к нему, такие как Base Color, Roughness, Metallic, Normal или Emissive, формируют финальный внешний вид, тогда как остальные узлы используются для создания, преобразования и комбинирования данных, а также для структурирования сложной логики.
После составления материала в Material Editor и сохранения его в отдельный ассет, в итоге он компилируется движком в шейдерный код на языке HLSL. Такой подход даёт возможность работать с материалами без прямого программирования шейдеров, сохраняя при этом гибкость шейдерной логики.
Shader (шейдер) — это программа, выполняемая на графическом процессоре. В Unreal Engine шейдеры определяют, как именно поверхность взаимодействует со светом, как рассчитываются её цвет, отражения и прозрачность, а также как она может деформироваться.
В современной графике используются два основных типа шейдеров: вершинные и пиксельные шейдеры. Вершинные шейдеры обрабатывают вершины модели и отвечают за их положение в пространстве, что позволяет, например, анимировать траву или создавать волны. Пиксельные шейдеры вычисляют цвет каждого пикселя, учитывая освещение, тени, отражения и текстуры.
Разработчику в Unreal Engine обычно не требуется писать шейдерный код вручную. Вместо этого используется Material Editor, который автоматически преобразует созданный граф в код на языке HLSL. Этот процесс включает несколько этапов: сначала создаётся граф из узлов, затем движок компилирует его, объединяя с внутренними шаблонами, и генерирует шейдерный код, после чего видеокарта выполняет эти инструкции для каждой вершины и каждого пикселя с учётом источников света в сцене.

Таким образом, материал (Material) в Unreal Engine представляет собой визуальный граф, создаваемый в редакторе, тогда как шейдер — это низкоуровневый код, в который этот граф автоматически преобразуется. В итоге, материалы являются не просто средством оформления, а комплексной системой, определяющей взаимодействие объекта со светом, геометрией и окружением. Именно они играют ключевую роль в достижении реалистичности, художественной выразительности и оптимальной производительности сцены.
Material Editor — визуальный редактор материалов
Итак, чтобы создать ассет материала, перейдём в Content Browser, нажмём кнопку Add и выберем пункт Material. В результате будет создан новый ассет материала, которому зададим имя M_BaseColor. Обратите внимание, что согласно общепринятым соглашениям об именовании, для материалов используется префикс M_.

Кликнув дважды по данному ассету материала, перед нами откроется Material Editor — редактор материалов.

Как уже говорилось ранее, Material Editor в Unreal Engine представляет собой визуальный инструмент для создания материалов, позволяющий управлять внешним видом поверхностей без необходимости писать код на шейдерном языке. Он построен на узловой системе, где логика материала формируется через соединение различных узлов в единый граф, который затем автоматически компилируется в шейдерный код и выполняется на GPU.
Центральным элементом интерфейса редактора является рабочая область Material Graph. Именно здесь происходит основная работа: здесь мы можем размещать различные узлы и соединять их между собой, формируя тем самым логику материала.

В графе всегда присутствует главный узел — Main Material Node, который определяет итоговые свойства поверхности.

Он содержит входные параметры, такие как Base Color, Metallic, Roughness, Normal и другие, каждый из которых отвечает за определённую физическую характеристику материала. Подключая к этим входам различные источники данных — текстуры, параметры или результаты математических операций — формируется финальный визуальный облик материала.
Результат работы можно сразу увидеть в окне предпросмотра Viewport — отдельной панели, в которой материал отображается на выбранной геометрии, такой как сфера, куб, плоскость или пользовательский меш.

Управление во Viewport осуществляется с помощью мыши: левая кнопка позволяет вращать объект, а правая — приближать и отдалять камеру. Важной особенностью является возможность настраивать освещение и окружение через вкладку Preview Scene Settings, что позволяет оценить поведение материала в различных условиях освещения и повысить точность визуальной настройки.
Для настройки параметров используется панель Details. Она является контекстной, то есть её содержимое зависит от выбранного элемента. Если в графе не выделен ни один узел, в панели отображаются глобальные настройки материала, такие как:
- Material Domain — тип материала,
- Blend Mode — режим смешивания,
- и Shading Model — модель освещения.

Если же выбран конкретный узел, в Details можно изменить его свойства — например, указать текстуру для Texture Sample или задать значение для параметра.
Дополнительно в интерфейсе присутствует панель Palette, которая служит библиотекой всех доступных узлов.

Она структурирована по категориям, таким как математические операции, работа с текстурами или вспомогательные функции. Пользователь может либо перетаскивать узлы из палитры в граф, либо быстро находить их через поиск. Это значительно ускоряет процесс сборки материала и делает его более удобным.
Контроль производительности и корректности материала осуществляется через панель Stats.

В ней отображается техническая информация, включая количество инструкций, которое будет выполнять шейдер. Напомню, весь граф, который мы здесь составляем, затем компилируется в шейдерный язык, содержащий конкретные инструкции для видеокарты. Поэтому показатель количества инструкций напрямую влияет на производительность: чем он выше, тем «тяжелее» материал для видеокарты. Также здесь выводятся ошибки компиляции, если в графе есть некорректные соединения.
Верхняя панель инструментов (Toolbar) предоставляет быстрый доступ к основным действиям.

Кнопка Apply компилирует изменения и обновляет материал в мире (на уровне), но не сохраняет сам ассет на диск. Для записи изменений в файл проекта нужно нажать Save, а функция Clean Up автоматически удаляет все узлы, которые не вносят вклад в финальное дерево графа, помогая поддерживать граф в чистом и оптимизированном состоянии.
Рабочий процесс в Material Editor обычно строится последовательно. Сначала создаются необходимые узлы — либо через контекстное меню в графе, либо из панели Palette. Затем настраиваются их параметры в Details, после чего узлы соединяются между собой, формируя логику материала и передавая данные в главный узел. В процессе работы результат постоянно контролируется в окне Viewport, а производительность — в панели Stats. После завершения изменений материал применяется с помощью кнопки Apply.
Таким образом, Material Editor позволяет создавать как простые, так и крайне сложные материалы — от базовых поверхностей до динамических эффектов вроде воды, огня или процедурных текстур. При этом он избавляет разработчика от необходимости напрямую работать с HLSL-кодом, сохраняя всю гибкость и возможности современных шейдеров.
Создание базового материала
Чтобы создать свой первый материал, необходимо определить его основные параметры, задаваемые через главный узел — Main Material Node. На самом деле, базовый материал уже существует по умолчанию: в нём заранее установлены стандартные значения. Например, Base Color имеет серый цвет, Metallic равен 0, а Roughness (шероховатость) — 0.5.

Большинство параметров в этом узле задаются в диапазоне от 0 до 1, где 0 означает полное отсутствие свойства, а 1 — его максимальное значение. Некоторые параметры представляют собой векторы. Например, Normal — это вектор направления, определяющий ориентацию поверхности.
Параметр Base Color также задаётся вектором, состоящим из 3 компонентов, значения которых соответствуют цветовой модели RGB и определяют количество красного, зелёного и синего в итоговом цвете.
Для примера можно задать жёлтый цвет и сразу обратить внимание на окно Viewport: результат отображается в реальном времени, позволяя увидеть, как будет выглядеть материал.

Если затем установить Metallic в значение 1, материал приобретёт выраженные металлические свойства. Уменьшив Roughness до 0, можно получить гладкую, блестящую поверхность, напоминающую полированный металл, например золото.

На этом этапе значения задавались напрямую в Main Material Node. Такой способ стал доступен в последних версиях Unreal Engine, однако на практике он используется редко. Жёсткое задание параметров неудобно, поскольку такие значения нельзя гибко изменять или выносить в настраиваемые параметры. В реальной работе параметры обычно задаются через отдельные узлы, что позволяет в дальнейшем их конвертировать в параметры для Material Instance, о котором мы поговорим чуть позже, тем самым управляя значениями без изменения самого материала.
Для этого в граф добавляются специальные константные узлы. Существует несколько их типов:

- Constant — задаёт одно числовое значение,
- Constant2Vector — два значения,
- Constant3Vector — три значения,
- и Constant4Vector — соответственно, четыре значения.
Для удобства их добавления предусмотрены горячие клавиши. Например, удерживая клавишу 1 и нажимая левую кнопку мыши, можно создать узел с одним значением. Аналогично, клавиши 2, 3 и 4 создают соответствующие векторные узлы.
Создадим узел Constant3Vector, который обычно используется для задания цвета. В его настройках выберем, например, красный цвет. У этого узла есть несколько выходов: можно использовать как объединённое значение RGB, так и отдельные каналы (R, G, B). В данном случае подключим полный RGB к параметру Base Color.
Затем добавим узел Constant для задания Metallic и установим значение 1. Аналогично создадим ещё один Constant для Roughness и зададим, например, значение 0.2.

В результате получится красный металлический материал с небольшой шероховатостью — визуально он будет выглядеть как слегка матовый металл.
Material Instance
Итак, мы с вами создали свой первый базовый материал — красный, слегка матовый металл. Давайте теперь применим его к модели. Перейдём на уровень и добавим тестовый Актор — обычный куб. Данный актор содержит в себе компонент Static Mesh, который отображает 3D-модель. Соответственно, в свойствах Static Mesh мы можем задать как сам меш, так и выбрать для него конкретный материал. Либо же можно просто взять нужный материал и перетащить его из Content Browser прямо на объект в сцене — движок автоматически определит всё и применит материал к кубу.

Хорошо, но что, если нам нужен такой же материал, то есть слегка матовый металл, но другого цвета? Где можно изменить цвет? Только в самом материале. Но если нам нужен, например, и красный, и зелёный вариант, придётся скопировать ассет материала и в копии изменить цвет. А если затем потребуется внести изменения в сам материал, их придётся повторять во всех копиях, что является неправильным подходом.
Для решения этой проблемы в Unreal Engine существует специальный инструмент — Material Instance, то есть экземпляры материала. Чтобы лучше понять, что это такое, можно провести аналогию с Blueprint-классами и их экземплярами. Blueprint-класс — это шаблон, по которому создаются объекты. Эти объекты имеют одинаковую структуру, но могут содержать разные значения параметров.
Аналогично и с материалами. Сам материал — это своего рода шаблон, который перед использованием компилируется движком. Если материал сложный, процесс компиляции может занимать значительное время. Material Instance — это экземпляр такого материала, который позволяет:
- легко изменять значения параметров, заданных в материале;
- не требует собственной компиляции, что важно для производительности.
Например, если у нас есть 10 объектов с материалами, отличающимися только цветом, и каждый из них — отдельный материал, то движку придётся скомпилировать все 10 материалов. Это требует времени и ресурсов. Если же используется один материал и 10 его инстансов с разными значениями цвета, компилируется только один материал — что значительно эффективнее.
Чтобы создать Material Instance, нужно кликнуть по материалу правой кнопкой мыши и выбрать пункт Create Material Instance. Рядом появится новый ассет. По соглашению об именовании используется префикс MI_. Назовём его, например, MI_RedMetallic и откроем его.

Внутри мы увидим окно Viewport с визуальным отображением материала и панель настроек справа, где указан родительский материал.

Однако параметров цвета там не будет. Это связано с тем, что для использования параметров в инстансе их необходимо сначала создать в самом материале.
Перейдём обратно в материал. В данный момент он состоит из узлов, задающих Metallic и Roughness, а также узла, задающего Base Color. Чтобы сделать цвет настраиваемым, нужно преобразовать соответствующий узел в параметр. Для этого кликнем по нему правой кнопкой мыши и выберем пункт Convert to Parameter. В результате узел станет параметром.

Теперь зададим ему имя, например Color. Отмечу, что названия параметров в рамках одного материала должны быть уникальными, иначе потом в инстансе могут быть проблемы. Также можно указать значение по умолчанию (Default Value) и, при необходимости, задать группу (Group), иначе говоря, категорию, в которой параметр будет отображаться в инстансе. После этого нажмём Apply.

Вернёмся в наш инстанс MI_RedMetallic. В разделе параметров появится наш параметр Color. Если активировать его (поставить галочку), можно изменить значение. Пока оставим его без изменений.

Теперь создадим ещё один инстанс, например MI_BlueMetallic, откроем его и изменим параметр Color, установив синий цвет. Сохраним изменения.

В итоге в нашей папке сейчас один базовый материал, который определяет логику (матовый металл), и несколько Material Instance, задающих конкретные варианты, например разные цвета.

Использовать инстансы для задания материалов объектам, различающимся параметрами, гораздо правильнее и эффективнее, чем создавать отдельные материалы для каждой вариации.
Также стоит упомянуть, что существуют еще и Dynamic Material Instances, которые создаются в Blueprint динамически во время игры. Они позволяют менять параметры (например, цвет при получении урона или уровень загрязнения) программно прямо во время игрового процесса.

Краткий итог
Material в Unreal Engine — это ассет, который определяет внешний вид поверхности 3D-объекта и её взаимодействие со светом. Он задаётся через параметры (цвет, металличность, шероховатость, нормали, прозрачность и др.) и может включать сложные визуальные и динамические эффекты.
Материалы создаются в Material Editor — визуальном узловом редакторе, где логика собирается в граф и затем автоматически компилируется в шейдерный код (HLSL), выполняемый на GPU. Это позволяет работать без ручного программирования шейдеров. Шейдеры — это низкоуровневые программы (вершинные и пиксельные), которые рассчитывают геометрию и цвет каждого пикселя.
Также для удобства и производительности используются:
- Material Instance — экземпляры материала с изменяемыми параметрами без перекомпиляции;
- Dynamic Material Instance — динамические инстансы, создающиеся непосредственно во время действия игры и позволяющие менять параметры материала во время игры.
Материалы — это не просто «текстуры», а гибкая система, управляющая внешним видом, поведением и производительностью объектов в сцене.
Напоминаю про мою бесплатную книгу по Blueprint для Unreal Engine.
Основная цель книги — дать общий, целостный и понятный обзор системы Blueprint. Книга предлагает взгляд с высоты «птичьего полёта» — ясную и чёткую карту игрового мира Unreal Engine, которая поможет увидеть ключевые взаимосвязи и понять, как устроена система визуального скриптинга.
Зарегистрироваться в ЛК и скачать книгу [Blueprints. Взгляд с высоты «птичьего полёта»]










