Редактор материалов
Редактор материалов позволяет визуально создавать собственные материалы без написания единой строчки кода — просто создавайте и соединяйте узлы, строя график! Он достаточно прост для пользователей, которые плохо знакомы с созданием материалов, и достаточно мощен, чтобы вы могли делать множество вещей. Краткий список функций включает в себя:
- Возможность создавать свои собственные базовые материалы (.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 представляет собой базовый материал, он также доступен в корне Иерархия материалов и может быть назначенный к поддерживаемым поверхностям и предметам. В зависимости от материала тип его можно присвоить следующим объектам:
- Материалы сетки:
- Поверхности сеток 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 можно выбрать имя нужного входного портала, если используется несколько порталов.
Подграфы#
Подграф — это особый тип графа материала, на который можно ссылаться внутри других графов материала. Это может быть очень полезно, когда одни и те же операции должны выполняться несколько раз в одном графе или на нескольких графах. Вы просто упаковываете эти операции в коробку с набором входов и выходов и затем используете эту коробку везде, где вам нужно. Подграф отличается от Графика Материала тремя основными способами:
- Подграф не создает никакого материала, он используется в качестве строительного блока в графах материалов.
- Подграф не имеет материалов и конечных узлов. Вместо этого у него есть два узла с именами Inputs и Outputs, определяющие все входные и выходные порты.
- Подграф хранится в активе *.msubgraph.
По сути, процесс построения подграфа такой же, как и при создании графа материала.
Чтобы создать новый подграф, щелкните правой кнопкой мыши в обозревателе активов, чтобы открыть меню Create, затем выберите Create Material -> Material Graph.
Нажмите Save, чтобы применить и сохранить изменения.
Все подграфы автоматически добавляются в палитру, поэтому, если вы начнете вводить имя такого подграфа в поле поиска палитра создания узлов , он будет отображаться в списке.
Настройка входов и выходов#
Дважды щелкните узел Inputs или узел Outputs, чтобы открыть панель конструктора, позволяющую добавлять, переупорядочивать, удалять и устанавливать имя и тип входных и выходных портов подграфа соответственно.
Подключая узлы к портам узла Inputs, вы указываете необязательные порты подграфа, имеющие значения по умолчанию.
Использование подграфов#
Чтобы добавить подграф к вашему графику материала, открытом в данный момент в Редакторе, просто найдите его по имени в палитра создания узла либо перетащите его из Asset Browser , либо вы можете добавить узел Sub Graph в свою сеть графа, указать ассет *.msubgraph, дважды щелкнув по узлу, и подключить необходимые ребра к входным и выходным портам подграфа.
Существует набор основных подграфов, реализующих основные функции (например, contrast, refract, object_triplanar и т. д.), которые хранятся в папке core/subgraphs.