基本数据类型
- float
转换 float(4) 4.0 float(true) 1.0 float(false) 0.0
- init
int(1.0) 1 int(true) 1 int(false) 0
- bool
bool(0) false bool(1) true
矢量类型
- vec2 、vec3、vec4 浮点矢量
vec3 v3 = vec3(1.0, 1.2, 2.0)
vec2 v2 = vec2(v3) // 1.0, 1.2
vec4 v4 = vec4(1.0) // 1.0,1.0,1.0,1.0
- ivec2、 ivec3、ivec4 整型矢量
ivec2 v2 = vec3(3, 4)
- bvec2、bvec3、bvec4 布尔矢量
bvec4 v4 = bvec4(true, false, false, false)
矩阵
- mat2 mat3 mat4
2x2 3x3 4x4 浮点型矩阵
mat2 m2 = mat2( 1.3,1.4 , 1.2, 1.1) // [ 1.3, 1.2 , 1.4, 1.1]
分量名称
[
x,y,z,w
r,g,b,a,
s,t,p,q
]
数组
只支持一维数组
float floatArray[3]; // 声明长度是3位浮点类型的数组
const int size = 5;
int size5 = 5;
float floatArray[size] // 必须是常量
float floatArray[size5] //或报错
结构体
struct light {
vec4 color;
vec3 position;
}
light lt1, lt2; //声明 light类型 变量 lt1 lt2
lt1 = light(vec4(1.0,1.0,1.0,0.2), vec3(8.0,3.3, 1.5))
vec4 color = lt1.color
vec3 position = lt1.position
函数
函数需要提前声明类型
float luma(vec4 color) {
return color.r * 0.2 + color.g * 0.7 + color.b * 0.7;
}
attribute vec4 a_Color;
void main {
float result = luma(a_Color);
}
或者
float luma(vec4);
attribute vec4 a_Color;
void main {
float result = luma(a_Color);
}
float luma(vec4 color) {
return color.r * 0.2 + color.g * 0.7 + color.b * 0.7;
}
- 参数限定 in、out、const in、inout
//in 强制入参类型
float test(in vec3 color){
return 0.1;
}
//out
float test2(out float result){
result = 0.5;
return result;
}