VisualShader
Пользовательская шейдерная программа с визуальным редактором.
Пользовательская шейдерная программа с визуальным редактором.
Этот класс предоставляет графический визуальный редактор для создания Shader. Хотя VisualShader не требуют кодирования, они разделяют ту же логику с шейдерами скриптов. Они используют VisualShaderNode, которые могут быть соединены друг с другом для управления потоком шейдера. Граф визуального шейдера преобразуется в шейдер скрипта за кулисами.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VisualShaderКонструктор
public VisualShader();Свойства1
GraphOffsetСвойство · Устарело
public Vector2 GraphOffset { get; set; }Устарело.
Методы22
AddNodevoid
public void AddNode(VisualShader.Type type, VisualShaderNode node, Vector2 position, int id);Добавляет ресурс блока в выбранный этап графа. Используйте свободный ID из GetValidNodeId(); ID 0 занят Output. Для C#-блока не вызывайте Dispose(), пока граф его использует. В 1.0.0 метод обновляет порты, но не записывает значения из _GetInputPortDefaultValue(): назначьте их явно.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
node | VisualShaderNode | — |
position | Vector2 | — |
id | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
nodeРесурс VisualShaderNode, не игровая Entity.
positionПоложение блока в редакторе графа; не координаты изображения или мира.
idСвободный ID в выбранном этапе.
AddVaryingvoid
public void AddVarying(string name, VisualShader.VaryingMode mode, VisualShader.VaryingType type);Добавляет в шейдер новый узел переменного значения.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
mode | VisualShader.VaryingMode | — |
type | VisualShader.VaryingType | — |
AttachNodeToFramevoid
public void AttachNodeToFrame(VisualShader.Type type, int id, int frame);Прикрепляет указанный узел к указанному фрейму.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
frame | int | — |
CanConnectNodesbool
public bool CanConnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);Проверяет существование блоков и портов, совместимость типов, отсутствие такой же связи, самосвязи и цикла. Используйте перед ConnectNodes(); проверка сама не меняет граф и не компилирует шейдер.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
fromNode | int | — |
fromPort | int | — |
toNode | int | — |
toPort | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
fromNodeID исходного блока.
fromPortИндекс выходного порта исходного блока с нуля.
toNodeID принимающего блока; 0 обозначает Output.
toPortИндекс входного порта принимающего блока с нуля.
booltrue, если предварительные проверки разрешают соединение.
ConnectNodesError
public Error ConnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);Соединяет выход одного блока со входом другого в том же этапе. Сначала используйте CanConnectNodes(), особенно для предотвращения циклов: сам ConnectNodes() не повторяет все проверки preflight. Для замены существующего входа сначала снимите прежнюю связь.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
fromNode | int | — |
fromPort | int | — |
toNode | int | — |
toPort | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
fromNodeID исходного блока.
fromPortИндекс выходного порта исходного блока с нуля.
toNodeID принимающего блока; 0 обозначает Output.
toPortИндекс входного порта принимающего блока с нуля.
ErrorError.Ok при создании связи; иначе код ошибки. Это не результат GPU-компиляции.
ConnectNodesForcedvoid
public void ConnectNodesForced(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);Подключает указанные узлы и порты, даже если они не могут быть подключены. Такое подключение недействительно и не будет работать должным образом.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
fromNode | int | — |
fromPort | int | — |
toNode | int | — |
toPort | int | — |
DetachNodeFromFramevoid
public void DetachNodeFromFrame(VisualShader.Type type, int id);Отсоединяет указанный узел от фрейма, к которому он прикреплен.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
DisconnectNodesvoid
public void DisconnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);Удаляет указанную связь, если она существует. Не удаляет блоки. После снятия связи вход снова использует своё значение по умолчанию, если оно задано.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
fromNode | int | — |
fromPort | int | — |
toNode | int | — |
toPort | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
fromNodeID исходного блока.
fromPortИндекс выходного порта исходного блока с нуля.
toNodeID принимающего блока; 0 обозначает Output.
toPortИндекс входного порта принимающего блока с нуля.
GetGraphOffsetVector2
public Vector2 GetGraphOffset();Vector2GetNodeVisualShaderNode
public VisualShaderNode GetNode(VisualShader.Type type, int id);Возвращает ресурс блока по ID в указанном этапе. Блок графа не является Entity; используйте методы VisualShaderNode и сохранённый C#-тип.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
idID блока в этом этапе.
VisualShaderNodeРесурс блока или null, если ID не найден.
GetNodeConnectionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetNodeConnections(VisualShader.Type type);Возвращает список подключенных узлов указанного типа.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>GetNodeListint[]
public int[] GetNodeList(VisualShader.Type type);Возвращает ID блоков одного этапа, включая Output. Это снимок списка, а не сами ресурсы; используйте GetNode() для доступа к блоку.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
int[]Массив ID блоков этапа.
GetNodePositionVector2
public Vector2 GetNodePosition(VisualShader.Type type, int id);Возвращает положение указанного узла в графе шейдера.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
Vector2GetValidNodeIdint
public int GetValidNodeId(VisualShader.Type type);Возвращает доступный ID для нового блока выбранного этапа. Запрашивайте непосредственно перед AddNode(); результат не резервирует ID и не является стабильным ID игрового объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
intДоступный ID блока.
HasVaryingbool
public bool HasVarying(string name);Возвращает true, если шейдер имеет переменную с указанным name.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
boolIsNodeConnectionbool
public bool IsNodeConnection(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);Returns (Возврат) true если имеется указанный узел и портовое соединение.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
fromNode | int | — |
fromPort | int | — |
toNode | int | — |
toPort | int | — |
boolRemoveNodevoid
public void RemoveNode(VisualShader.Type type, int id);Удаляет блок и связанные с ним соединения из выбранного этапа. Output не удаляется. Оставшиеся неподключённые блоки вычисления не появятся в коде только потому, что сохранены в графе.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
typeЭтап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.
idID удаляемого блока; не ID Output.
RemoveVaryingvoid
public void RemoveVarying(string name);Удаляет узел переменного значения с указанным name. Выводит ошибку, если узел с таким именем не найден.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
ReplaceNodevoid
public void ReplaceNode(VisualShader.Type type, int id, StringName newClass);Заменяет указанный узел узлом нового типа класса.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
newClass | StringName | — |
SetGraphOffsetvoid
public void SetGraphOffset(Vector2 offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
SetModevoid
public void SetMode(Shader.Mode mode);Устанавливает режим этого шейдера.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | Shader.Mode | — |
SetNodePositionvoid
public void SetNodePosition(VisualShader.Type type, int id, Vector2 position);Устанавливает положение указанного узла.
| Имя | Тип | По умолчанию |
|---|---|---|
type | VisualShader.Type | — |
id | int | — |
position | Vector2 | — |
Поля и константы2
NodeIdInvalidПоле
public const long NodeIdInvalid = -1;Указывает на недопустимый узел VisualShader.
NodeIdOutputПоле
public const long NodeIdOutput = 0;Указывает выходной узел VisualShader.
VisualShader.Type
| Значение | Описание |
|---|---|
Collide = 5 | Функция для этапа «столкновения» (обработчик столкновений частиц) шейдера частиц. |
Fog = 9 | Вычислительный шейдер, который запускается для каждого фрокселя карты объемного тумана. |
Fragment = 1 | Фрагментный шейдер, работающий с фрагментами (пикселями). |
Light = 2 | Шейдер для расчета освещения. |
Max = 11 | Представляет размер перечисления |
Process = 4 | Функция для этапа «обработки» шейдера частиц. |
ProcessCustom = 7 | Функция для этапа «обработки» шейдера частиц с настраиваемым выводом. |
Sky = 8 | Шейдер для неба трехмерной среды. |
Start = 3 | Функция для «стартового» этапа шейдера частиц. |
StartCustom = 6 | Функция для «стартового» этапа шейдера частиц с настраиваемым выводом. |
TextureBlit = 10 | Шейдер, используемый для обработки вызовов blit к DrawableTexture. |
Vertex = 0 | Вершинный шейдер, работающий с вершинами. |
VisualShader.VaryingMode
| Значение | Описание |
|---|---|
FragToLight = 1 | Переменная передается из функции |
Max = 2 | Представляет размер перечисления |
VertexToFragLight = 0 | Переменная передается из функции |
VisualShader.VaryingType
| Значение | Описание |
|---|---|
Boolean = 6 | Varying имеет тип [bool]. |
Float = 0 | Varying имеет тип [float]. |
Int = 1 | Varying имеет тип [int]. |
Max = 8 | Представляет размер перечисления |
Transform = 7 | Varying имеет тип |
Uint = 2 | Varying имеет тип unsigned [int]. |
Vector2D = 3 | Varying имеет тип |
Vector3D = 4 | Varying имеет тип |
Vector4D = 5 | Varying имеет тип |