VisualShaderNodeCustom¶
继承: VisualShaderNode < Resource < RefCounted < Object
用于定义自定义VisualShaderNode以在Visual Shader Editor中使用的虚拟类。
描述¶
通过继承这个类,你可以创建一个自定义的 VisualShader 脚本插件,该插件会自动添加到视觉着色器编辑器中。VisualShaderNode 的行为是通过重写提供的虚方法来定义的。
为了使该节点被注册为编辑器插件,你必须使用@tool注解,并为你的自定义脚本提供一个class_name。例如::
@tool
extends VisualShaderNodeCustom
class_name VisualShaderNodeNoise
方法¶
_get_category() virtual const |
|
_get_code(input_vars: Array[String], output_vars: Array[String], mode: Mode, type: Type) virtual const |
|
_get_default_input_port(type: PortType) virtual const |
|
_get_description() virtual const |
|
_get_func_code(mode: Mode, type: Type) virtual const |
|
_get_global_code(mode: Mode) virtual const |
|
_get_input_port_count() virtual const |
|
_get_input_port_default_value(port: int) virtual const |
|
_get_input_port_name(port: int) virtual const |
|
_get_input_port_type(port: int) virtual const |
|
_get_name() virtual const |
|
_get_output_port_count() virtual const |
|
_get_output_port_name(port: int) virtual const |
|
_get_output_port_type(port: int) virtual const |
|
_get_property_count() virtual const |
|
_get_property_default_index(index: int) virtual const |
|
_get_property_name(index: int) virtual const |
|
_get_property_options(index: int) virtual const |
|
_get_return_icon_type() virtual const |
|
_is_available(mode: Mode, type: Type) virtual const |
|
_is_highend() virtual const |
|
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_vars和output_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()中的特定行为。