Редактор материалов
Редактор материалов позволяет визуально создавать собственные материалы без написания единой строчки кода — просто создавайте и соединяйте ноды, строя граф! Он достаточно прост для пользователей, которые плохо знакомы с созданием материалов, и достаточно мощен, чтобы вы могли делать множество вещей. Краткий список функций включает в себя:
- Возможность создавать свои собственные базовые материалы (.mgraph) и использовать их как непосредственно назначенные объектам или как исходные материалы для сотен других материалов, чтобы избежать повторной сборки графа материала снова и снова. Вам поможет окно Иерархия материалов.
- Возможность создавать свои собственные пользовательские ноды графа, используя другие ноды ( Подграфы ) или с помощью вашего кода. Когда вы изменяете содержимое подграфа, все материалы, использующие его, также будут обновлены.
- Возможность переключения между типами материалов (на данный момент доступно пять: Mesh Opaque PBR, Mesh Alpha Test PBR, Mesh Transparent PBR, Mesh Transparent Unlit, Decal PBR).
- Дополнительное включение и выключение функций, влияющих на производительность.
- Возможность построения окончательного пользовательского интерфейса материала, вы можете добавлять различные параметры и даже объединять их в группы для удобства.
- Connector - особый "свернутый" режим ноды графа, когда она занимает меньше места и может быть присоединена прямо ко входу другой ноды графа.
- Expression — специальная нода, позволяющая писать простые арифметические операции, но главное, что ее можно использовать как swizzle в сочетании с возможностью изменения количества компонентов данных. Будьте уверены, вам понравится!
- Способность к написать код в специальной ноде Function, здесь можно реализовать даже несколько функций, вызывающих друг друга.
- Вы можете перетаскивать текстуры из Asset Browser или напрямую из вашего файлового менеджера, и они будут автоматически импортированы с соответствующими нодами, добавленными к графу.
- Петли - сложная, но очень крутая функция, позволяющая многократно повторять произвольную последовательность действий. Мы проанализировали несколько существующих реализаций циклов графа и изобрели новую, которая почти не уступает циклам в коде. Почему бы тогда не написать циклы в коде? Потому что использование графа значительно упрощает реализацию сложных вещей внутри цикла, чем то же самое в коде.
- При работе со сложными или большими графами вы можете столкнуться с тем, что ваши проводники повсюду пересекаются друг с другом, и вам может понадобиться больше визуальной ясности. Вот когда порталы вступают в игру. Вы можете подключить ребро к ноде Portal In в одном месте, а затем разместить ноду Portal Out в любом другом месте, которое вам нужно, и взять то, что вы передали в Portal In, из Portal Out (как будто вы вырыли туннель для своего провода под графом).
Смотрите также#
Ассет графа материала#
Ресурс Material Graph (.mgraph) представляет собой как исходную сеть материалов (описание на основе нод, которое должно быть скомпилировано в материал), так и нормальный основной материал которые могут быть назначены поверхности сетки.
Чтобы создать новый граф материалов, щелкните правой кнопкой мыши Asset Browser, чтобы открыть меню Create, затем выберите Create Material → Material Graph.
Укажите имя для вашего ассета графа. Новый ассет *.mgraph будет создан в текущей папке вашего проекта.
Поскольку ассет Material Graph представляет собой базовый материал, он также доступен в корне Materials Hierarchy и может быть назначенный к поддерживаемым поверхностям и предметам. В зависимости от типа материала его можно назначить следующим объектам:
- Материалы мешей:
- Поверхности мешей Static, Dynamic и Skinned;
- Поверхности Mesh Clutter / Mesh Cluster.
- Материалы для декалей:
- Прогнозируемый , Орфографический , а также Сетка отличительные знаки.
Работа с графами материалов#
Щелкните правой кнопкой мыши ассет *.mgraph и выберите Edit Graph или просто дважды щелкните по ассету, чтобы открыть его в окне Material Editor.
Окно Material Editor включает окно Graph View, отображающее сеть графа материала и панель настроек.
Сеть материального графа состоит изноды — функциональные блоки, отвечающие за обработку входных данных. Составляя сеть графов, вы определяете внешний вид вашего материала.
Нода Material является главной нодой вашего материала. Предоставляет набор входных данных для графических данных и генерирует материал определенного типа в зависимости от текущей настройки .
Наконец, выход Мастер-ноды подключается к ноде Final — основной ноде выходного материала.
Нажмите кнопку Save, чтобы сохранить изменения и скомпилировать граф материала в базовый материал. Ошибки компиляции, если таковые имеются, будут перечислены в Предупреждения и ошибки панели и в окне Console.
Навигация#
Mouse Wheel drag | Сдвиг графа материала |
---|---|
Mouse Wheel scroll | Увеличение/уменьшение масштаба |
RMB / Space key | Показать палитру создания нод |
LMB click | Выбор ноду/ребро |
LMB drag on background | Выделение нод с помощью инструмента «Прямоугольник» |
Shift + LMB on node | Добавить ноду к текущему выделению |
Ctrl + LMB on node | Удалить ноду из текущего выделения |
LMB drag on node | Переместить выбранные ноды |
Ctrl + C | Скопировать выбранные ноды в буфер обмена |
Ctrl + V | Вставить ноды из буфера обмена |
Ctrl + D | Клонировать выбранные ноды |
Delete Key | Удалить выбранные ноды/ребра |
Общие настройки#
Общие настройки определяют набор поддерживаемых свойств материала.
Type | Тип выходного материала: |
---|---|
Vertex Mode | Определяет режим для корректировка вершин а также мозаика ввод:
|
Vertex Space | Определяет векторное пространство для корректировка вершин а также мозаика . Варианты зависят отVertex Modeвыбрано:
|
Normal Space | Определяет пространство для нормальные векторы :
|
Depth Mode | Определяет, как Глубина данные обрабатываются:
|
Depth Shadow | Флаг, указывающий, влияет ли пользовательская глубина на тени. |
Tessellation | Включает Тесселяция входы и Мозаика настройки. |
Two Sided | Включает 0_floption. |
Write Velocity Offset | Включает ввод Velocity. |
Advanced Mode | Включает Compilation Settings. |
Настройки прозрачного материала#
Следующие настройки доступны только для типов материалов Mesh Transparent PBR и Mesh Transparent Unlit.
Blend Mode |
Смешивание предустановлен. Можно выбрать один из следующих:
|
---|---|
Blend Src | Опция, используемая для масштабирования исходного цвета (цвет накладываемого материала). Доступно только при выборе предустановки Custom. |
Blend Dest | Параметр, используемый для масштабирования целевого цвета (цвет скрытого материала). Доступно только при выборе предустановки Custom. |
Overlap | Включает параметр Overlap. |
Depth Test | Включает параметр Depth Test. |
Depth Write | Включает параметр Depth Write. |
Participate in PostEffects | Включает параметры Post Processing. |
Настройки материала деколи#
Следующие настройки доступны только для типов материалов Decal PBR.
Normal Under Decal |
Определяет касательное пространство (матрица Tangent-Binormal-Normal), используемое для отображения нормалей:
|
---|---|
Normal Blend Mode |
Смешивание режим для нормалей декалей:
|
Screen Projection | Включает проекцию надписи на экран вместо проецирования ее на поверхность (поддерживаются только надписи Mesh). |
Настройки компиляции#
Эти настройки предназначены только для Direct3D компилятор (API DirectX).
Optimization Level |
Уровень оптимизации шейдеров и арифметического рефакторинга (например, слияниеmultiplyинструкция, за которой следуетaddв сплавленныйmad):
|
---|---|
Warning Mode |
Доступны следующие режимы:
|
IEEE Strictness | Принудительно выполняет строгую компиляцию IEEE. |
Параметры#
В панели Parameters вы определяете список параметров материала.
Доступны следующие элементы управления:
- Add - добавить новый параметр.
- Clone — клонировать выбранный параметр.
- Move Up — переместить выбранный параметр вверх по списку.
- Move Down — переместить выбранный параметр вниз по списку.
- Remove — удалить выбранный параметр.
При добавлении нового параметра вы должны указать имя параметра, тип и настройки по умолчанию в диалоге создания параметра. Предусмотрен следующий набор типов параметров:
- Slider — значение с плавающей запятой в указанном диапазоне (по умолчанию [0.0f; 1.0f]).
- Color — вектор с плавающей запятой компонентов 4, представляющих значение цвета.
- Texture2D, Texture3D , Texture2DArray , TextureCube — текстура соответствующего типа.
- Group — вспомогательный тип для группировки параметров. Используйте кнопки и для изменения порядка и группировки параметров.
- Float, Float2, Float3, Float4 — значение с плавающей запятой или вектор значений с плавающей запятой N.
- Int, Int2, Int3, Int4 — целочисленное значение или вектор целочисленных значений N.
Чтобы использовать параметр в графе материала, перетащите элемент на Graph View, чтобы создать ноду соответствующего типа:
Предупреждения и ошибки#
Панель Warnings and Errors позволяет отслеживать проблемы на графе материала и видна только в том случае, если они есть.
Панель перечисляет все проблемные ноды в графе, выберите запись, чтобы увидеть проблемы с ее портами или данными в разделе Message.
Некоторые предупреждения могут появляться после перенос вашего контента на более позднюю версию SDK. Это предупреждения-напоминания, предназначенные для уведомления об изменениях в логике определенных нод. Вы можете отказаться от предупреждения, нажав кнопку Remove Warning.
Узлы#
Узлы редактора материалов — это функциональные блоки, представляющие источники данных и инструкции по обработке, аналогичные переменным и функциям в программировании шейдеров.
У большинства нод предварительный просмотр вывода отображается на сфере предварительного просмотра (для большинства нод) или на плоскости (для текстур).
Некоторые ноды имеют набор настроек, определяющих их поведение. Двойной щелчок по ноде открывает диалоговое окно для настройки ее параметров.
Ноды, имеющие не более одного входного и одного выходного порта имеют специальный режим коннектора — для удобства они разборные . Свернутая нода, соединенная с другой нодой, становится присоединенной к ней. Перетащите свернутую ноду, чтобы разорвать соединение и отсоединить ноду.
Ноды разделены на несколько групп основаны на их применимости и имеют цветовую кодировку для лучшей идентификации.
Порт#
Порт определяет вход (слева) или выход (справа) ноды. Подключение ребра к порту позволяет данным проходить через сеть нод Material Graph.
Каждый порт имеет тип данных, определяющий ребра, которые могут быть к нему подключены. Все типы данных имеют цветовую кодировку, что означает, что каждый из них имеет соответствующий цвет, используемый для идентификации.
с плавающей запятой | float2 | float3 | float4 |
целое число | int2 | int3 | int4 |
матрица — матрица значений с плавающей запятой: float2×2 , float3×3 , float4×4 . | |||
текстура — любой тип текстуры: Текстура2D , Текстура3D , Текстура2DArray а также ТекстураКуб . | |||
bool — логическое значение, используемое в логические ноды а также петли . | |||
Any — произвольный тип данных, означающий, что порт поддерживает несколько типов данных. | |||
ошибка — указывает на ошибку (например, не введены необходимые данные или не удалось выполнить преобразование типа). |
К любому входному порту можно подключить только одно ребро, но к выходному порту можно подключить несколько ребер.
Большинство входных портов имеют входное значение по умолчанию .
Ребро#
Ребро представляет собой соединение между двумя портами (вход и выход). Ребра определяют, как данные проходят через сеть нод Material Graph. Вы можете подключить ребро только от выходного порта к входному порту.
Новое ребро создается путем перетаскивания из нужного выходного порта в желаемый входной порт или наоборот. Чтобы удалить ребро, выберите его левым щелчком и нажмите Delete.
Адаптеры портов#
Адаптер порта — это функция, дающая вам возможность выбирать компоненты данных в произвольном порядке, комбинировать и переупорядочивать их, обеспечивая удобный доступ к элементам и большую гибкость. Он доступен для следующих типов данных:
- bool;
- float, float2, float3, float4;
- int, int2, int3, int4.
Когда вы перетаскиваете новое ребро на вход port, появляется ряд доступных вариантов подключения:
- Опция = обеспечивает прямое соединение в случае, если тип ввода может предоставить все необходимые компоненты данных.
- При выборе другого параметра создается нода Expression, отвечающая за преобразование типов.
Адаптер можно изменить позже, дважды щелкнув выражение и отредактировав поле. Нода Expression позволяет вам писать простые арифметические операции и даже использовать графический API Unigine.
Добавление новых нод#
Чтобы добавить новую ноду, щелкните правой кнопкой мыши фон или нажмите пробел и выберите тип ноды из палитры или введите ее имя в поле Search.
Перетаскивание ребра из входного порта открывает палитру создания нод с предустановленным фильтром на требуемый тип данных для соответствующего порта.
Текстуры можно перетаскивать прямо из Asset Browser. В этом случае будет автоматически добавлена нода Sample Texture с соответствующими настройками.
Петли#
Иногда вам нужно выполнить определенные действия несколько раз, клонирование соответствующих групп нод очень быстро сделает ваш граф слишком сложным, даже если требуется всего 10 итераций. В UNIGINE для этого можно создавать циклы , как и в программировании.
Чтобы создать петлю, добавьте ноды Loop Begin и Loop End и соедините их порты Loop.
Чтобы добавить в цикл изменяющиеся переменные, подключите ноды с начальными значениями к порту Add ноды Loop Begin. Дважды щелкнув по ноде Loop Begin, вы можете открыть конструктор ввода, позволяющий переупорядочивать, переименовывать, удалять существующие входы и неявно задавать их тип, а также устанавливать максимальное количество итераций .
Затем построить граф, реализующий функционал одной итерации, результат которого необходимо передать ноде Loop End для дальнейших итераций. Вы можете использовать результат всех итераций дальше на своем графе.
Вы можете использовать значения Index текущей итерации и значения Maximum Iterations в своей логике. Index начинается с 0 и равняется Maximum Iterations-1 на последней итерации.
Вот пример простого цикла, увеличивающего значение на 0,1 10 раз:
Узел Loop End имеет входной порт break, который принимает логическое значение, по умолчанию false. Передача значения истинности (например, полученного с помощью Логические ноды ) прервет цикл и выйдет из текущей итерации.
Пользовательский код#
Независимо от того, насколько продвинута система материалов, вам может понадобиться что-то особенное, возможно, слишком сложное для реализации с помощью базовых нод. Или иногда может быть быстрее написать несколько строк кода для математических операций, чем создавать кучу нод и соединять их. Решение простое — создайте ноду Function и оберните в нее любую шейдерную функцию. Входные и выходные порты для ноды должны автоматически генерироваться в соответствии с сигнатурой функции.
Чтобы добавить или отредактировать код в ноде, дважды щелкните по ней, откроется окно редактора кода . Вы можете написать столько функций, сколько вам нужно, последняя функция в коде будет считаться основной.
Порталы#
Иногда, особенно в графах сложных материалов, слишком много пересекающихся ребер делают весь граф похожим на паутину, а поток данных очень трудно понять. Портал — это набор специальных нод, включающий один вход и один или несколько выходов , имеющих одинаковое имя. Порталы служат для уменьшения количества ребер и делают граф более «читабельным».
Чтобы создать портал, начните с добавления ноды Portal In. Подключите вход к новой ноде и дважды щелкните по ней, чтобы настроить его цвет и имя.
И тогда вы можете создать столько нод Portal Out, сколько вам нужно. Двойным щелчком по ноде Portal Out можно выбрать имя нужного входного портала, если их используется несколько.
Подграфы#
Подграф — это особый тип графа материала, на который можно ссылаться внутри других графов материала. Это может быть очень полезно, когда одни и те же операции должны выполняться несколько раз в одном графе или на нескольких графах. Вы просто упаковываете эти операции в коробку с набором входов и выходов и затем используете эту коробку везде, где вам нужно. Подграф отличается от Графика Материала тремя основными способами:
- Подграф не создает никакого материала, он используется в качестве строительного блока в графах материалов.
- Подграф не имеет нод Material и Final. Вместо этого у него есть две ноды с именами Inputs и Outputs, определяющие все входные и выходные порты.
- Подграф хранится в ассете *.msubgraph.
По сути, процесс построения подграфа такой же, как и при создании графа материала.
Чтобы создать новый подграф, щелкните правой кнопкой мыши в Asset Browser, чтобы открыть меню Create, затем выберите Create Material -> Material Graph.
Нажмите Save, чтобы применить и сохранить изменения.
Все подграфы автоматически добавляются в палитру, поэтому, если вы начнете вводить имя такого подграфа в поле поиска палитра создания нод , он будет отображаться в списке.
Настройка входов и выходов#
Дважды щелкните по ноде Inputs или ноде Outputs, чтобы открыть панель конструктора, позволяющую добавлять, переупорядочивать, удалять и устанавливать имя и тип входных и выходных портов подграфа соответственно.
Подключая ноды к портам Inputs, вы указываете необязательные порты подграфа, имеющие значения по умолчанию.
Использование подграфов#
Чтобы добавить подграф к вашему графу материала, открытом в данный момент в Редакторе, просто найдите его по имени в палитре создания нод либо перетащите его из Asset Browser , либо вы можете добавить ноду Sub Graph в свою сеть графа, указать ассет *.msubgraph, дважды щелкнув по ноде, и подключить необходимые ребра к входным и выходным портам подграфа.
Существует набор основных подграфов, реализующих основные функции (например, contrast, refract, object_triplanar и т. д.), которые хранятся в папке core/subgraphs.