Полезное

Мы Вконтакте

Discord канал

Material Instance

Добавлено Сен 03 2015
Material instance

В Unreal Engine 4, Material Instance являются своего рода зависимыми копиями материала. Их используют чтобы изменять те или иные параметры материала, без перекомпиляции шейдеров. Чтобы использовать Material instance необходимо заранее создавать параметры в исходном материале. Так же Material instance можно использовать, чтобы изменять визуальный вид объекта, или эффекта, прямо во время игры.
Это позволяет создать очень гибкую визуальную составляющую вашего творчества.

Инстансы материалов редактируются в специальном редакторе, отличающийся от основного редактора материалов. Более подробно можно почитать на странице «Редактор инстанс материалов«.

 

 

 

Инстансы и параметры

Несмотря на то, что Material instance позволяет самостоятельно изменять внешний вид материала, необходимо знать, что вы не сможете редактировать каждую особенность материала, по умолчанию. Чтобы получить такую возможность, вы должны создать свойства исходного материала (Master Material) и назначить их в качестве параметров. Этот процесс называется параметризация материала.

Параметр материала, выглядит в виде узла данных в редакторе материалов. Технически, это значение которое имеет имя и служит в качестве канала для отправки значений в Material Instance. Эти параметры работают из материалов.
Скажем вы хотите создать материал, цвет которого вы сможете изменить в любой момент. Для этого вы должны всего лишь создать векторный параметр и дать ему имя. После того как вы создадите material instance этого материала. Вы увидите свой параметр под категорией Vector parametrs. Там вы можете его изменять, без необходимости перекомпиляции шейдеров или необходимости создавать отдельный материал.

Здесь вы можете увидеть параметры заложенные в материал.
Параметры в материале

А здесь мы их видим уже для редактирования в Material Instance
Параметры в Инстансе

Постоянные и динамические Material Instance

В Unreal Engine 4 доступны для использования 2 вида Material instance

Material Instance Constant – Заранее просчитывается до игрового процессса
Material Instance Dynamic – Изменения вступают в силу в процессе игры в реальном времени

Постоянный Material Instance

Постоянный Material Instance вычисляется только один раз, заранее, до игрового процесса. Это означает что он не может быть изменен во время игры. Однако, хоть они и являются неизменными, они имеют существенное преимущество в производительности поскольку не требуют компиляции. Например, если у вас есть игра с различными автомобилями, и все экземпляры с разными цветами, но цвета которых не изменяются в процессе игры. То лучше создавать Master Material, представляющий вариации для разных типов автомобилей. Это может быть краска, насколько физический материал металический, глянец и т.п

Material Instance Constant создаются в Content Browser и редактируются с помощью Material Instance Editor.

Динамический Material Instance

Material instance dynamic может быть рассчитан непосредственно во время игры или симуляции сцены. Это означает, что вы можете использовать сценарии (Blueprint или скомпилированный C++ код) чтобы изменить те или иный параметры Material instance на протяжении всей игры. Возможные применения этого ограничены только вашей фантазией. Однако стоит учитывать, что такие материалы, менее производительны чем Material instance constant.

Material instance dynamic создаются в Блупринте из основного материала (Master). В Blueprint можно применять данный материал к объекту, который имеет параметризированные свойства, и постоянно иметь к нему доступ через узел Create Dynamic Material instance. После создания Dynamic Material Instance, можно изменять параметры Material instance в игре, через сценарий Blueprint.

Изменение параметров через Блупринты

Создание Инстанса

Что бы создать статичный инстанс внутри редактора, вам нужно кликнуть правой клавишей мыши по материалу в Content Browser, для которого хотите создать инстанс. Затем выбрать опцию Create Material Instance.

Создать Material Instance

Параметры

Каждый параметр в материале, может быть организован для просмотра в Material Instance Editor. Связанные параметры могут быть добавлены к группе, что позволяет их быстро найти под выбранной категорией и изменить. Параметры, которые не добавлены в какую либо группу, будут отображаться в категориях по умолчанию (как правило это категории описывающие тип параметра скалярный, векторный и т.д)

Параметры Инстанса

Создание параметров в материалах

Для того чтобы добавить параметр для материала, используйте предназначенные для этого блоки категории Parameters. Есть несколько типов параметров, которые могут быть использованы, в том числе Scalar Parameter, Vector Parameter, различные параметры текстур, и Static Parameter.

После создания вашего параметра, дайте ему уникальное имя, а так же присвойте его к необходимой для вас группе. Так же необходимо задать значение которое будет использоваться по умолчанию.

Параметры в материале

Scalar Parameter

Scalar Parameter является параметром, который содержит одно значение с плавающей точкой. Оно может быть использовано для управления эффектами на основе отдельных значений, таких как сила отражения, альфа линейной интерполяции, прозрачность и т.п.

Vector Parameter

Vector parameter это параметр, содержащий в себе значения 4 канального вектора или 4 значения с плавающей точкой. Как правило они используются для настраивания какого либо цвета в материале. Но так же могут быть использованы для передачи данных о местоположении или для какого либо эффекта, который требует несколько значений.

Texture Parameter

Есть несколько доступных Texture Parameter. Каждый из них зависит от типа текстуры, что он принимает или способа, в котором он используется. Код шейдера, генерируется разный, в зависимости от типа текстуры.

TextureSampleParameter2D принимается основную Texture2D
TextureSampleParameterCube принимает TextureCube или cubemap
TextureSampleparameterFlipbook принимает FlipbookTexture
TextureSampleParameterMeshSubUV принимает Texture2D, которая используется для SubUV смешивания эффектов с сеткой эмитера
TextureSampleParameterMovie принимает MovieTexture (bink видео)
TextureSampleParameterNormal принимает Texture2D, которая используется в качестве Normal map
TextureSampleParameterSubUV принимает Texture2D, которая используется для SubUV эффектов с спрайтами

Static Parameter

Статические параметры принименяются во время компиляции, поэтому части, которые замаскированны, имеют более оптимальный код и не выполняются во время выполнения основного материала. Однако, они могут быть изменены только из MaterialInstanceEditor, и не могут быть изменены в Blueprint

Для каждого статического параметра будет создан отдельный вариант шейдера, который будет переключаться в инстансе.
Это может привести к чрезмерному кол-ву шейдеров. Что значительно ухудшит оптимизацию сцены. Постарайтесь свести к минимуму кол-во статических параметров в материале.
Добавил: Flakky Категория: Материалы и Шейдеры


Комментарии

На данный момент комментарии отключены.

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница