Туториал: делаем Слоёный материал
Недавно мы рассказали, как делали боксёрский ринг. В статье мы говорили про слоёный шейдер, с помощью которого текстуру штукатурки мы подмешивали в текстуру кирпича. Его сделал наш студент, тимлид и технический художник Unreal Engine Павел Астафьев в UE5. Мы попросили его сделать туториал по созданию шейдера.
Уточним, что мы не любим пошаговые обучалки, так как они учат не думать, а повторять. Но в этот раз решили сделать исключение.
Создание базового материала
Сначала создай папку для шейдера. Мы назвали её Master_Material. Старайся сразу приучать себя называть все папки и файлы английскими названиями.
В папке создай функцию материалов с названием MF_BaseProfile. Для этого используй графу Materials → Advanced → Material Function.
Открой её и добавь MaterialAttributes.
Сюда же можно добавить необходимые параметры: BaseColor, Metallic, Specular, Roughness и так далее.
Дальше подключи необходимые параметры. Мы начнём с BaseColor.
Аналогично сделай с остальными параметрами: Specular, Roughness, Texture и Normal. Нормал мы выбираем дефолтный, остальные параметры оставляем без дополнительной информации.
Базовый материал готов!
Используем функцию
Теперь давай используем функцию, чтобы создать слоёный материал. Для этого необходимо обратиться в графе Material, выбрать Layered Material и создать Material Layer.
Мы назвали его MF_Base.
Открой его и удали лишнее.
Сейчас можно подключить сюда нашу функцию, которую создали ранее. Не забывай сохранять изменения в материале! Всё применяем, сохраняем, закрываем и двигаемся дальше.
Дальше создай Material, мы его назвали MML_Base.
Открой, выбири наш шейдер и поставь галочку, чтобы он использовал Material Attributes.
Добавь и подключи:
GetMaterialAttributes, SetMaterialAttributes и MaterialAttributeLayers.
Открой DefoultLayers и выбери недавно созданный материал ML_Base.
Создай от этого материала Material Instance и назови его MMLI_Base.
Примени его на все меши, что есть.
Ты можешь в любой момент зайти и проверить, что он действительно слоёный. Также есть возможность в любой момент создать ещё какие-либо слои.
Давай добавим слой другого цвета.
Делаем материал для смешивания слоёв
Теперь встаёт вопрос: как сделать так, чтобы на одной фигуре мы видели сочетание разных материалов? Для этого нам необходимо создать дополнительный материал, который будет отвечать за смешивание наших слоёв. Делаем!
Назвали его MLB_Texture. Открыв его, видим перед собой следующую картину: два входящих слоя (A и B) и маска, по которой они смешиваются (Alpha).
Всё, что нужно сделать, — придумать, как будет работать наша маска. В нашем случае используем самую простую.
Всё, фактически мы сейчас подключили чёрно-белую маску в альфу. Давай посмотрим, как она будет работать. Для этого вернись на карту с мешами. Открой MMLI_Base, выбери верхний слой и укажи, что хочешь для смешивания использовать MLB_Texture. После небольшого ожидания наслаждайся результатом.
Слоёный материал — это здорово, конечно. Но как насчёт чего-то поинтереснее? Давай сделаем так, чтобы чёрно-белая маска создавалась в местах соединения мешей.
Открой MLB_Texture, создай DistanceFieldApproxaAO и вставь его в канал Alpha вместо Noise_Texture. Добавь два параметра: BaseDistance и Radius; выстави для них значения Default Value 15.0 и 150.0 соответственно.
Примени и смотри на результат:
Мы можем передвигать меши, совмещая их друг с другом. Тогда в местах соединения у нас также будет видна маска.
Вот таким образом создаётся самый простой слоёный материал. В любой момент ты можешь легко всё изменить: например, поменять цвет материала, который накладывается.
Вариантов использования существует огромное множество, ведь придумывать маски мы можем абсолютно любые. Как вот такие, генерёжные, так и, допустим, с текстурами, подгруженными из других источников: Substance Painter, Substance Designer и любых других. Схемы зачастую куда более расширенные, но главный алгоритм ты уже знаешь.
Помимо того, что играться с мешами стало куда интереснее, это полезный инструмент для создания пыли, потёртостей, выцветшей краски и прочих мелочей, которые сделают твою работу сочнее и интереснее. А мы ведь тут для этого и собрались — сделать твой арт ещё более выразительным и колоритным.