1. shader
1.1. glsl 内置函数
1.1.1. 1. 三角函数
这类主要是和角度相关的函数
| 函数 | 描述 |
|---|---|
| sin(x) | 正弦函数 |
| cos(x) | 余弦函数 |
| tan(x) | 正切函数 |
| asin(x) | 反正弦函数 |
| acos(x) | 反余弦函数 |
| atan(x) | 反正切函数 |
| acot(x) | 反余切函数 |
| radians(x) | 角度转换为弧度 |
| degrees(x) | 弧度转换为角度 |
1.1.2. 2. 数学函数
这类主要是对指数对数幂函数的操作
| 函数 | 描述 |
|---|---|
| pow(x,y) | x的y次方。如果x小于0,结果是未定义的。同样,如果x=0并且y<=0,结果也是未定义的。 |
| exp(x) | e的x次方 |
| log(x) | 计算满足x等于e的y次方的y的值。如果x的值小于0,结果是未定义的。 |
| exp2(x) | exp2(x) 计算2的x次方 |
| log2(x) | 计算满足x等于2的y次方的y的值。如果x的值小于0,结果是未定义的。 |
| sqrt(x) | 计算x的开方。如果x小于0,结果是未定义的。 |
| inversesqrt(x) | 计算x的开方之一的值,如果x小于等于0,结果是未定义的。 |
1.1.3. 3. 常用函数
常用函数,和js中的内置函数很像,必须掌握
| 函数 | 描述 |
|---|---|
| abs(x) | 返回x的绝对值 |
| sign(x) | 如果x>0,返回1.0;如果x=0,返回0,如果x<0,返回-1.0 |
| floor(x) | 返回小于等于x的最大整数值 |
| ceil(x) | 返回大于等于x的最小整数值 |
| fract(x) | 返回x-floor(x),即返回x的小数部分 |
| mod(x, y) | 返回x和y的模 |
| min(x, y) | 返回x和y的值较小的那个值 |
| max(x, y) | 返回x和y的值较大的那个值 |
| clamp(x, minVal, maxVal) | 将x值钳于minVal和maxVal之间,意思就是当x<minVal时返回minVal,当x>maxVal时返回maxVal,当x在minVal和maxVal之间时,返回x |
| mix(x, y, a) | 返回线性混合的x和y,如:x(1−a)+ya |
| step(edge, x) | step(edge, x) 如果x < edge,返回0.0,否则返回1.0 |
| smoothstep(edge0, edge1, x) | 如果x <= edge0,返回0.0 ;如果x >= edge1 返回1.0;如果edge0 < x < edge1,则执行0~1之间的平滑埃尔米特差值。如果edge0 >= edge1,结果是未定义的。 |
1.1.4. 4. 几何函数
这类主要是与长度、距离、向量等相关的函数
| 函数 | 描述 |
|---|---|
| length(x) | 返回向量x的长度 |
| distance(p0,p1) | 计算向量p0,p1之间的距离 |
| dot | 向量x,y之间的点积 |
| cross(x, y) | 向量x,y之间的叉积 |
| normalize(x) | 标准化向量,返回一个方向和x相同但长度为1的向量 |
| faceforward(N, I, Nref) | 如果Nref和I的点积小于0,返回N;否则,返回-N; |
| reflect(I, N) | 返回反射向量 |
| refract(I, N, eta) | 返回折射向量 |
1.1.5. 5. 矩阵函数
| 函数 | 描述 |
|---|---|
| matrixCompMult(A, B) | 逐元素乘法 |
1.1.6. 6. 向量函数
| 函数 | 描述 |
|---|---|
| lessThan(a, b) | 与 逐元素小于 |
| lessThanEqual(a, b) | 与 逐元素小于等于 |
| greaterThan(a, b) | 与 逐元素大于 |
| greaterThanEqual(a, b) | 与 逐元素大于等于 |
| equal(a, b) | 与 逐元素相等 |
| notEqual(a, b) | 与 逐元素不等于 |
| any(a) | 任一元素为true,则为true |
| all(a) | 所有元素为true 则为true |
| not(a) | 逐元素取补 |
1.1.7. 7. 纹理函数
| 函数 | 描述 |
|---|---|
| texture2D(texture, uv) | 在二维纹理(texture)中按照 uv 坐标获取纹素 |