VisualShaderNodeCustom

Inherits: VisualShaderNode < Resource < Reference < Object

Clase virtual para definir los VisualShaderNode personalizados para su uso en el Visual Shader Editor.

Descripción

Heredando esta clase puedes crear un addon de script VisualShader personalizado que se añadirá automáticamente al Visual Shader Editor. El comportamiento del VisualShaderNode se define anulando los métodos virtuales proporcionados.

Para que el nodo se registre como un addon de edición, debes usar la palabra clave tool y proporcionar un class_name para tu script personalizado. Por ejemplo:

tool
extends VisualShaderNodeCustom
class_name VisualShaderNodeNoise

Métodos

String

_get_category ( ) virtual

String

_get_code ( Array input_vars, Array output_vars, int mode, int type ) virtual

String

_get_description ( ) virtual

String

_get_global_code ( int mode ) virtual

int

_get_input_port_count ( ) virtual

String

_get_input_port_name ( int port ) virtual

int

_get_input_port_type ( int port ) virtual

String

_get_name ( ) virtual

int

_get_output_port_count ( ) virtual

String

_get_output_port_name ( int port ) virtual

int

_get_output_port_type ( int port ) virtual

int

_get_return_icon_type ( ) virtual

String

_get_subcategory ( ) virtual

Descripciones de Métodos

  • String _get_category ( ) virtual

Override this method to define the category of the associated custom node in the Visual Shader Editor's members dialog. The path may look like "MyGame/MyFunctions/Noise".

Defining this method is optional. If not overridden, the node will be filed under the "Custom" category.


Anula este método para definir el código real shader del nodo personalizado asociado. El código shader debe devolverse como una string, que puede tener varias líneas (para mayor comodidad, puede utilizarse la construcción de string multilínea "").

Los arrays input_vars y output_vars contienen los nombres de las strings de las diversas variables de entrada y salida, tal como se definen en los métodos virtuales _get_input_* y _get_output_* de esta clase.

A los puertos de salida se les pueden asignar valores en el código shader. Por ejemplo, return output_vars[0] + " = " + input_vars[0] + ";".

Puedes personalizar el código generado en base al shader mode (ver Mode) y/o type (ver Type).

La definición de este método es required.


  • String _get_description ( ) virtual

Anula este método para definir la descripción del nodo personalizado asociado en el diálogo de miembros del Editor de shader Visual.

La definición de este método es opcional.


  • String _get_global_code ( int mode ) virtual

Sobreescribe este método para añadir código de shader encima del shader global, para definir su propia biblioteca estándar de métodos reutilizables, variaciones, constantes, uniformes, etc. El código shader debe ser devuelto como una string, que puede tener múltiples líneas (la construcción de string multilínea "" puede ser usada para mayor conveniencia).

Tenga cuidado con esta funcionalidad ya que puede causar conflictos de nombres con otros nodos personalizados, así que asegúrese de dar a las entidades definidas nombres únicos.

Puede personalizar el código generado basándose en el shader mode (véase Mode).

Definir este método es opcional.


  • int _get_input_port_count ( ) virtual

Anular este método para definir la cantidad de puertos de entrada del nodo personalizado asociado.

La definición de este método es required. Si no se anula, el nodo no tiene puertos de entrada.


  • String _get_input_port_name ( int port ) virtual

Sobreescribir este método para definir los nombres de los puertos de entrada del nodo personalizado asociado. Los nombres se usan tanto para los puertos de entrada en el editor como identificadores en el código shader, y se pasan en el array input_vars en _get_code.

La definición de este método es opcional, pero se recomienda. Si no se anula, los puertos de entrada se nombran como "in" + str(port).


  • int _get_input_port_type ( int port ) virtual

Sobreescribe este método para definir el tipo devuelto de cada puerto de entrada del nodo personalizado asociado (véase PortType para los posibles tipos).

Definir este método es opcional, pero se recomienda. Si no se anula, los puertos de entrada devolverán el tipo VisualShaderNode.PORT_TYPE_SCALAR.


  • String _get_name ( ) virtual

Sobreescribe este método para definir el nombre del nodo personalizado asociado en el diálogo y el gráfico de miembros del Editor de shader Visual.

Definir este método es opcional, pero se recomienda. Si no se anula, el nodo se nombrará como "Unnamed".


  • int _get_output_port_count ( ) virtual

Sobreescribe este método para definir la cantidad de puertos de salida del nodo personalizado asociado.

La definición de este método es requerida. Si no se sobreescribe, el nodo no tiene puertos de salida.


  • String _get_output_port_name ( int port ) virtual

Sobreescribe este método para definir los nombres de los puertos de salida del nodo personalizado asociado. Los nombres se utilizan tanto para los puertos de salida en el editor como identificadores en el código shader, y se pasan en el array output_vars en _get_code.

La definición de este método es opcional, pero se recomienda. Si no se sobreescribe, los puertos de salida se nombran como "out" + str(port).


  • int _get_output_port_type ( int port ) virtual

Sobreescribe este método para definir el tipo devuelto de cada puerto de salida del nodo personalizado asociado (véase PortType para los posibles tipos).

Definir este método es opcional, pero se recomienda. Si no se anula, los puertos de salida devolverán el tipo VisualShaderNode.PORT_TYPE_SCALAR.


  • int _get_return_icon_type ( ) virtual

Sobrescribe este método para definir el icono de retorno del nodo personalizado asociado en el diálogo de miembros del Editor Shader Visual.

La definición de este método es opcional. Si no se anula, no se muestra ningún icono de retorno.


  • String _get_subcategory ( ) virtual

Override this method to define the subcategory of the associated custom node in the Visual Shader Editor's members dialog.

Defining this method is optional. If not overridden, the node will be filed under the root of the main category (see _get_category).