一、基础数学函数
- abs(x):绝对值
- ceil(x):向上取整
- floor(x):向下取整
- round(x):四舍五入
- frac(x):仅保留小数部分
- sign(x):得到 x 的符号,正数则返回1,否则返回0
- step(a, x):如果 x ≥ 1 返回1,否则返回0
- fmod(x,y):计算 x%y
- clamp(x, a, b):将 x 的值截取到 [a, b] 的范围内
- saturate(x):将 x 的值截取到 [0, 1] 的范围内
- lerp(a, b, k):计算
,著名的插值函数
- max(a, b):取 a 和 b 的最大值
- min(a, b):取 a 和 b 的最小值
- cos(x):余弦值,值域
- sin(x):正弦值,值域
- tan(x):正切值
- sincos(float x, out s, out c):同时计算 cos(x),和 sin(x),前者返回到 c,后者返回到 s,一个字快
- acos(x):反余切函数,定义域
,值域
- asin(x):反正弦函数,定义域
,值域
- atan(x):反正切函数,值域
,同等于 atan2(x, 1.0)
- atan2(y, x):计算y/x的反正切值
- all(x):如果输入参数均不为 0,则返回 ture; 否则返回 false
- any(x):输入参数只要有其中一个不为 0,则返回 true
- cross(A, B):向量叉积,输入参数必须是三元向量
- dot(A, B):向量点积,允许 A, B 是标量
- degrees(x):输入弧度值,输出角度值
- radians(x):输入角度值,输出弧度值
- exp(x):计算
,
约等于 2.71828
- exp2(x):计算
- ldexp(x, n):计算
- log(x):计算
- log2(x):计算
- log10(x):计算
- pow(x, y):计算
- rsqrt(x):计算
- sqrt(x):计算
,其计算速度可能没有 rsqrt(x) · x 快
- modf(x, out ip):把 x 分解成整数和分数两部分,每部分符号都和 x 相同,整数部分保存在 ip 中,分数部分由函数返回
- mul(M, N):计算矩阵 M 和矩阵 N 的积,矩阵 M 和列向量 v 的积,或者行向量 v 和矩阵 M 的积
- transpose(M):矩阵转置
二、高级数学函数
这一部分函数前期学习应该都用不到,很多是为了实现一些算法
- cosh(x):双曲余弦(hyperbolic cosine)函数,计算 x 的双曲余弦值
- sinh(x):双曲正弦
- tanh(x):双曲正切
- determinant(m):计算矩阵的行列式因子
- frexp(x, out i):将浮点数 x 拆解为以2为底的尾数和指数(科学计数法),即
, 返回 m,并将指数存入 i 中;如果 x 为0,则尾数和指数都返回0
- isfinite(x):判断标量或者向量中的每个数据是否是有限数,如果是返回 true;否则返回 false
- isinf(x):判断标量或者向量中的每个数据是否是无限数,如果是返回 true;否则返回 false
- isnan(x):判断标量或者向量中的每个数据是否是非数据(No a number,NaN),如果是返回 true;否则返回 false
- noise(x):根据它的参数类型,这个函数可以是一元、二元或三元噪音函数,返回的值在0和1之间,并且通常与给定的输入值一样
- smoothstep(min, max, x):smoothstep 平滑插值公式,计算方法为
,其中
- ddx(a):近似a关于屏幕空间x轴的偏导数
- ddx(b):近似a关于屏幕空间y轴的偏导数
三、几何函数
- distance(p1, p2):两点欧几里得距离
- faceforward(N, A, B):如果
,返回 N,否则返回 -N
- length(v):得到向量长度
- normalize(v):得到单位长度
- reflect(I, N):根据入射光方向 I 和表面法向量 N 计算反射向量,仅对三元向量有效
- refract(I, N, eta):根据入射光线方向 I、表面法向量 N 和折射相对系数 eta 计算折射向量,如果对给定的 eta、I 和 N 之间的角度太大,返回 (0, 0, 0),只对三元向量有效
四、纹理映射函数
可以后面再了解,实时更新