abs(x) 返回输入参数的绝对值
acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值
all(x) 如果输入参数均不为0,则返回ture; 否则返回flase。&&运算
any(x) 输入参数只要有其中一个不为0,则返回true。
asin(x) 反正弦函数,输入参数取值区间为[−1,1],返回角度值范围为, [−π/2,π/2]
atan(x) 反正切函数,返回角度值范围为[−π/2,π/2]
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)。注意,输入参数必须是三元向量!
dot(A,B) 返回A和B的点积(dot product)。参数A和B可以是标量,也可以是向量
mul(M, N) 矩阵M和矩阵N的积
mul(M, v) 矩阵M和列向量v的积
mul(v, M) 行向量v和矩阵M的积
Tips:
A*B 表示向量A,B的分量相乘。如:(2,1,3) * (1,2,2) = (2,2,6)
dot 点积,得到是一个标量。 如:(1,3,1)*(2,1,0)=1*2+3*1+1*0=5
cross 叉积,得到一个垂直于向量 A,B 的向量。
mul 矩阵参与的运算,一般用来空间变换。
a=(x1,y1,z1),b=(x2,y2,z2)a⋅b=x1x2+y1y2+z1z2=|a||b|cosθa×b=(y1z2−z1y2)i+(z1y2−x1z2)j+(x1y2−y1x2)k
degrees(x) 输入参数为弧度值(radians),函数将其转换为角度值(degrees)
determinant(m) 计算矩阵的行列式因子。
exp(x) 计算 ex的值,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) 返回标量或矢量的小数
frexp(x, out i) 将浮点数x分解为尾数和指数,即x=m∗2i, 返回m,并将指数存入i中;如果x为0,则尾数和指数都返回0
fwidth(x) 只能用在fragment shaderm 表示X和Y方向偏导数的绝对值的和,而单方向的偏导可以通过ddx和ddy, 即 abs(ddx(p)+ddy(p))
isfinite(x) 判断标量或者向量中的每个数据是否是有限数,如果是返回true;否则返回false;
isinf(x) 判断标量或者向量中的每个数据是否是无限,如果是返回true;否则返回false;
isnan(x) 判断标量或者向量中的每个数据是否是非数据(not-a-number NaN),如果是返回true;否则返回false;
ldexp(x, n) 计算 x∗2n的值
lerp(a, b, f) 计算(1−f)∗a+b∗f或者a+f∗(b−a)的值。即在下限a和上限b之间进行插值,f表示权值。注意,如果a和b是向量,则权值f必须是标量或者等长的向量。
lit(NdotL, NdotH, m) N表示法向量;L表示入射光向量;H表示半角向量;m表示高光系数。 函数计算环境光、散射光、镜面光的贡献,返回的4元向量。 X位表示环境光的贡献,总是1.0; Y位代表散射光的贡献,如果 N∙L<0,则为0;否则为N∙L Z位代表镜面光的贡献,如果N∙L<0 或者N∙H<0,则位0;否则为(N∙L)m;W位始终位1.0
log(x) 计算 ln(x)的值,x必须大于0
log2(x) 计算 log2(x) 的值,x必须大于0
log10(x) 计算 log10(x) 的值,x必须大于0
max(a, b) 比较两个标量或等长向量元素,返回最大值。
min(a, b) 比较两个标量或等长向量元素,返回最小值。
modf(x, out ip) 把x分解成整数和分数两部分,每部分都和x有着相同的符号,整数部分被保存在ip中,分数部分由函数返回
noise(x) 根据它的参数类型,这个函数可以是一元、二元或三元噪音函数。返回的值在0和1之间,并且通常与给定的输入值一样
pow(x, y) x的y次方,即xy
radians(x) 函数将角度值转换为弧度值round(x)返回四舍五入值。
rsqrt(x) x的平方根的倒数,即 1x√。 x必须大于0
saturate(x) 把x限制到[0,1]之间sign(x)如果x>0则返回1;否则返回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) 计算x的双曲正弦
smoothstep(min, max, x) 值x位于min、max区间中。如果x=min,返回0;如果x=max,返回1;如果x在两者之间返回x
HLSL | GLSL |
---|---|
ddx | dFdx |
atan2(y,x) | atan(x,y) |
ddx_coarse | dFdxCoarse |
ddx_fine | dFdxFine |
ddy | dFdy |
ddy_coarse | dFdyCoarse |
ddy_fine | dFdyFine |
EvaluateAttributeAtCentroid | interpolateAtCentroid |
EvaluateAttributeAtSample | interpolateAtSample |
EvaluateAttributeSnapped | interpolateAtOffset |
frac | fract |
lerp | mix |
mad | fma |
saturate | clamp(x, 0.0, 1.0) |
原文链接:https://huailiang.github.io/blog/2019/cg/