VisualShader

继承: Shader < Resource < RefCounted < Object

带有可视化编辑器的自定义着色器程序。

描述

该类提供了一个类似图形的可视化编辑器,用于创建一个Shader。虽然VisualShaders不需要编码,但它们与脚本着色器共享相同的逻辑。它们使用可以相互连接的VisualShaderNodes来控制着色器的流程。视觉着色器图在幕后转换为脚本着色器。

属性

Vector2

graph_offset

Vector2(0, 0)

方法

void

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

void

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

void

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

bool

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

Error

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

void

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

void

detach_node_from_frame(type: Type, id: int)

void

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

VisualShaderNode

get_node(type: Type, id: int) const

Array[Dictionary]

get_node_connections(type: Type) const

PackedInt32Array

get_node_list(type: Type) const

Vector2

get_node_position(type: Type, id: int) const

int

get_valid_node_id(type: Type) const

bool

has_varying(name: String) const

bool

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

void

remove_node(type: Type, id: int)

void

remove_varying(name: String)

void

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

void

set_mode(mode: Mode)

void

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


枚举

enum Type: 🔗

Type TYPE_VERTEX = 0

顶点着色器,对顶点进行操作。

Type TYPE_FRAGMENT = 1

片段着色器,对片段(像素)进行操作。

Type TYPE_LIGHT = 2

用于光计算的着色器。

Type TYPE_START = 3

粒子着色器“开始”阶段的功能。

Type TYPE_PROCESS = 4

粒子着色器“进程”阶段的功能。

Type TYPE_COLLIDE = 5

粒子着色器的“碰撞”阶段(粒子碰撞处理程序)的函数。

Type TYPE_START_CUSTOM = 6

粒子着色器“开始”阶段的功能,具有自定义输出。

Type TYPE_PROCESS_CUSTOM = 7

粒子着色器“过程”阶段的功能,具有自定义输出。

Type TYPE_SKY = 8

3D环境天空的着色器。

Type TYPE_FOG = 9

一个计算着色器,为体积雾贴图的每个Froxel运行。

Type TYPE_MAX = 10

表示Type枚举的大小。


enum VaryingMode: 🔗

VaryingMode VARYING_MODE_VERTEX_TO_FRAG_LIGHT = 0

变化从Vertex函数传递给FramentLight函数。

VaryingMode VARYING_MODE_FRAG_TO_LIGHT = 1

变化从Frament函数传递给Light函数。

VaryingMode VARYING_MODE_MAX = 2

表示VaryingMode枚举的大小。


enum VaryingType: 🔗

VaryingType VARYING_TYPE_FLOAT = 0

可变是float类型。

VaryingType VARYING_TYPE_INT = 1

可变是int类型。

VaryingType VARYING_TYPE_UINT = 2

可变类型为unsignint

VaryingType VARYING_TYPE_VECTOR_2D = 3

可变是Vector2类型。

VaryingType VARYING_TYPE_VECTOR_3D = 4

可变是Vector3类型。

VaryingType VARYING_TYPE_VECTOR_4D = 5

可变是Vector4类型。

VaryingType VARYING_TYPE_BOOLEAN = 6

可变是bool类型。

VaryingType VARYING_TYPE_TRANSFORM = 7

可变是Transform3D类型。

VaryingType VARYING_TYPE_MAX = 8

表示VaryingType枚举的大小。


常量

NODE_ID_INVALID = -1 🔗

表示无效的VisualShader节点。

NODE_ID_OUTPUT = 0 🔗

表示VisualShader的输出节点。


属性说明

Vector2 graph_offset = Vector2(0, 0) 🔗

整个图的偏移向量。


方法说明

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

将指定的node添加到着色器。


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

向着色器添加一个新的可变值节点。


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

将给定节点附加到给定帧。


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

如果指定的节点和端口可以连接在一起,则返回true


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

连接指定的节点和端口。


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

连接指定的节点和端口,即使它们无法连接。此类连接无效,无法正常运行。


void detach_node_from_frame(type: Type, id: int) 🔗

从附加到的帧中分离给定节点。


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

连接指定的节点和端口。


VisualShaderNode get_node(type: Type, id: int) const 🔗

返回具有指定typeid的着色器节点实例。


Array[Dictionary] get_node_connections(type: Type) const 🔗

返回具有指定类型的连接节点列表。


PackedInt32Array get_node_list(type: Type) const 🔗

返回具有指定类型的着色器中所有节点的列表。


Vector2 get_node_position(type: Type, id: int) const 🔗

返回着色器图中指定节点的位置。


int get_valid_node_id(type: Type) const 🔗

返回可以添加到着色器图中的下一个有效节点ID。


bool has_varying(name: String) const 🔗

返回true如果着色器具有与给定name的变化。


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

如果指定的节点和端口连接存在,则返回true


void remove_node(type: Type, id: int) 🔗

从着色器中删除指定的节点。


void remove_varying(name: String) 🔗

删除具有给定name的变值节点。如果未找到具有此名称的节点,则打印错误。


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

用新类类型的节点替换指定节点。


void set_mode(mode: Mode) 🔗

设置此着色器的模式。


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

设置指定节点的位置。