Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
VisualShader
Наследует: Shader < Resource < RefCounted < Object
Пользовательская шейдерная программа с визуальным редактором.
Описание
Этот класс предоставляет графический визуальный редактор для создания Shader. Хотя VisualShader не требуют кодирования, они разделяют ту же логику с шейдерами скриптов. Они используют VisualShaderNode, которые могут быть соединены друг с другом для управления потоком шейдера. Граф визуального шейдера преобразуется в шейдер скрипта за кулисами.
Обучающие материалы
Свойства
Методы
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) |
can_connect_nodes(type: Type, from_node: int, from_port: int, to_node: int, to_port: int) const |
|
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) |
get_node_connections(type: Type) const |
|
get_node_list(type: Type) const |
|
get_node_position(type: Type, id: int) const |
|
get_valid_node_id(type: Type) const |
|
has_varying(name: String) const |
|
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 |
|
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_TEXTURE_BLIT = 10
Шейдер, используемый для обработки вызовов blit к DrawableTexture.
Type TYPE_MAX = 11
Представляет размер перечисления 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.
Описания свойств
Устарело: 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_node_position(type: Type, id: int, position: Vector2) 🔗
Устанавливает положение указанного узла.