VisualShader

继承: Shader < Resource < RefCounted < Object

A custom shader program with a visual editor.

描述

This class provides a graph-like visual editor for creating a Shader. Although VisualShader s do not require coding, they share the same logic with script shaders. They use VisualShaderNode s that can be connected to each other to control the flow of the shader. The visual shader graph is converted to a script shader behind the scenes.

属性

方法

voidadd_node ( type: Type, node: VisualShaderNode, position: Vector2, id: int )
voidadd_varying ( name: String, mode: VaryingMode, type: VaryingType )
voidattach_node_to_frame ( type: Type, id: int, frame: int )
boolcan_connect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int ) const1
Errorconnect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )
voidconnect_nodes_forced ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )
voiddetach_node_from_frame ( type: Type, id: int )
voiddisconnect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )
VisualShaderNodeget_node ( type: Type, id: int ) const1
Array Dictionaryget_node_connections ( type: Type ) const1
PackedInt32Arrayget_node_list ( type: Type ) const1
Vector2get_node_position ( type: Type, id: int ) const1
intget_valid_node_id ( type: Type ) const1
boolhas_varying ( name: String ) const1
boolis_node_connection ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int ) const1
voidremove_node ( type: Type, id: int )
voidremove_varying ( name: String )
voidreplace_node ( type: Type, id: int, new_class: StringName )
voidset_mode ( mode: Mode )
voidset_node_position ( type: Type, id: int, position: Vector2 )

枚举

enum Type:

Type TYPE_VERTEX = 0

A vertex shader, operating on vertices.

Type TYPE_FRAGMENT = 1

A fragment shader, operating on fragments (pixels).

Type TYPE_LIGHT = 2

A shader for light calculations.

Type TYPE_START = 3

A function for the "start" stage of particle shader.

Type TYPE_PROCESS = 4

A function for the "process" stage of particle shader.

Type TYPE_COLLIDE = 5

A function for the "collide" stage (particle collision handler) of particle shader.

Type TYPE_START_CUSTOM = 6

A function for the "start" stage of particle shader, with customized output.

Type TYPE_PROCESS_CUSTOM = 7

A function for the "process" stage of particle shader, with customized output.

Type TYPE_SKY = 8

A shader for 3D environment's sky.

Type TYPE_FOG = 9

A compute shader that runs for each froxel of the volumetric fog map.

Type TYPE_MAX = 10

Represents the size of the Type enum.


enum VaryingMode:

VaryingMode VARYING_MODE_VERTEX_TO_FRAG_LIGHT = 0

Varying is passed from Vertex function to Fragment and Light functions.

VaryingMode VARYING_MODE_FRAG_TO_LIGHT = 1

Varying is passed from Fragment function to Light function.

VaryingMode VARYING_MODE_MAX = 2

Represents the size of the VaryingMode enum.


enum VaryingType:

VaryingType VARYING_TYPE_FLOAT = 0

Varying is of type float.

VaryingType VARYING_TYPE_INT = 1

Varying is of type int.

VaryingType VARYING_TYPE_UINT = 2

Varying is of type unsigned int.

VaryingType VARYING_TYPE_VECTOR_2D = 3

Varying is of type Vector2.

VaryingType VARYING_TYPE_VECTOR_3D = 4

Varying is of type Vector3.

VaryingType VARYING_TYPE_VECTOR_4D = 5

Varying is of type Vector4.

VaryingType VARYING_TYPE_BOOLEAN = 6

Varying is of type bool.

VaryingType VARYING_TYPE_TRANSFORM = 7

Varying is of type Transform3D.

VaryingType VARYING_TYPE_MAX = 8

Represents the size of the VaryingType enum.


常量

NODE_ID_INVALID = -1

Indicates an invalid VisualShader node.

NODE_ID_OUTPUT = 0

Indicates an output node of VisualShader.


属性说明

Vector2 graph_offset = Vector2(0, 0)

  • void set_graph_offset ( value: Vector2 )
  • Vector2 get_graph_offset ( )

The offset vector of the whole graph.


方法说明

void add_node ( type: Type, node: VisualShaderNode, position: Vector2, id: int )

Adds the specified node to the shader.


void add_varying ( name: String, mode: VaryingMode, type: VaryingType )

Adds a new varying value node to the shader.


void attach_node_to_frame ( type: Type, id: int, frame: int )

Attaches the given node to the given frame.


bool can_connect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int ) const1

Returns true if the specified nodes and ports can be connected together.


Error connect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )

Connects the specified nodes and ports.


void connect_nodes_forced ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )

Connects the specified nodes and ports, even if they can't be connected. Such connection is invalid and will not function properly.


void detach_node_from_frame ( type: Type, id: int )

Detaches the given node from the frame it is attached to.


void disconnect_nodes ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int )

Connects the specified nodes and ports.


VisualShaderNode get_node ( type: Type, id: int ) const1

Returns the shader node instance with specified type and id.


Array Dictionary get_node_connections ( type: Type ) const1

Returns the list of connected nodes with the specified type.


PackedInt32Array get_node_list ( type: Type ) const1

Returns the list of all nodes in the shader with the specified type.


Vector2 get_node_position ( type: Type, id: int ) const1

Returns the position of the specified node within the shader graph.


int get_valid_node_id ( type: Type ) const1

Returns next valid node ID that can be added to the shader graph.


bool has_varying ( name: String ) const1

Returns true if the shader has a varying with the given name.


bool is_node_connection ( type: Type, from_node: int, from_port: int, to_node: int, to_port: int ) const1

Returns true if the specified node and port connection exist.


void remove_node ( type: Type, id: int )

Removes the specified node from the shader.


void remove_varying ( name: String )

Removes a varying value node with the given name. Prints an error if a node with this name is not found.


void replace_node ( type: Type, id: int, new_class: StringName )

Replaces the specified node with a node of new class type.


void set_mode ( mode: Mode )

Sets the mode of this shader.


void set_node_position ( type: Type, id: int, position: Vector2 )

Sets the position of the specified node.

2

本方法通常需要用户覆盖才能生效。

1

本方法无副作用,不会修改该实例的任何成员变量。

3

本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。

4

本方法用于构造某个类型。

5

调用本方法无需实例,可直接使用类名进行调用。

6

本方法描述的是使用本类型作为左操作数的有效运算符。

7

这个值是由下列位标志构成位掩码的整数。

8

无返回值。