Shader的主要节点介绍

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

尾声

还在总结中