——————造型函数—————-
(1)radians(deg) 角度变弧度
(2)degrees(radian) 弧度变角度
(3)sin(angle),cos(angle),tan(angle)
(4)pow(x,y) x的y次方
(5)exp(x) 指数
(6)sign(x) 符号,1,0或-1
(7)floor(x) 向负无穷取整
(8)ceil(x) 向正无穷取整
(9)fract(x) x-floor(x),即返回数的小数部分
(10)clamp(x, min, max) min(max(x, min), max),把x的值限制在min~max
(11)mix(x, y, a) x, y的线性混叠, x(1-a) + ya;
(12)step(edge, x) 对于任何小于edge(阈值)的值,返回0.0,大于阈值,则返回1.0
(13)smoothstep(x, y, a) a < x返回0.0,a>y返回1.0,否则返回0.0-1.0之间平滑的Hermite插值
———————几何函数————————-
(14)length(x) 向量长度,就是用平方根(sqrt)计算斜边
(15)distance(p0, p1) 两点距离, length(p0-p1);
(16)dot(float x, float y) dot(vec2 x, vec2 y) 点积,各分量分别相乘后相加(根据两个向量的方向返回一个0.0~1.0的值)
(17)cross(x, y) 差积,x[1]y[2]-y[1]x[2], x[2]y[0] - y[2]x[0], x[0]y[1] - y[0]x[1]
(18)normalize(x) 归一化, length(x)=1;
(19)faceforward(N, I, Nref) 如 dot(Nref, I)< 0则N, 否则 -N
(20)reflect(I, N) I的反射方向, I -2dot(N, I)N, N必须先归一化
(21)refract(I, N, eta) 折射,k=1.0-etaeta(1.0 - dot(N, I) dot(N, I)); 如k<0.0 则0.0,否则 eta*I - (eta*dot(N, I)+sqrt(k))*N
——————-矩阵函数————————-
(22)matrixCompMult(matX, matY) 矩阵相乘, 每个分量 自行相乘, 即 r[i][j] = x[i][j]y[i][j]; 矩阵线性相乘,直接用
(23)lessThan(vecX, vecY): 向量 每个分量比较 x < y
(24)lessThanEqual(vecX, vecY): 向量 每个分量比较 x<=y
(25)greaterThan(vecX, vecY): 向量 每个分量比较 x>y
(26)greaterThanEqual(vecX, vecY): 向量 每个分量比较 x>=y
(27)equal(vecX, vecY): 向量 每个分量比较 x==y
(28)notEqual(vecX, vexY): 向量 每个分量比较 x!=y
(29)any(bvecX): 只要有一个分量是true, 则true
(30)all(bvecX): 所有分量是true, 则true
(31)not(bvecX): 所有分量取反
(32)texture2D(sampler2D, coord) texture lookup
(33)texture2D(sampler2D, coord, bias) LOD bias, mip-mapped texture
(34)texture2DProj(sampler2D, coord)
(35)texture2DProj(sampler2D, coord, bias)
(36)texture2DLod(sampler2D, coord, lod)
(37)texture2DProjLod(sampler2D, coord, lod)
(38)textureCube(samplerCube, coord)
(39)textureCube(samplerCube, coord, bias)
(40)textureCubeLod(samplerCube, coord, lod)