VisualShaderNodeCustom

继承: VisualShaderNode < Resource < RefCounted < Object

用于定义自定义VisualShaderNode以在Visual Shader Editor中使用的虚拟类。

描述

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

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

@tool
extends VisualShaderNodeCustom
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 Editor的成员对话框中定义关联自定义节点的路径。路径可能看起来像"MyGame/MyFunctions/Noise"

定义此方法是可选的。如果未覆盖,该节点将归档在“插件”类别下。


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] + ";"

您可以根据shadermode(参见Mode)和/或type(参见Type)自定义生成的代码。

定义此方法是必需的


int _get_default_input_port(type: PortType) virtual const 🔗

重写此方法以定义默认情况下应连接的输入端口,当将连接从现有节点拖到图上的空白空间时创建此节点。

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


String _get_description() virtual const 🔗

重写此方法以在Visual Shader Editor的成员对话框中定义关联的自定义节点的描述。

定义此方法是可选的


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

重写此方法可将着色器代码添加到每个着色器函数的开头(一次)。着色器代码应作为字符串返回,可以有多行(为方便起见,可以使用""多行字符串构造)。

如果有多个不同类型的自定义节点使用此功能,则每次插入的顺序未定义。

您可以根据shadermode(参见Mode)和/或type(参见Type)自定义生成的代码。

定义此方法是可选的


String _get_global_code(mode: Mode) virtual const 🔗

重写此方法以在全局着色器之上添加着色器代码,以定义您自己的reusable methods, varyings, constants, uniforms等标准库。着色器代码应作为字符串返回,可以有多行(为了方便起见,可以使用""多行字符串构造)。

请注意此功能,因为它可能会导致与其他自定义节点的名称冲突,因此请务必为定义的实体提供唯一的名称。

您可以根据shadermode自定义生成的代码(参见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 🔗

重写此方法以在Visual Shader Editor的成员对话框和图形中定义关联的自定义节点的名称。

定义此方法是可选的,但建议使用。如果未覆盖,节点将命名为“未命名”。


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 🔗

重写此方法以在Visual Shader Editor的成员对话框中定义关联的自定义节点的返回图标。

定义此方法是可选的。如果未覆盖,则不显示返回图标。


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

重写此方法以防止节点在某些mode(参见Mode)和/或type(参见Type)的成员对话框中可见。

定义此方法是可选的。如果没有被覆盖,它是true


bool _is_highend() virtual const 🔗

重写此方法以在Visual Shader Editor的成员对话框中启用高端标记。

定义此方法是可选的。如果没有被覆盖,它是false


int get_option_index(option: int) const 🔗

返回图形中下拉列表选项的选定索引。您可以使用此函数定义_get_code()_get_global_code()中的特定行为。