Godot版本:4.2.2
文档:[Godot Engine Shaders Tutorials]
着色器
- vertex:顶点着色器
- fragment:片段着色器
GDShader模式
- shader type:有canvas_item,spatial,particle,sky,fog.其中2D Shader使用canvas_item,3D Shader使用spatial,其他类型不常用
GDShader数据类型
- 普通数据类型
- int:整型
- float:浮点型
- bool:布尔
GDShader
void vertex() {
int my_int = 10;
my_int = -10;
// 将浮点型强转为整型
my_int = int(9.);
// 浮点型10.0可以忽略0不写,10.和10.0一样
float my_float = 10.;
my_float = -10.23;
my_float = float(10);
bool my_bool = false;
my_bool = true;
}GDShader Vector
- Vector数据
- vec2:vec2(1.0, 2.0);
- vec3:vec3(1.0, 2.0, 3.0);
- vec4:vec4(1.0, 2.0, 3.0, 4.0);
- ivec4:ivec4(1, 2, 3, 4); ivec2,ivec3同理
- bvec4:bvec4(false, true, true, false); ivec2,ivec3同理
GDShader
void vertex() {
vec2 my_vec2 = vec2(1., 2.);
vec4 my_vec4 = vec4(1., 2., 3.,4.);
my_vec4 = vec4(1.,my_vec2,4.);
ivec4 my_ivec4 = ivec4(1, 2, 3, 4);
bvec4 my_bvec4 = bvec4(false, true, true, false);
}- Vector数据Swizzing
GDShader
void vertex() {
vec2 my_vec2 = vec2(1., 2.);
vec3 my_vec3 = vec3(1., 2., 3.);
vec4 my_vec4 = vec4(1., 2., 3.,4.);
my_vec3.xy = my_vec4.xy;
my_vec3.yz = my_vec4.zw;
my_vec3.rgb = my_vec4.xyw;
my_vec2.xy = my_vec3.bb;
// ...
}TIME
- 全局时间参数,在着色器中使用TIME会出现动态的效果
Uniform
- 这个字段可以从外部传进参数

- hint_rang:可以指定范围,第三个参数是最小间隔
- source_color:可以调用颜色面板
- grounp_uniform:可以对参数分类,二级分类等

