VisualShaderNodeCustom

继承: VisualShaderNode < Resource < RefCounted < Object

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

描述

继承这个类可以创建自定义的 VisualShader 脚本扩展,会自动加入到 Visual Shader 编辑器中。VisualShaderNode 的行为可以通过覆盖虚方法定义。

要让节点注册为编辑器扩展,你必须为你的自定义脚本使用 @tool 注解并提供 class_name。例如:

  1. @tool
  2. extends VisualShaderNodeCustom
  3. class_name VisualShaderNodeNoise

教程

方法

String

_get_category() virtual const

String

_get_code(input_vars: Array[String], output_vars: Array[String], mode: Mode, type: Type) virtual const

int

_get_default_input_port(type: PortType) virtual const

String

_get_description() virtual const

String

_get_func_code(mode: Mode, type: Type) virtual const

String

_get_global_code(mode: Mode) virtual const

int

_get_input_port_count() virtual const

Variant

_get_input_port_default_value(port: int) virtual const

String

_get_input_port_name(port: int) virtual const

PortType

_get_input_port_type(port: int) virtual const

String

_get_name() virtual const

int

_get_output_port_count() virtual const

String

_get_output_port_name(port: int) virtual const

PortType

_get_output_port_type(port: int) virtual const

int

_get_property_count() virtual const

int

_get_property_default_index(index: int) virtual const

String

_get_property_name(index: int) virtual const

PackedStringArray

_get_property_options(index: int) virtual const

PortType

_get_return_icon_type() virtual const

bool

_is_available(mode: Mode, type: Type) virtual const

bool

_is_highend() virtual const

int

get_option_index(option: int) const


方法说明

String _get_category() virtual const 🔗

覆盖这个方法可以定义 Visual Shader 编辑器的成员对话框中关联的自定义节点的路径。路径类似于 "MyGame/MyFunctions/Noise"

定义这个方法是可选的。不覆盖时,该节点会被归在“Addons”分类下。


String _get_code(input_vars: Array[String], output_vars: Array[String], mode: Mode, type: Type) virtual const 🔗

覆盖这个方法可以定义关联的自定义节点的实际着色器代码。着色器代码应该以字符串形式返回,可以包含多行(用 """ 构造多行字符串比较方便)。

input_varsoutput_vars 数组包含各个输入和输出变量的字符串名称,这些变量由这个类的 _get_input_*_get_output_* 虚方法定义。

着色器代码中可以为输出端口赋值。例如 return output_vars[0] + " = " + input_vars[0] + ";"

你可以根据着色器模式 mode(见 Mode)和/或类型 type(见 Type)自定义生成的代码。

必须定义这个方法。


int _get_default_input_port(type: PortType) virtual const 🔗

覆盖该方法来定义当由于将连接从已有节点拖动到图形上的空白区域而创建节点时应默认连接的输入端口。

定义这个方法是可选的,如果未被覆盖,将创建到第一个有效端口的连接。


String _get_description() virtual const 🔗

覆盖这个方法可以定义可视化着色器编辑器的成员对话框中的相关自定义节点的描述。

定义这个方法是可选的。


String _get_func_code(mode: Mode, type: Type) virtual const 🔗

覆盖这个方法可以在每个着色器函数的开头添加着色器代码(单次)。着色器代码应该以字符串形式返回,可以包含多行(用 """ 构造多行字符串比较方便)。

如果有多个不同类型的自定义节点同时使用这个特性,则插入的顺序是未定义的。

你可以根据着色器模式 mode(见 Mode)和/或类型 type(见 Type)自定义生成的代码。

定义这个方法是可选的。


String _get_global_code(mode: Mode) virtual const 🔗

覆盖这个方法可以在全局着色器的开头添加着色器代码,定义你自己的标准库,提供可复用的方法、varying、常量、uniform 等内容。着色器代码应该以字符串形式返回,可以包含多行(用 """ 构造多行字符串比较方便)。

使用这个功能时请小心,因为可能造成与其他自定义节点的命名冲突,所以请务必为定义的实体提供唯一名称。

你可以根据着色器模式 mode(见 Mode)自定义生成的代码。

定义这个方法是可选的。


int _get_input_port_count() virtual const 🔗

覆盖该方法以定义关联的自定义节点的输入端口数。

定义该方法是必需的。如果没有被覆盖,则该节点没有输入端口。


Variant _get_input_port_default_value(port: int) virtual const 🔗

覆盖该方法可以定义指定输入端口的默认值。优先使用该方法而不是 VisualShaderNode.set_input_port_default_value

定义该方法是必需的。如果没有被覆盖,则该节点的输入端口没有默认值。


String _get_input_port_name(port: int) virtual const 🔗

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

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


PortType _get_input_port_type(port: int) virtual const 🔗

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

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


String _get_name() virtual const 🔗

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

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


int _get_output_port_count() virtual const 🔗

覆盖该方法以定义关联的自定义节点的输出端口数。

定义该方法是必需的。如果没有被覆盖,则该节点没有输出端口。


String _get_output_port_name(port: int) virtual const 🔗

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

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


PortType _get_output_port_type(port: int) virtual const 🔗

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

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


int _get_property_count() virtual const 🔗

覆盖这个方法来定义属性的数量。

定义这个方法是可选的。


int _get_property_default_index(index: int) virtual const 🔗

覆盖这个方法可以定义关联的自定义节点的属性的默认索引。

定义这个方法是可选的。


String _get_property_name(index: int) virtual const 🔗

覆盖这个方法可以定义关联的自定义节点的属性的名称。

定义这个方法是可选的。


PackedStringArray _get_property_options(index: int) virtual const 🔗

覆盖这个方法可以定义关联的自定义节点的下拉列表属性内的选项。

定义这个方法是可选的。


PortType _get_return_icon_type() virtual const 🔗

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

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


bool _is_available(mode: Mode, type: Type) virtual const 🔗

覆盖这个方法可以防止该节点出现在特定模式 mode(见 Mode)和/或类型 type(见 Type)的成员对话框中。

定义这个方法是可选的。未覆盖时为 true


bool _is_highend() virtual const 🔗

覆盖这个方法可以在 Visual Shader 编辑器的成员对话框中启用高端标记。

定义这个方法是可选的。未覆盖时为 false


int get_option_index(option: int) const 🔗

返回图表中下拉列表选项的选定索引。你可以使用该函数来定义 _get_code_get_global_code 中的特定行为。