reckfellENGINE

VisualShader

Пользовательская шейдерная программа с визуальным редактором.

На этой странице
class VisualShaderReckfellSharpНаследует Shader

Пользовательская шейдерная программа с визуальным редактором.

Этот класс предоставляет графический визуальный редактор для создания Shader. Хотя VisualShader не требуют кодирования, они разделяют ту же логику с шейдерами скриптов. Они используют VisualShaderNode, которые могут быть соединены друг с другом для управления потоком шейдера. Граф визуального шейдера преобразуется в шейдер скрипта за кулисами.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

VisualShaderКонструктор
# VisualShader
C#
public VisualShader();

Свойства1

GraphOffsetСвойство · Устарело
# GraphOffset
C#
public Vector2 GraphOffset { get; set; }

Устарело.

Методы22

AddNodevoid
# AddNode
C#
public void AddNode(VisualShader.Type type, VisualShaderNode node, Vector2 position, int id);

Добавляет ресурс блока в выбранный этап графа. Используйте свободный ID из GetValidNodeId(); ID 0 занят Output. Для C#-блока не вызывайте Dispose(), пока граф его использует. В 1.0.0 метод обновляет порты, но не записывает значения из _GetInputPortDefaultValue(): назначьте их явно.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
nodeVisualShaderNode—
positionVector2—
idint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

node

Ресурс VisualShaderNode, не игровая Entity.

position

Положение блока в редакторе графа; не координаты изображения или мира.

id

Свободный ID в выбранном этапе.

AddVaryingvoid
# AddVarying
C#
public void AddVarying(string name, VisualShader.VaryingMode mode, VisualShader.VaryingType type);

Добавляет в шейдер новый узел переменного значения.

Параметры
ИмяТипПо умолчанию
namestring—
modeVisualShader.VaryingMode—
typeVisualShader.VaryingType—
AttachNodeToFramevoid
# AttachNodeToFrame
C#
public void AttachNodeToFrame(VisualShader.Type type, int id, int frame);

Прикрепляет указанный узел к указанному фрейму.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
frameint—
CanConnectNodesbool
# CanConnectNodes
C#
public bool CanConnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);

Проверяет существование блоков и портов, совместимость типов, отсутствие такой же связи, самосвязи и цикла. Используйте перед ConnectNodes(); проверка сама не меняет граф и не компилирует шейдер.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
fromNodeint—
fromPortint—
toNodeint—
toPortint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

fromNode

ID исходного блока.

fromPort

Индекс выходного порта исходного блока с нуля.

toNode

ID принимающего блока; 0 обозначает Output.

toPort

Индекс входного порта принимающего блока с нуля.

Возвращает bool

true, если предварительные проверки разрешают соединение.

ConnectNodesError
# ConnectNodes
C#
public Error ConnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);

Соединяет выход одного блока со входом другого в том же этапе. Сначала используйте CanConnectNodes(), особенно для предотвращения циклов: сам ConnectNodes() не повторяет все проверки preflight. Для замены существующего входа сначала снимите прежнюю связь.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
fromNodeint—
fromPortint—
toNodeint—
toPortint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

fromNode

ID исходного блока.

fromPort

Индекс выходного порта исходного блока с нуля.

toNode

ID принимающего блока; 0 обозначает Output.

toPort

Индекс входного порта принимающего блока с нуля.

Возвращает Error

Error.Ok при создании связи; иначе код ошибки. Это не результат GPU-компиляции.

ConnectNodesForcedvoid
# ConnectNodesForced
C#
public void ConnectNodesForced(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);

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

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
fromNodeint—
fromPortint—
toNodeint—
toPortint—
DetachNodeFromFramevoid
# DetachNodeFromFrame
C#
public void DetachNodeFromFrame(VisualShader.Type type, int id);

Отсоединяет указанный узел от фрейма, к которому он прикреплен.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
DisconnectNodesvoid
# DisconnectNodes
C#
public void DisconnectNodes(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);

Удаляет указанную связь, если она существует. Не удаляет блоки. После снятия связи вход снова использует своё значение по умолчанию, если оно задано.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
fromNodeint—
fromPortint—
toNodeint—
toPortint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

fromNode

ID исходного блока.

fromPort

Индекс выходного порта исходного блока с нуля.

toNode

ID принимающего блока; 0 обозначает Output.

toPort

Индекс входного порта принимающего блока с нуля.

GetGraphOffsetVector2
# GetGraphOffset
C#
public Vector2 GetGraphOffset();
Возвращает Vector2
GetNodeVisualShaderNode
# GetNode
C#
public VisualShaderNode GetNode(VisualShader.Type type, int id);

Возвращает ресурс блока по ID в указанном этапе. Блок графа не является Entity; используйте методы VisualShaderNode и сохранённый C#-тип.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

id

ID блока в этом этапе.

Возвращает VisualShaderNode

Ресурс блока или null, если ID не найден.

GetNodeConnectionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetNodeConnections
C#
public Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetNodeConnections(VisualShader.Type type);

Возвращает список подключенных узлов указанного типа.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
GetNodeListint[]
# GetNodeList
C#
public int[] GetNodeList(VisualShader.Type type);

