shader常用运算函数

这篇博客详细介绍了基本的数学运算,包括最大值、最小值、乘法、绝对值、舍入等,并涵盖了指数、对数、三角函数等高级运算。同时,还讨论了向量和矩阵的操作,如长度、归一化、距离计算,以及光线运算和纹理查找等在图形处理中的应用。此外,文章也涉及到了一些特殊函数,如噪声函数和类型判断函数,以及它们在编程中的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数学运算

max(a,b) 返回较大的

min(a,b)返回较小的

mul(a,b) 两向量相乘

abs(a)返回a的绝对值

round(x)返回与x最近的整数

sqrt(x)返回x的平方根

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

degrees(x)将弧度转化为角度

redians(x)将角度转化为弧度

noise(x) 噪声函数

网站:https://graphtoy.com/ 可将数学公式输入可视化

幂指对函数与偏导数

pow(x,y)x的y次幂

exp(x)返回以e为底的指数函数

exp2(value x)返回以2为底,x为指数的幂

ldexp(x,exp)返回与2的exp次方的乘积

log(x) 返回指定值的以e为底数的对数

log10(x) 以10为底的对数

log2(x)以2为底数的对数

三角函数和双曲线函数

sin(x)、cos(x)、tan(x)

下划线前X均为弧度

三角函数(弧度制:1°=π/180 rad)

asin(x)、acos(x)、atan(x)

反三角函数

数据范围

ceil(x)返回>=x的最小整数

floor(x)返回<=x的最大整数

step(x,y) x<=y返回1,否则返回0

saturate(x) 返回将x钳制到[0,1]范围之间的值

clamp(x,min,max) 将x限制在[min,max]范围的值,比min小返回min,比max大返回max

fmod(x,y)返回x对y取余的余数

frac(x)取x的小数部分

modf(x,out ip)将x分为小数和整数部分(输出的ip为整数部分,返回值为小数部分)

lerp(x,y,s)按照s在x到y之间插值

smoothstep(min,max,x)如果x在[min,max]范围内,就返回介于[0,1]之间的平滑插值

类型判断类

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

clip(x)

如果输入值小于零,则丢弃当前像素 常用于判定范围(不仅仅针对0,返回值为void)

常用于Alpha Test,如果每个分量代表到平面的距离,还可以用来模拟剪切平面

sign(x)返回x的正负性

如果x小于零返回-1

如果x等于零返回0

如果x大于零返回1

isinf(x)

如果x参数为+ INF或-INF(无穷+无穷仍无穷,0x3f3f3f3f),返回true,否则返回False

isfinite(x)

判断x参数是有限,即有界的,与isinf(x)相反

isnan(x)

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

向量和矩阵类

length(v) 返回向量的长度

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

distance(a,b) 返回两个向量之间的距离,不平行的两个向量应该为0,此处表示为根号下各分量之差的平方和

dot(a,b) 点积

cross(a,b) 叉积

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

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

光线运算类

reflect(i,n) 以i为入射向量n为法线方向的反射光

refract(i,n,ri) 以i为入射向量n为法线方向,ri为折射率的折射光

纹理查找

2D纹理查找

tex2D(s, t) 普通二维纹理查找 返回纹理采样器s在vector t位置的颜色

tex2D(s,t,ddx,ddy) 使用微分查询二维纹理,t和ddxy均为vector

tex2Dlod(s, t) 使用LOD查找纹理s在t.w位置的color4

tex2Dbias(s, t) 将t.w决定的某个MIP层偏置后的二维纹理查找

tex2Dgrad(s,t,ddx,ddy) 使用微分并指定MIP层的二维纹理查找

tex2Dproj(s, t) 把纹理当做一张幻灯片投影到场景中,先使用投影纹理技术需要计算出投影纹理坐标t(坐标t.w除以透视值),然后使用投影纹理坐标进行查询

立体纹理查找

texCUBE(s,t) 返回纹理采样器s在vector t位置的颜色

texCUBE(s,t,ddx,ddy) 使用微分查询立方体维纹理 ,t和ddxy均为vector

texCUBEDload(s,t) 使用LOD查找纹理s在t.w位置的color4

texCUBEbias(s,t) 将t.w决定的某个MIP层偏置后的立方体纹理查找

texCUBEgrad(s,t,ddx,ddy) 使用微分并指定MIP层的立方体纹理查找

texCUBEproj(s,t) 使用投影方式的立方体纹理查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值