Cg 标准函数库

846272329

贡献于2016-02-16

字数:0 关键词:

84 5. 调试函数(Debugging Function); 8.4.1 数学函数(Mathematical Functions) 表 4中列举了 Cg 标准函数库中所有的数学函数,这些数学函数用于执行数 学上常用计算,包括:三角函数、幂函数、园函数、向量和矩阵的操作函数。这 些函数都被重载,以支持标量数据和不同长度的向量作为输入参数。 函数 功能 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[]0,π 区间的角度值 all(x) 如果输入参数均不为 0,则返回 ture; 否则返回 flase。&&运算 any(x) 输入参数只要有其中一个不为 0,则返回 true。||运算 asin(x) 反正弦函数,输入参数取值区间为[]1,1− ,返 回角度值范围为 ,22 π π⎡ ⎤−⎢ ⎥⎣ ⎦ atan(x) 反正切函数,返回角度值范围为 ,22 π π⎡ ⎤−⎢ ⎥⎣ ⎦ atan2(y,x) 计算 y/x 的反正切值。实际上和 atan(x)函数 功能完全一样,至少输入参数不同。atan(x) = atan2(x, float(1))。 ceil(x) 对输入参数向上取整。例如:ceil(float(1.3)) , 其返回值为 2.0 clamp(x,a,b) 如果 x 值小于 a,则 返 回 a;如 果 x 值大于 b, 返回 b;否则,返回 x。 cos(x) 返回弧度 x 的余弦值。返回值范围为[]1,1− cosh(x) 双曲余弦(hyperbolic cosine)函数,计算 x 的双曲余弦值。 cross(A,B) 返回两个三元向量的叉积(cross product)。注 意,输入参数必须是三元向量! degrees(x) 输入参数为弧度值(radians),函数将其转换为 角度值(degrees) 1. 数学函数(Mathematical Functions); 2. 几何函数(Geometric Functions); 3. 纹理映射函数(Texture Map Functions); 4. 偏导数函数(Derivative Functions); Cg 标准函数库 : -- 来自《 GPU编程与CG语言GPU-Programming-AndCgLanguage-Primer》 85 determinant(m) 计算矩阵的行列式因子。 dot(A,B) 返回 A 和 B 的点积(dot product)。参数 A 和 B 可以是标量,也可以是向量(输入参数方面, 点积和叉积函数有很大不同)。 exp(x) 计算 xe 的值,e= 2.71828182845904523536 exp2(x) 计算 2x 的值 floor(x) 对输入参数向下取整。例如 floor(float(1.3)) 返回的值为 1.0;但 是 floor(float(-1.3))返回的 值为-2.0。该函数与 ceil(x)函数相对应。 fmod(x,y) 返回 x/y 的余数。如果 y 为 0,结果不可预料。 frac(x) Returns the fractional portion of a scalar or each vector component frexp(x, out exp) 将浮点数 x 分解为尾数和指数,即 x = m* 2^exp,返回 m,并将指数存入 exp 中; 如果 x 为 0,则尾数和指数都返回 0 isfinite(x) 判断标量或者向量中的每个数据是否是有限 数,如果是返回 true;否则返回 false;无限的 或者非数据(not-a-number NaN), isinf(x) 判断标量或者向量中的每个数据是否是无 限,如果是返回 true;否则返回 false; isnan(x) 判断标量或者向量中的每个数据是否是非数 据(not-a-number NaN),如果是返回 true;否 则返回 false; ldexp(x, n) 计算 2nx∗ 的值 lerp(a, b, f) 计算()1 f abf− ∗+∗ 或者 ()af ba+ ∗−的 值。即在下限 a 和上限 b 之间进行插值,f 表 示权值。注意,如果 a 和 b 是向量,则权值 f 必须是标量或者等长的向量。 lit(NdotL, NdotH, m) N 表示法向量;L 表示入射光向量;H 表示 半角向量;m 表示高光系数。 函数计算环境光、散射光、镜面光的贡献, 返回的 4 元向量: X 位表示环境光的贡献,总是 1.0; Y 位代表散射光的贡献,如果 0NL• < ,则 为 0;否则为 NL• Z 位代表镜面光的贡献,如果 0NL• < 或者 0NH•<,则位 0;否则为()mNH•; W 位始终位 1.0 86 log(x) 计算 ()ln x 的值,x 必须大于 0 log2(x) 计算 () 2log x 的值,x 必须大于 0 log10(x) 计算 () 10log x 的值,x 必须大于 0 max(a, b) 比较两个标量或等长向量元素,返回最大值。 min(a,b) 比较两个标量或等长向量元素,返回最小值。 modf(x, out ip) 在 Cg Reference Manual 中没有查到 mul(M, N) 计算两个矩阵相乘,如果 M 为 AxB 阶矩阵, N 为 BxC 阶矩阵,则返回 AxC 阶矩阵。下面 两个函数为其重载函数。 mul(M, v) 计算矩阵和向量相乘 mul(v, M) 计算向量和矩阵相乘 noise( x) 噪声函数,返回值始终在 0,1 之间;对于同 样的输入,始终返回相同的值(也就是说, 并不是真正意义上的随机噪声)。 pow(x, y) yx radians(x) 函数将角度值转换为弧度值 round(x) Round-to-nearest,或 closest integer to x 即四 舍五入。 rsqrt(x) X 的反平方根,x 必须大于 0 saturate(x) 如果 x 小于 0,返回 0;如果 x 大于 1,返回 1;否则,返回 x sign(x) 如果 x 大于 0,返回 1;如果 x 小于 0,返回 01;否则返回 0。 sin(x) 输入参数为弧度,计算正弦值,返回值范围 为[]1,1− sincos(float x, out s, out c) 该函数是同时计算 x 的 sin 值和 cos 值,其中 s=sin(x),c=cos(x)。该函数用于“同时需要 计算 sin 值和 cos 值的情况”,比分别运算要 快很多! sinh(x) 计算双曲正弦(hyperbolic sine)值。 smoothstep(min, max, x) 值 x 位于 min、max 区间中。如果 x=min,返 回 0;如果 x=max,返回 1;如果 x 在两者之 间,按照下列公式返回数据: 32min min2*()3*()max min max min xx− −−+−− step(a, x) 如果 x

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档