This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Редактор материалов

Редактор материалов позволяет визуально создавать собственные материалы без единой строчки кода — просто создавайте ноды и объединяйте их в граф! Он достаточно прост для пользователей, которые плохо знакомы с созданием материалов, и достаточно мощен, чтобы можно было делать множество вещей. Краткий список функций включает в себя:

  • Возможность создавать собственные базовые материалы (.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 MaterialMaterial Graph.

Укажите имя для вашего ассета графа. Новый ассет *.mgraph будет создан в текущей папке вашего проекта.

Поскольку ассет Material Graph представляет собой базовый материал, он также доступен в корне Materials Hierarchy и может быть назначен на поддерживаемые поверхности и объекты. В зависимости от типа материала его можно назначить на следующие объекты:

Работа с графами материалов#

Щелкните правой кнопкой мыши ассет *.mgraph и выберите Edit Graph или просто дважды щелкните по ассету, чтобы открыть его в окне Material Editor.

Окно Material Editor включает в себя окно Graph View, в котором отображаются сеть графа материала и панель настроек.

Сеть графа материала состоит из нод — функциональных блоков, отвечающих за обработку входных данных. Составляя сеть графов, вы определяете внешний вид материала.

Нода Material является главной нодой материала. Она предоставляет набор входных данных для графических данных и генерирует материал определенного типа в зависимости от текущих настроек .

Наконец, выход Мастер-ноды подключается к ноде Final — основной выходной ноде материала.

Примечание
Граф материала может содержать несколько нод 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

Определяет режим для корректировки вершин а также входы для тесселяции:

  • Position — позиции вершин заменяются новыми значениями.
  • Offset — к исходным позициям вершин добавляются новые значения.
Vertex Space

Определяет векторное пространство для корректировки вершин и тесселяции. Варианты зависят от выбранного Vertex Mode:

  • Position Vertex Mode:
    • Camera World — позиции относительно позиции камеры.
    • Object — позиции относительно оси объекта.
    • View — позиции относительно камеры.
    • Absolute World — позиции относительно начала мира.
  • Offset Vertex Mode:
    • World — смещения относительно начала координат мира.
    • Object — смещения относительно оси объекта.
    • Tangent — смещения относительно касательной к поверхности.
    • View — смещения относительно камеры.
Normal Space

Определяет пространство для векторов нормалей:

  • World;
  • Object;
  • Tangent;
  • View.
Depth Mode

Определяет, как обрабатываются данные глубины:

  • Offset;
  • Override.
Depth Shadow Флаг, указывающий, влияет ли изменение глубины на тени.
Tessellation Включает входы для параметров тесселяции и настройки тесселяции.
Two Sided Включает опцию Two Sided.
Write Velocity Offset Включает вход Velocity.
Advanced Mode Включает настройки компиляции.

Настройки прозрачного материала#

Следующие настройки доступны только для типов материалов Mesh Transparent PBR и Mesh Transparent Unlit.

Blend Mode

Набор предустановок смешивания. Можно выбрать один из следующих:

  • Alpha blend;
  • Additive;
  • Multiplicative;
  • Disabled;
  • Custom.
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), используемое для отображения нормалей:

  • Take From Decal Mesh — используются нормали меша декаля (для декалей Mesh) или плоскости (для декалей Orthographic и Projected);
  • Up Direction of Decal — используется локальный вектор декали, направленный вверх;
  • GBuffer Normal — используются нормали из буфера экранных нормалей ;
  • GBuffer Depth Based Normal — нормали строятся на основе содержимого буфера глубины экрана. В отличие от GBuffer Normal, эта опция обеспечивает неизменяемые нормали в том виде, в каком они представлены в геометрии сцены.
Normal Blend Mode

Режим смешивания для нормалей декалей:

  • Alpha Blend;
  • Additive.
Screen Projection Включает проекцию декали на экран вместо проецирования ее на поверхность (поддерживаются только надписи Mesh).

Настройки компиляции#

Эти настройки предназначены только для компилятора Direct3D (API DirectX).

Внимание
Не рекомендуется изменять значения по умолчанию без понимания этих настроек.
Optimization Level

Уровень оптимизации шейдеров и арифметического рефакторинга (например, слияние инструкции multiply, за которой следует add, в объединенный mad):

  • Уровень 0 означает полное отсутствие оптимизации. Компиляция выполняется быстро и выдает самый медленный код.
  • Остальные уровни соответствуют постепенно увеличивающейся степени оптимизации до самого высокого уровня 4.
Warning Mode

Доступны следующие режимы:

  • Disable — предупреждения отключены;
  • Soft — предупреждения выводятся в лог, но игнорируются;
  • Hard — предупреждения считаются ошибками.
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.

Ноды#

Ноды редактора материалов — это функциональные блоки, представляющие источники данных и инструкции по обработке, аналогичные переменным и функциям в программировании шейдеров.

У большинства нод предварительный просмотр вывода отображается на сфере предварительного просмотра (для большинства нод) или на плоскости (для текстур).

Некоторые ноды имеют набор настроек, определяющих их поведение. Двойной щелчок по ноде открывает диалоговое окно для настройки ее параметров.

Ноды, имеющие не более одного входного и одного выходного порта имеют специальный режим коннектора — для удобства они сворачиваются . Свернутая нода, соединенная с другой нодой, становится присоединенной к ней. Перетащите свернутую ноду, чтобы разорвать соединение и отсоединить ноду.

Ноды разделены на несколько групп на основании их применимости и имеют цветовую кодировку для более удобной идентификации.

Порт#

Порт определяет вход (слева) или выход (справа) ноды. Подключение ребра к порту позволяет данным проходить по сети нод графа материалов.

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

float float2 float3 float4
int int2 int3 int4
matrix — матрица значений с плавающей запятой: float2×2, float3×3, float4×4 .
текстура — любой тип текстуры: Texture 2D, Texture 3D, Texture2DArray а также Texture Cube.
bool — логическое значение, используемое в логических нодах, а также циклах.
any — произвольный тип данных, означающий, что порт поддерживает несколько типов данных.
error — указывает на ошибку (например, не введены необходимые данные или не удалось выполнить преобразование типа).

К любому входному порту можно подключить только одно ребро, но к выходному порту можно подключить несколько ребер.

Большинство входных портов имеют входное значение по умолчанию .

Ребро#

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

Новое ребро создается путем перетаскивания из нужного выходного порта в желаемый входной порт или наоборот. Чтобы удалить ребро, выберите его левым щелчком и нажмите Delete.

Адаптеры портов#

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

  • bool;
  • float, float2, float3, float4;
  • int, int2, int3, int4.

Когда вы перетаскиваете новое ребро на входящий порт, появляется ряд доступных вариантов подключения:

  • Опция = обеспечивает прямое соединение в случае, если тип ввода может предоставить все необходимые компоненты данных.
  • При выборе другого параметра создается нода 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.

Последнее обновление: 23.06.2023
Build: ()