Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
VisualShader¶
继承: Shader < Resource < RefCounted < Object
带有可视化编辑器的自定义着色器程序。
描述¶
该类提供了一个类似图形的可视化编辑器,用于创建 Shader。尽管 VisualShader 不需要编码,但它们与脚本着色器共享相同的逻辑。它们使用可以相互连接的 VisualShaderNode 来控制着色器的流。可视化着色器图在幕后被转换为脚本着色器。
教程¶
属性¶
|
方法¶
void |
add_node ( Type type, VisualShaderNode node, Vector2 position, int id ) |
void |
add_varying ( String name, VaryingMode mode, VaryingType type ) |
can_connect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port ) const |
|
connect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port ) |
|
void |
connect_nodes_forced ( Type type, int from_node, int from_port, int to_node, int to_port ) |
void |
disconnect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port ) |
get_node_connections ( Type type ) const |
|
get_node_list ( Type type ) const |
|
get_node_position ( Type type, int id ) const |
|
get_valid_node_id ( Type type ) const |
|
has_varying ( String name ) const |
|
is_node_connection ( Type type, int from_node, int from_port, int to_node, int to_port ) const |
|
void |
remove_node ( Type type, int id ) |
void |
remove_varying ( String name ) |
void |
replace_node ( Type type, int id, StringName new_class ) |
void |
|
void |
set_node_position ( Type type, int id, Vector2 position ) |
枚举¶
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
为体积雾贴图的每个片段体素运行的一种计算着色器。
Type TYPE_MAX = 10
代表 Type 枚举的大小。
enum VaryingMode:
VaryingMode VARYING_MODE_VERTEX_TO_FRAG_LIGHT = 0
Varying 从 Vertex
函数传到 Fragment
和 Light
函数。
VaryingMode VARYING_MODE_FRAG_TO_LIGHT = 1
Varying 从 Fragment
函数传到 Light
函数。
VaryingMode VARYING_MODE_MAX = 2
代表 VaryingMode 枚举的大小。
enum VaryingType:
VaryingType VARYING_TYPE_FLOAT = 0
Varying 的类型为 float。
VaryingType VARYING_TYPE_INT = 1
Varying 的类型为 int。
VaryingType VARYING_TYPE_UINT = 2
Varying 的类型为无符号 int。
VaryingType VARYING_TYPE_VECTOR_2D = 3
Varying 的类型为 Vector2。
VaryingType VARYING_TYPE_VECTOR_3D = 4
Varying 的类型为 Vector3。
VaryingType VARYING_TYPE_VECTOR_4D = 5
Varying 的类型为 Vector2。
VaryingType VARYING_TYPE_BOOLEAN = 6
Varying 的类型为 bool。
VaryingType VARYING_TYPE_TRANSFORM = 7
Varying 的类型为 Transform2D。
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, VisualShaderNode node, Vector2 position, int id )
向着色器中添加指定的节点 node
。
void add_varying ( String name, VaryingMode mode, VaryingType type )
向着色器中添加新的 varying 值节点。
bool can_connect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port ) const
如果指定节点和端口可以连接在一起,则返回 true
。
Error connect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port )
连接指定的节点和端口。
void connect_nodes_forced ( Type type, int from_node, int from_port, int to_node, int to_port )
连接指定的节点和端口,即使它们无法连接。这样的连接是无效的,将不能正常工作。
void disconnect_nodes ( Type type, int from_node, int from_port, int to_node, int to_port )
连接指定的节点和端口。
VisualShaderNode get_node ( Type type, int id ) const
返回具有指定 type
和 id
的着色器节点实例。
Dictionary[] get_node_connections ( Type type ) const
返回具有指定类型的连接节点的列表。
PackedInt32Array get_node_list ( Type type ) const
返回着色器中具有指定类型的所有节点的列表。
Vector2 get_node_position ( Type type, int id ) const
返回指定节点在着色器图中的位置。
int get_valid_node_id ( Type type ) const
返回能够加入到着色器图中的下一个有效节点 ID。
bool has_varying ( String name ) const
如果着色器中存在名为 name
的 varying 则返回 true
。
bool is_node_connection ( Type type, int from_node, int from_port, int to_node, int to_port ) const
如果指定的节点和端口连接存在,返回 true
。
void remove_node ( Type type, int id )
从着色器中删除指定的节点。
void remove_varying ( String name )
返回名为 name
的 varying 值节点。如果不存在该名称的节点则输出错误。
void replace_node ( Type type, int id, StringName new_class )
将指定节点替换为新类型的节点。
void set_mode ( Mode mode )
设置该着色器的模式。
void set_node_position ( Type type, int id, Vector2 position )
设置指定节点的位置。