VisualShaderNodeCustom
Inherits: VisualShaderNode < Resource < Reference < Object
Virtual class to define custom VisualShaderNodes for use in the Visual Shader Editor.
Description
By inheriting this class you can create a custom VisualShader script addon which will be automatically added to the Visual Shader Editor. The VisualShaderNode‘s behavior is defined by overriding the provided virtual methods.
In order for the node to be registered as an editor addon, you must use the tool
keyword and provide a class_name
for your custom script. For example:
tool
extends VisualShaderNodeCustom
class_name VisualShaderNodeNoise
Tutorials
Methods
_get_category ( ) virtual | |
_get_code ( Array input_vars, Array output_vars, int mode, int type ) virtual | |
_get_description ( ) virtual | |
_get_global_code ( int mode ) virtual | |
_get_input_port_count ( ) virtual | |
_get_input_port_name ( int port ) virtual | |
_get_input_port_type ( int port ) virtual | |
_get_name ( ) virtual | |
_get_output_port_count ( ) virtual | |
_get_output_port_name ( int port ) virtual | |
_get_output_port_type ( int port ) virtual | |
_get_return_icon_type ( ) virtual | |
_get_subcategory ( ) virtual |
Method Descriptions
- 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.
Override this method to define the actual shader code of the associated custom node. The shader code should be returned as a string, which can have multiple lines (the """
multiline string construct can be used for convenience).
The input_vars
and output_vars
arrays contain the string names of the various input and output variables, as defined by _get_input_*
and _get_output_*
virtual methods in this class.
The output ports can be assigned values in the shader code. For example, return output_vars[0] + " = " + input_vars[0] + ";"
.
You can customize the generated code based on the shader mode
(see Mode) and/or type
(see Type).
Defining this method is required.
- String _get_description ( ) virtual
Override this method to define the description of the associated custom node in the Visual Shader Editor’s members dialog.
Defining this method is optional.
Override this method to add shader code on top of the global shader, to define your own standard library of reusable methods, varyings, constants, uniforms, etc. The shader code should be returned as a string, which can have multiple lines (the """
multiline string construct can be used for convenience).
Be careful with this functionality as it can cause name conflicts with other custom nodes, so be sure to give the defined entities unique names.
You can customize the generated code based on the shader mode
(see Mode).
Defining this method is optional.
- int _get_input_port_count ( ) virtual
Override this method to define the amount of input ports of the associated custom node.
Defining this method is required. If not overridden, the node has no input ports.
Override this method to define the names of input ports of the associated custom node. The names are used both for the input slots in the editor and as identifiers in the shader code, and are passed in the input_vars
array in _get_code.
Defining this method is optional, but recommended. If not overridden, input ports are named as "in" + str(port)
.
Override this method to define the returned type of each input port of the associated custom node (see PortType for possible types).
Defining this method is optional, but recommended. If not overridden, input ports will return the VisualShaderNode.PORT_TYPE_SCALAR type.
- String _get_name ( ) virtual
Override this method to define the name of the associated custom node in the Visual Shader Editor’s members dialog and graph.
Defining this method is optional, but recommended. If not overridden, the node will be named as “Unnamed”.
- int _get_output_port_count ( ) virtual
Override this method to define the amount of output ports of the associated custom node.
Defining this method is required. If not overridden, the node has no output ports.
Override this method to define the names of output ports of the associated custom node. The names are used both for the output slots in the editor and as identifiers in the shader code, and are passed in the output_vars
array in _get_code.
Defining this method is optional, but recommended. If not overridden, output ports are named as "out" + str(port)
.
Override this method to define the returned type of each output port of the associated custom node (see PortType for possible types).
Defining this method is optional, but recommended. If not overridden, output ports will return the VisualShaderNode.PORT_TYPE_SCALAR type.
- int _get_return_icon_type ( ) virtual
Override this method to define the return icon of the associated custom node in the Visual Shader Editor’s members dialog.
Defining this method is optional. If not overridden, no return icon is shown.
- 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).