VisualShader

Hereda: Shader < Resource < RefCounted < Object

Un programa shader personalizado con un editor visual.

Descripción

Esta clase proporciona un editor visual tipo grafo para crear un Shader. Aunque los VisualShaders no requieren codificación, comparten la misma lógica con los shaders de script. Utilizan VisualShaderNodes que pueden conectarse entre sí para controlar el flujo del shader. El grafo de shader visual se convierte en un shader de script entre bastidores.

Tutoriales

Propiedades

Vector2

graph_offset

Métodos

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)


Enumeraciones

enum Type: 🔗

Type TYPE_VERTEX = 0

Un shader de vértices, operando en vértices.

Type TYPE_FRAGMENT = 1

Un shader de fragmentos, operando con fragmentos (píxeles).

Type TYPE_LIGHT = 2

Un shader para cálculos de luz.

Type TYPE_START = 3

Una función para la etapa "start" del shader de partículas.

Type TYPE_PROCESS = 4

Una función para la etapa "process" del shader de partículas.

Type TYPE_COLLIDE = 5

Una función para la etapa "collide" (manejador de colisión de partículas) del shader de partículas.

Type TYPE_START_CUSTOM = 6

Una función para la etapa "start" del shader de partículas, con salida personalizada.

Type TYPE_PROCESS_CUSTOM = 7

Una función para la etapa "process" del shader de partículas, con salida personalizada.

Type TYPE_SKY = 8

Un shader para el cielo del entorno 3D.

Type TYPE_FOG = 9

Un shader de computo que se ejecuta para cada froxel del mapa de niebla volumétrica.

Type TYPE_MAX = 10

Representa el tamaño del enumerado Type.


enum VaryingMode: 🔗

VaryingMode VARYING_MODE_VERTEX_TO_FRAG_LIGHT = 0

La varying se pasa de la función Vertex a las funciones Fragment y Light.

VaryingMode VARYING_MODE_FRAG_TO_LIGHT = 1

La varying se pasa de la función Fragment a la función Light.

VaryingMode VARYING_MODE_MAX = 2

Representa el tamaño del enum VaryingMode.


enum VaryingType: 🔗

VaryingType VARYING_TYPE_FLOAT = 0

La varying es de tipo float.

VaryingType VARYING_TYPE_INT = 1

La varying es de tipo int.

VaryingType VARYING_TYPE_UINT = 2

La varying es de tipo unsigned int.

VaryingType VARYING_TYPE_VECTOR_2D = 3

La varying es de tipo Vector2.

VaryingType VARYING_TYPE_VECTOR_3D = 4

La varying es de tipo Vector3.

VaryingType VARYING_TYPE_VECTOR_4D = 5

La varying es de tipo Vector4.

VaryingType VARYING_TYPE_BOOLEAN = 6

La varying es de tipo bool.

VaryingType VARYING_TYPE_TRANSFORM = 7

La varying es de tipo Transform3D.

VaryingType VARYING_TYPE_MAX = 8

Representa el tamaño del enum VaryingType.


Constantes

NODE_ID_INVALID = -1 🔗

Indica un nodo VisualShader no válido.

NODE_ID_OUTPUT = 0 🔗

Indica un nodo de salida de VisualShader.


Descripciones de Propiedades

Vector2 graph_offset 🔗

Obsoleto: This property does nothing and always equals to zero.

Obsoleto.


Descripciones de Métodos

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

Agrega el node especificado al sombreador.


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

Agrega un nuevo nodo de valor varying al shader.


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

Adjunta el nodo dado al fotograma dado.


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

Devuelve true si los nodos y puertos especificados pueden ser conectados juntos.


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

Conecta los nodos y puertos especificados.


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

Conecta los nodos y puertos especificados, aunque no puedan ser conectados. Dicha conexión es inválida y no funcionará correctamente.


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

Desvincula el nodo dado del marco al que está adjunto.


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

Conecta los nodos y puertos especificados.


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

Devuelve la instancia del nodo shader con el type y el id especificados.


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

Devuelve la lista de nodos conectados con el tipo especificado.


PackedInt32Array get_node_list(type: Type) const 🔗

Devuelve la lista de todos los nodos del shader con el tipo especificado.


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

Devuelve la posición del nodo especificado dentro del gráfico shader.


int get_valid_node_id(type: Type) const 🔗

Devuelve el siguiente ID de nodo válido que se puede añadir al gráfico de shader.


bool has_varying(name: String) const 🔗

Devuelve true si el shader tiene una varying con el name dado.


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

Devuelve true si existe el nodo y la conexión de puerto especificados.


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

Elimina el nodo especificado del shader.


void remove_varying(name: String) 🔗

Elimina un nodo de valor varying con el name dado. Imprime un error si no se encuentra un nodo con este nombre.


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

Reemplaza el nodo especificado con un nodo de nuevo tipo de clase.


void set_mode(mode: Mode) 🔗

Establece el modo de este shader.


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

Establece la posición del nodo especificado.