欢迎光临散文网 会员登陆 & 注册

百人计划图形2.3——HLSL常用函数

2023-08-15 01:05 作者:咽泣子  | 我要投稿


一、基本数学运算

max(a,b)    返回较大的那个min(a,b)返回较小的那个

mul(a,b)    两数相乘,常用于矩阵运算abs(a)返回输入值的绝对值

round(x)    返回与x最近的整数sqrt(x)返回指定值的平方根

rsqrt(x)    返回指定值的平方根的倒数

degrees(x)    转换成弧度

redians(x)    将角度转为弧度制noise(x)噪声函数

二、幂指对与偏导数

三、三角函数与双曲线函数

四、数据范围类

ceil(x)返回>=x的最小整数step(x.y)x<=y为1,否则为0

floor(x)返回小于或等于x的最大整数saturate(x)返回将x钳制到0和1之间的值

clamp(x,min,max)把x限制在[min, max]范围内,小于返回min,大于返回maxfrac(x)返回x部分的小数

fmord(a,b)返回a/b的浮点部分

modf(x,out ip)将值x分为小数和整数部分(各部分符号与x相同)ip返回整数部分,整体返回小数部分

lerp(a,b,s)按照s在a到b之间插值

smoothstep(min,max,x)如果x在[ min,max ]范围内,则返回介于0和1之间的平滑Hermite插值;使用smoothstep HLSL内在函数在两个值之间创建平滑过渡。例如,使用此功能平滑地混合两种颜色

五、类型判断类

all(x)确定指定量的所有分量是否均为非零,均非零则返回true,否则返回false(处理由浮点型、整型、布尔型数据定义的标量、向量或者矩阵)

clip(x)如果输入值小于零,则丢弃当前像素常用于判定范围(不仅仅针对0,返回值为void)常用于测试alpha,如果每个分量代表到平面的距离,还可以用来模拟剪切平面

sign(x)返回x的正负性如果x小于零返回-1,如果x等于零返回0,如果x大于零返回1

isinf(x)如果x参数为+lINF或-INF(无穷+无穷仍无穷,Ox3f3f3f3f),返回true,否则返回Falseisfinite(x)判断x参数是有限,即有界的,与isinf(x)相反xiang'fa

isnan(x)如果x参数为NAN(非数字),返回true,否则返回false


六、向量与矩阵类

length(v)返回向量的长度

normalize(v)向量归一化,x/length(x)方向向量归一化

distance(a,b)返回两个向量之间的距离,按理说应该为O,此处表示为根号下各分量之差的平万和dot(a,b)返回a和b这两个向量的标积/内积/数量积/点积(a在b上的投影长,arb=la][blcos0)

cross(a,b)返回a和b这两个向量的矢积/外积/向量积/叉积

(返回值是个向量,而且与a、b都垂直,大小上|a x b|=al*bl/ *sin0 )

determinant(m)返回指定浮点矩阵的按行列式方式计算的值

transpose(m)返回矩阵m的转置矩阵

现在环境很少使用
blinphong庄佬的课程有进行创造

3d纹理查找实际是查找纹理中的大量2d纹理?


个人认为常用函数

dot 

normalize(归一化)

lerp

pow等


ddxddy的实际使用测试

对于MIPMAP来说,ddxddy越大 ,MIPMAP级别就越大。

边缘锐化

主要代码截图


百人计划图形2.3——HLSL常用函数的评论 (共 条)

分享到微博请遵守国家法律