Shader的主要节点介绍
二月 20, 2022
前言
虽然学习很久了,但没有好好总结过shader用到的数学,以至于在用的过程中总是忘记,然后花时间去找,裂开,没有搞完的发现后后续补充。
正文
长度length(a)
简单的欧式距离,根号下平方的那个。
点乘dot( a,b)
点乘是通过将对应分量逐个相乘,然后再把所得积相加来计算的。就是高中学的向量的乘法
v¯⋅k¯=||v¯||⋅||k¯||⋅cosθ
1 | (a1,a2,a3)⋅(b1,b2,b3)=a1*b1+a2* b2+a3*b3 |
用处
当两个向量都是单位向量时就是两个向量的夹角的余弦值,常用于计算角度。
叉乘cross(Lhs,Rhs)
叉乘只在3D空间中有定义,它需要两个不平行向量作为输入,生成一个正交于两个输入向量的第三个向量。如果输入的两个向量也是正交的,那么叉乘之后将会产生3个互相正交的向量。接下来的教程中这会非常有用。下面的图片展示了3D空间中叉乘的样子 :
注意:顺序在此运算符上很重要,因为 AxB 输出的结果与 BxA 不同(其结果类似于 -AxB )。
c=cross(a,b)
c1=a2b3-a3b2
c2=a3b1-a1b3
c3=a1b2-a2b1
用处
得到两个向量做成平面的法向量;
Saturate
饱和节点输出在其上设置的向量的值或单个分量饱和到[0 1]范围。
0:如果输入小于 0,则返回此值
输入:如果值介于 0 和 1 之间,则返回此值
1:如果值大于 1,则返回此值
线性插值lerf(a,b,weight)
公式(1-weight)×a+weight×b比较均匀,比较生硬
clamp(input,min,max)
Clamp 节点输出其输入值或夹紧在 Min, Max范围之间的矢量的各个分量。
- 最小值:如果输入值小于 Min,则返回此值
- 输入:如果输入值介于最小值和最大值之间,则返回此值
- 最大值:如果输入值大于 Max,则返回此值
平滑阶梯smoothstep(min,max,input)
Clamp 节点输出其输入值或夹紧在 Min, Max范围之间的矢量的各个分量。
- 最小值:如果输入值小于 Min,则返回0
- 输入:如果输入值介于最小值和最大值之间,则返回clamp((input-min)/(max-min),0,1)
- 最大值:如果输入值大于 Max,则返回1
尾声
还在总结中
查看评论