VisualShaderNodeCustom

Inherits: VisualShaderNode < Resource < Reference < Object

用于定义自定义VisualShaderNode的虚拟类,以便在可视化着色器编辑器中使用。

描述

通过继承这个类,你可以创建一个自定义的VisualShader脚本插件,它将被自动添加到可视化着色器编辑器中。VisualShaderNode的行为是通过重写所提供的虚方法来定义的。

为了使节点被注册为编辑器插件,你必须使用tool关键字,并为自定义脚本提供一个class_name。例如:

  1. tool
  2. extends VisualShaderNodeCustom
  3. class_name VisualShaderNodeNoise

教程

方法

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

方法说明

  • String _get_category ( ) virtual

重写此方法,在可视化着色器编辑器的成员对话框中定义相关自定义节点的类别。路径可能看起来像 "MyGame/MyFunctions/Noise"这样。

定义这个方法是可选的。如果未重写,该节点将被归入 “Custom” 自定义类别。


重写此方法来定义相关自定义节点的实际着色器代码。着色器代码应该以字符串的形式返回,可以有多行,为了方便,可以使用""多行字符串结构。

input_varsoutput_vars数组包含各种输入和输出变量的字符串名称,正如本类中_get_input_*_get_output_*虚方法所定义的。

输出端口可以在着色器代码中被分配值。例如,return output_vars[0] + " = " + input_vars[0] + ";"

你可以根据着色器mode(参阅Mode)和/或type(参阅Type)来定制生成的代码。

定义这个方法是required必须的。


  • String _get_description ( ) virtual

重写此方法来定义可视化着色器编辑器的成员对话框中的相关自定义节点的描述。

定义这个方法是optional可选的。


  • String _get_global_code ( int mode ) virtual

重写此方法,在全局着色器之上添加着色器代码,以定义你自己的可重用方法、变量、常量、uniform等的标准库。着色器代码应以字符串的形式返回,可以有多行,为了方便,可以使用""多行字符串结构。

要小心使用这个功能,因为它可能导致与其他自定义节点的名称冲突,所以一定要给定义的实体起唯一的名字。

你可以根据着色器mode来定制生成的代码,参阅Mode

定义这个方法是optional可选的。


  • int _get_input_port_count ( ) virtual

重写此方法来定义相关自定义节点的输入端口数量。

定义这个方法是required必须的。如果没有被重写,节点就没有输入端口。


  • String _get_input_port_name ( int port ) virtual

重写此方法来定义相关自定义节点的输入端口的名称。这些名称既用于编辑器中的输入槽,也作为着色器代码中的标识符,并在_get_code中的input_vars数组中传递。

定义这个方法是可选的,但推荐使用。如果没有被重写,输入端口被命名为"in"+str(port)


  • int _get_input_port_type ( int port ) virtual

重写此方法以定义相关自定义节点的每个输入端口的返回类型,参阅PortType的可能类型。

定义这个方法是可选的,但推荐使用。如果没有被重写,输入端口将返回 VisualShaderNode.PORT_TYPE_SCALAR 类型。


重写此方法来定义可视化着色器编辑器的成员对话框和图中的相关自定义节点的名称。

定义这个方法是可选的,但推荐使用。如果不重写,节点将被命名为 “Unnamed”。


  • int _get_output_port_count ( ) virtual

重写此方法来定义相关自定义节点的输出端口数量。

定义这个方法是必须的。如果不重写,节点就没有输出端口。


  • String _get_output_port_name ( int port ) virtual

重写此方法来定义相关自定义节点的输出端口的名称。这些名字既用于编辑器中的输出槽,也作为着色器代码中的标识符,并在_get_code中的output_vars数组中传递。

定义这个方法是可选的,但推荐使用。如果没有被重写,输出端口被命名为"out" + str(port)


  • int _get_output_port_type ( int port ) virtual

重写此方法以定义相关自定义节点的每个输出端口的返回类型,参阅PortType的可能类型。

定义这个方法是可选的,但推荐使用。如果没有被重写,输出端口将返回VisualShaderNode.PORT_TYPE_SCALAR类型。


  • int _get_return_icon_type ( ) virtual

重写此方法来定义可视化着色器编辑器的成员对话框中相关自定义节点的返回图标。

定义这个方法是可选的。如果不重写,就不会显示返回图标。


  • String _get_subcategory ( ) virtual

重写此方法来定义可视化着色器编辑器的成员对话框中相关自定义节点的子类别。

定义这个方法是可选的。如果不重写,节点将被归入主类别的根下,参阅_get_category