UnityShader10:CG标准函数库

 

一、基础数学函数

  • abs(x):绝对值
  • ceil(x):向上取整
  • floor(x):向下取整
  • round(x):四舍五入
  • frac(x):仅保留小数部分
  • sign(x):得到 x 的符号,正数则返回1,否则返回0
  • step(a, x):如果 x ≥ a 返回1,否则返回0
  • fmod(x,y):计算 x%y
  • clamp(x, a, b):将 x 的值截取到 [a, b] 的范围内
  • saturate(x):将 x 的值截取到 [0, 1] 的范围内
  • lerp(a, b, k):计算 a + k(b-a),著名的插值函数
  • max(a, b):取 a 和 b 的最大值
  • min(a, b):取 a 和 b 的最小值
  • cos(x):余弦值,值域 [-1,1]
  • sin(x):正弦值,值域 [-1,1]
  • tan(x):正切值
  • sincos(float x, out s, out c):同时计算 cos(x),和 sin(x),前者返回到 c,后者返回到 s,一个字快
  • acos(x):反余切函数,定义域 [-1,1],值域 [0,\pi ]
  • asin(x):反正弦函数,定义域 [-1,1],值域 [-\pi,\pi ]
  • atan(x):反正切函数,值域 [-\pi,\pi ],同等于 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):计算 e^xe 约等于 2.71828
  • exp2(x):计算 2^x
  • ldexp(x, n):计算 x\cdot 2^n
  • log(x):计算 \ln x
  • log2(x):计算 \log_2x
  • log10(x):计算 \log_{10}(x)
  • pow(x, y):计算 x^y
  • rsqrt(x):计算  \frac{1}{\sqrt{x}}
  • sqrt(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为底的尾数和指数(科学计数法),即 x = m \cdot 2^i, 返回 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 平滑插值公式,计算方法为 \text { smoothstep }(x)=3 t^{2}-2 t^{3},其中 t = \frac{x-min}{max-min}
  • ddx(a):近似a关于屏幕空间x轴的偏导数
  • ddx(b):近似a关于屏幕空间y轴的偏导数

 

三、几何函数

  • distance(p1, p2):两点欧几里得距离
  • faceforward(N, A, B):如果 A\cdot B< 0,返回 N,否则返回 -N
  • length(v):得到向量长度
  • normalize(v):得到单位长度
  • reflect(I, N):根据入射光方向 I 和表面法向量 N 计算反射向量,仅对三元向量有效
  • refract(I, N, eta):根据入射光线方向 I、表面法向量 N 和折射相对系数 eta 计算折射向量,如果对给定的 eta、I 和 N 之间的角度太大,返回 (0, 0, 0),只对三元向量有效

 

四、纹理映射函数

可以后面再了解,实时更新

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值