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
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) |
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) |
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
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.
Establece el modo de este shader.
void set_node_position(type: Type, id: int, position: Vector2) 🔗
Establece la posición del nodo especificado.