1. 着色器语言基础类型 - 强类型语言
void main() {
float f = 10.0;
int i = 10;
bool b = true;
}
2. 矢量和矩阵数据类型
(1) 矢量
- vec2、vec3、vec4具有2、3、4个浮点数元素的矢量
- ivec2、ivec3、ivec4具有2、3、4个整型元素的矢量
- bec2、bec3、bec4具有2、3、4个布尔值元素的矢量
-
- 构造函数形式赋值,vec4 position = vec4(0.1, 0.2, 0.3, 1.0)
- x, y, z, w访问顶点坐标的分量
- s, t, p, q访问纹理坐标的分量
-
-
- position.x // 0.1
- position.xy // vec2(0.1, 0.2)
- position.yx // vec2(0.2, 0.1)
- position.xyz // vec3(0.1, 0.2, 0.3)
(2) 矩阵
- mat2、mat3、mat4具有22、33、4*4的浮点数元素矩阵
- 矩阵参数是列主序的
mat4 m = mat4(
1.0, 5.0, 9.0, 13.0,
2.0, 6.0, 10.0, 14.0,
3.0, 7.0, 11.0, 15.0,
4.0, 8.0, 12.0, 16.0,
)
3. 分支和循环
if(){}
if(){} else{}
if(){} else if(){} else{}
for(){}
while(){}
do{}while()
continue
break
discard
4. 内置函数
radians 角度转弧度
degress 弧度转角度
sin 正弦
cos 余弦
tan 正切
asin 反正弦
acos 反余弦
atan 反正切
pow 次方
exp 自然质数
log 对数
sqrt 开平方
inversesqrt 开平方的倒数
abs 绝对值
min 最小值
max 最大值
mod 取余数
sign 取符号
floor 向下取整
ceil 向上取整
clamp 限定范围
fract 获取小数部分

5. 存储限定词
const
attribute
- 只能出现在顶点着色器中,只能声明为全局变量,表示单个顶点的信息
unifrom
- 可以同时出现在顶点着色器和片元着色器中
- 只读类型,强调一致性
- 用来存储的是影响所有顶点的数据。如变换矩阵。
varying
精度限定
- 片元着色器中的float类型没有默认精度,所以使用浮点数类型数据的时候,需要修改默认精度
- 通过precision关键字来修改着色器的默认精度