Hugo Future Imperfect Slim

L-Lawliet's Blog

记录游戏开发的点点滴滴

HLSL

HLSL

Lawliet

2 分钟

Colourful

HLSL的一些基础机制和常用函数

常用函数

基本运算

名称用例描述最小着色器模型备注
maxmax(x, y)返回x和y中的最大值1
minmin(x, y)返回x和y中的最小值1
mulmul(x, y)返回x和y相乘的结果1
absabs(x)返回x的绝对值1
roundround(x)返回x的四舍五入结果1
sqrtsqrt(x)返回x的平方根1
rsqrtrsqrt(x)返回x的平方根的倒数1
degreesdegrees(x)将弧度x转换为角度1
rediansredians(x)将角度x转换为弧度1
noisenoise(x)使用Perlin噪声算法生成-1到1之间的随机数1
rcprcp(x)对分量求倒数5

幂函数&指数函数&对数函数

名称用例描述最小着色器模型备注
powpow(x, y)返回x的y次幂1
expexp(x)返回e的x次幂1
exp2exp2(x)返回2的x次幂1
ldexpldexp(x, exp)返回x和2的exp次方的乘积1
loglog(x)返回以e为底,x的对数1
log10log10(x)返回以10为底,x的对数1
log2log2(x)返回以2为底,x的对数1
frexpfrexp(x, out exp)将浮点数x分解为尾数和指数:$x=ret*2^{exp}$,函数返回尾数,exp返回指数1

三角函数和双曲函数

名称用例描述最小着色器模型备注
sinsin(x)返回x弧度的正弦1
coscos(x)返回x弧度的余弦1
tantan(x)返回x弧度的正切1
sincossincos(x, out s, out c)返回x弧度的正弦和余弦1
asinasin(x)返回x弧度的反正弦1
acosacos(x)返回x弧度的反余弦1
atanatan(x)返回x弧度的反正切1
atan2atan2(y, x)返回y/x的反正切值1
sinhsinh(x)返回x弧度的双曲正弦值,$\frac{e^x-e^{-x}}{2}$1
coshcosh(x)返回x弧度的双曲余弦值,$\frac{e^x+e^{-x}}{2}$1
tanhtanh(x)返回x弧度的双曲正切值,$\frac{e^x-e^{-x}}{e^x+e^{-x}}$1

数据范围

名称用例描述最小着色器模型备注
ceilceil(x)返回x的向上取整1
floorfloor(x)返回x的向下取整1
stepstep(x, y)如果x小于等于y则返回1,否则返回01
saturatesaturate(x)将x限定在[0, 1]1
clampclamp(x, min, max)将x限制在[min, max]1
fmodfmod(x, y)返回x对y取余的余数1
fracfrac(x)返回x的小数部分1
modfmodf(x, out ip)将值x分为小数和整数部分,每个部分的符号与x相同,ip返回整数部分,函数返回小数部分1
lerplerp(x, y, s)使用s在x和y之间线性插值:$x+s(y-x)$1
smoothstepsmoothstep(min, max, x)如果x在[min,max]范围内,则返回介于0和1之间的平滑Hermite插值,如果x小于min则返回0,如果x大于max则返回11

类型判断

名称用例描述最小着色器模型备注
allall(x)如果x的所有分量都不为0,则返回true;否则返回false1
clipclip(x)如果x小于0,则丢弃当前像素1
signsign(x)如果x小于0,返回-1,如果x等于0,返回0,如果x大于0,返回11
isinfisinf(x)如果x为正无穷或负无穷,返回true,否则返回false1
isfiniteisfinite(x)与isinf相反1
isnanisnan(x)如果x为NAN,则返回true,否则返回false1

向量和矩阵

名称用例描述最小着色器模型备注
lengthlength(v)返回向量v的长度1
normalizenormalize(v)返回v的归一化向量1
distancedistance(a, b)返回a和b之间的距离1
dotdot(a, b)返回a和b的点积1
crosscross(a, b)返回a和b的叉积1
determinantdeterminant(m)返回矩阵m的行列式的值1
transposetranspose(m)返回m的转置1

光线运算

名称用例描述最小着色器模型备注
reflectreflect(i, n)以i为入射方向,n为法线的反射光1
refrectrefrect(i, n, ri)以i为入射方向,n为法线方向,ri为折射率的折射光1
litlit(n_dot_l, n_dot_h, m)输入归一化的法线和光向量的点积,半角向量和法线的点积,高光指数,返回光照向量(环境光,漫反射,高光,1)1
faceforwardfaceforward(n, i, ng)返回面向视图方向的曲面法向量1

纹理查找

名称用例描述最小着色器模型备注
tex1Dtex1D(s, t)返回s在t处的值1
tex1Dtex1D(s, t, ddx, ddy)使用偏导数对2D纹理进行采样以选择Mip级别1
tex1Dprojtex1Dproj(s, t)将xyz除以w,然后进行纹理查找1
tex1Dlodtex1Dlod(s, t)使用lod查找纹理s在t.w处的值1
tex1Dbiastex1Dbias(s, t)将t.w决定的某个Mip层偏置后的纹理查找1
tex1Dgradtex1Dgrad(s, t, ddx, ddy)使用微分并指定Mip层的纹理查找1

说些什么

评论

还沒有留言。

最新文章

Colourful

HLSL

分类

关于

记录游戏开发的点点滴滴