VisualShader

Наследует: Shader < Resource < RefCounted < Object

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

Описание

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

Обучающие материалы

Свойства

Vector2

graph_offset

Методы

void

add_node(type: Type, node: VisualShaderNode, position: Vector2, id: int)

void

add_varying(name: String, mode: VaryingMode, type: VaryingType)

void

attach_node_to_frame(type: Type, id: int, frame: int)

bool

can_connect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) const

Error

connect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int)

void

connect_nodes_forced(type: Type, from_node: int, from_port: int, to_node: int, to_port: int)

void

detach_node_from_frame(type: Type, id: int)

void

disconnect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int)

VisualShaderNode

get_node(type: Type, id: int) const

Array[Dictionary]

get_node_connections(type: Type) const

PackedInt32Array

get_node_list(type: Type) const

Vector2

get_node_position(type: Type, id: int) const

int

get_valid_node_id(type: Type) const

bool

has_varying(name: String) const

bool

is_node_connection(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) const

void

remove_node(type: Type, id: int)

void

remove_varying(name: String)

void

replace_node(type: Type, id: int, new_class: StringName)

void

set_mode(mode: Mode)

void

set_node_position(type: Type, id: int, position: Vector2)


Перечисления

enum Type: 🔗

Type TYPE_VERTEX = 0

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

Type TYPE_FRAGMENT = 1

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

Type TYPE_LIGHT = 2

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

Type TYPE_START = 3

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

Type TYPE_PROCESS = 4

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

Type TYPE_COLLIDE = 5

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

Type TYPE_START_CUSTOM = 6

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

Type TYPE_PROCESS_CUSTOM = 7

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

Type TYPE_SKY = 8

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

Type TYPE_FOG = 9

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

Type TYPE_MAX = 10

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


enum VaryingMode: 🔗

VaryingMode VARYING_MODE_VERTEX_TO_FRAG_LIGHT = 0

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

VaryingMode VARYING_MODE_FRAG_TO_LIGHT = 1

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

VaryingMode VARYING_MODE_MAX = 2

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


enum VaryingType: 🔗

VaryingType VARYING_TYPE_FLOAT = 0

Varying имеет тип float.

VaryingType VARYING_TYPE_INT = 1

Varying имеет тип int.

VaryingType VARYING_TYPE_UINT = 2

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

VaryingType VARYING_TYPE_VECTOR_2D = 3

Varying имеет тип Vector2.

VaryingType VARYING_TYPE_VECTOR_3D = 4

Varying имеет тип Vector3.

VaryingType VARYING_TYPE_VECTOR_4D = 5

Varying имеет тип Vector4.

VaryingType VARYING_TYPE_BOOLEAN = 6

Varying имеет тип bool.

VaryingType VARYING_TYPE_TRANSFORM = 7

Varying имеет тип Transform3D.

VaryingType VARYING_TYPE_MAX = 8

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


Константы

NODE_ID_INVALID = -1 🔗

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

NODE_ID_OUTPUT = 0 🔗

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


Описания свойств

Vector2 graph_offset 🔗

Устарело: This property does nothing and always equals to zero.

Устарело.


Описания метода

void add_node(type: Type, node: VisualShaderNode, position: Vector2, id: int) 🔗

Добавляет указанный node в шейдер.


void add_varying(name: String, mode: VaryingMode, type: VaryingType) 🔗

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


void attach_node_to_frame(type: Type, id: int, frame: int) 🔗

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


bool can_connect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) const 🔗

Возвращает true, если указанные узлы и порты могут быть соединены вместе.


Error connect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) 🔗

Соединяет указанные узлы и порты.


void connect_nodes_forced(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) 🔗

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


void detach_node_from_frame(type: Type, id: int) 🔗

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


void disconnect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) 🔗

Соединяет указанные узлы и порты.


VisualShaderNode get_node(type: Type, id: int) const 🔗

Возвращает экземпляр узла шейдера с указанными type и id.


Array[Dictionary] get_node_connections(type: Type) const 🔗

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


PackedInt32Array get_node_list(type: Type) const 🔗

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


Vector2 get_node_position(type: Type, id: int) const 🔗

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


int get_valid_node_id(type: Type) const 🔗

Возвращает следующий действительный ID узла, который можно добавить в граф шейдера.


bool has_varying(name: String) const 🔗

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


bool is_node_connection(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) const 🔗

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


void remove_node(type: Type, id: int) 🔗

Удаляет указанный узел из шейдера.


void remove_varying(name: String) 🔗

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


void replace_node(type: Type, id: int, new_class: StringName) 🔗

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


void set_mode(mode: Mode) 🔗

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


void set_node_position(type: Type, id: int, position: Vector2) 🔗

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