Возвращает ID блоков одного этапа, включая Output. Это снимок списка, а не сами ресурсы; используйте GetNode() для доступа к блоку.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

Возвращает int[]

Массив ID блоков этапа.

GetNodePositionVector2
# GetNodePosition
C#
public Vector2 GetNodePosition(VisualShader.Type type, int id);

Возвращает положение указанного узла в графе шейдера.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
Возвращает Vector2
GetValidNodeIdint
# GetValidNodeId
C#
public int GetValidNodeId(VisualShader.Type type);

Возвращает доступный ID для нового блока выбранного этапа. Запрашивайте непосредственно перед AddNode(); результат не резервирует ID и не является стабильным ID игрового объекта.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

Возвращает int

Доступный ID блока.

HasVaryingbool
# HasVarying
C#
public bool HasVarying(string name);

Возвращает true, если шейдер имеет переменную с указанным name.

Параметры
ИмяТипПо умолчанию
namestring—
Возвращает bool
IsNodeConnectionbool
# IsNodeConnection
C#
public bool IsNodeConnection(VisualShader.Type type, int fromNode, int fromPort, int toNode, int toPort);

Returns (Возврат) true если имеется указанный узел и портовое соединение.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
fromNodeint—
fromPortint—
toNodeint—
toPortint—
Возвращает bool
RemoveNodevoid
# RemoveNode
C#
public void RemoveNode(VisualShader.Type type, int id);

Удаляет блок и связанные с ним соединения из выбранного этапа. Output не удаляется. Оставшиеся неподключённые блоки вычисления не появятся в коде только потому, что сохранены в графе.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
type

Этап графа, например VisualShader.Type.Fragment. ID блоков и связи относятся к этому этапу.

id

ID удаляемого блока; не ID Output.

RemoveVaryingvoid
# RemoveVarying
C#
public void RemoveVarying(string name);

Удаляет узел переменного значения с указанным name. Выводит ошибку, если узел с таким именем не найден.

Параметры
ИмяТипПо умолчанию
namestring—
ReplaceNodevoid
# ReplaceNode
C#
public void ReplaceNode(VisualShader.Type type, int id, StringName newClass);

Заменяет указанный узел узлом нового типа класса.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
newClassStringName—
SetGraphOffsetvoid
# SetGraphOffset
C#
public void SetGraphOffset(Vector2 offset);
Параметры
ИмяТипПо умолчанию
offsetVector2—
SetModevoid
# SetMode
C#
public void SetMode(Shader.Mode mode);

Устанавливает режим этого шейдера.

Параметры
ИмяТипПо умолчанию
modeShader.Mode—
SetNodePositionvoid
# SetNodePosition
C#
public void SetNodePosition(VisualShader.Type type, int id, Vector2 position);

Устанавливает положение указанного узла.

Параметры
ИмяТипПо умолчанию
typeVisualShader.Type—
idint—
positionVector2—

Поля и константы2

NodeIdInvalidПоле
# NodeIdInvalid
C#
public const long NodeIdInvalid = -1;

Указывает на недопустимый узел VisualShader.

NodeIdOutputПоле
# NodeIdOutput
C#
public const long NodeIdOutput = 0;

Указывает выходной узел VisualShader.

VisualShader.Type

ЗначениеОписание
Collide = 5

Функция для этапа «столкновения» (обработчик столкновений частиц) шейдера частиц.

Fog = 9

Вычислительный шейдер, который запускается для каждого фрокселя карты объемного тумана.

Fragment = 1

Фрагментный шейдер, работающий с фрагментами (пикселями).

Light = 2

Шейдер для расчета освещения.

Max = 11

Представляет размер перечисления VisualShader.Type.

Process = 4

Функция для этапа «обработки» шейдера частиц.

ProcessCustom = 7

Функция для этапа «обработки» шейдера частиц с настраиваемым выводом.

Sky = 8

Шейдер для неба трехмерной среды.

Start = 3

Функция для «стартового» этапа шейдера частиц.

StartCustom = 6

Функция для «стартового» этапа шейдера частиц с настраиваемым выводом.

TextureBlit = 10

Шейдер, используемый для обработки вызовов blit к DrawableTexture.

Vertex = 0

Вершинный шейдер, работающий с вершинами.

VisualShader.VaryingMode

ЗначениеОписание
FragToLight = 1

Переменная передается из функции Fragment в функцию Light.

Max = 2

Представляет размер перечисления VisualShader.VaryingMode.

VertexToFragLight = 0

Переменная передается из функции Vertex в функции Fragment и Light.

VisualShader.VaryingType

ЗначениеОписание
Boolean = 6

Varying имеет тип [bool].

Float = 0

Varying имеет тип [float].

Int = 1

Varying имеет тип [int].

Max = 8

Представляет размер перечисления VisualShader.VaryingType.

Transform = 7

Varying имеет тип Transform3D.

Uint = 2

Varying имеет тип unsigned [int].

Vector2D = 3

Varying имеет тип Vector2.

Vector3D = 4

Varying имеет тип Vector3.

Vector4D = 5

Varying имеет тип Vector4.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.