# 【UnityShader常用数学函数】

# 函数

  • sin(x) - 返回x的正弦值。

  • cos(x) - 返回x的余弦值。

  • tan(x) - 返回x的正切值。

  • asin(x) - 返回x的反正弦值。

  • acos(x) - 返回x的反余弦值。

  • atan(x) - 返回x的反正切值。

  • atan2(y,x) - 返回y/x的反正切值。

  • sqrt(x) - 返回x的平方根。

  • pow(x,y) - 返回x的y次方。

  • exp(x) - 返回e的x次幂。

  • log(x) - 返回x的自然对数。

  • abs(x) - 返回x的绝对值。

  • min(x,y) - 返回x和y中较小的值。

  • max(x,y) - 返回x和y中较大的值。

  • lerp(x,y,t) - 返回从x到y之间的线性插值,t控制插值位置。

  • ceil(x) - 返回不小于x的最小整数。

  • floor(x) - 返回不大于x的最大整数。

  • round(x) - 返回最接近x的整数。

  • sign(x) - 返回x的符号。如果x大于0,则返回1;如果x小于0,则返回-1;如果x等于0,则返回0。

  • fmod(x,y) - 返回x/y的余数。

  • frac(x) - 返回x的小数部分。

  • modf(x,out) - 分别返回x的整数部分和小数部分,将整数部分存储在out中。

  • clamp(x,min,max) - 返回一个值,该值被限制在min和max之间。

  • smoothstep(min,max,x) - 返回一个值,该值在min和max之间,如果x小于min,则返回0,如果x大于max,则返回1;否则返回一个在0和1之间的平滑过渡值。

  • step(edge,x) - 如果x小于边缘,则返回0,否则返回1。

  • saturate(x) - 返回一个值,该值被限制在0和1之间。

  • lerp(x,y,a) - 返回从x到y之间的线性插值,a控制插值位置。

  • mix(x,y,a) - 等价于 lerp(x,y,a)。

  • dot(x,y) - 返回向量x和y的点积。

  • cross(x,y) - 返回向量x和y的叉积。

  • normalize(x) - 返回向量x的单位向量。

  • length(x) - 返回向量x的长度。

  • distance(x,y) - 返回向量x和y之间的距离。

  • transpose(m) - 返回矩阵m的转置矩阵。

  • determinant(m) - 返回矩阵m的行列式。

  • inverse(m) - 返回矩阵m的逆矩阵。

  • reflect(i,n) - 返回入射向量i关于法向量n的反射向量。

  • refract(i,n,eta) - 返回入射向量i经过介质n与介质之间折射率比为eta的界面发生折射后的折射向量。

  • faceforward(n,i,nref) - 如果向量i和法向量n之间的夹角小于90度,则返回n,否则返回-n。

  • mod(a,b) - 返回a除以b的余数。

  • exp2(x) - 返回2的x次幂。

  • log10(x) - 返回x的以10为底的对数。

  • pow(x,y) - 返回x的y次方。

  • rsqrt(x) - 返回x的平方根的倒数。

  • smoothstep(min,max,x) - 返回一个值,该值在min和max之间,如果x小于min,则返回0,如果x大于max,则返回1;否则返回一个在0和1之间的平滑过渡值。

  • step(edge,x) - 如果x小于边缘,则返回0,否则返回1。

  • fwidth(p) - 返回向量p相对于像素在屏幕上移动时的变化率,通常用于计算抗锯齿。

  • mul(pos,矩阵) - 把点进行应用矩阵转换,Unity默认的矩阵都是 mul(矩阵,pos) 矩阵放在左侧的方式。

# 数学算法

  • 0~1 转 -1~1 (x * 2 - 1)

  • -1 ~ 1 转 0 ~ 1 (x * 0.5 + 0.5)