Unity 之 ShaderGraph Math节点解析汇总

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 ShaderGraph Math节点解析汇总相关的知识,希望对你有一定的参考价值。

若你的工程还没有进行基础配置,请查看我的博文Unity 之 ShaderGraph入门使用详解,按照步骤操作完成配置即可,还能顺便学习一下基础操作流程哦~

本篇文章为大家介绍ShaderGraph中的数学节点,数学节点使用数学计算的节点。比如:加法节点接收输入两个数,节点输出为这个两个输入数的和。下面我们来看看在ShaderGraph都有哪些数学节点吧~

一,Basic 基础节点

1.1 Add, Subtarct, Multiply, Divide


加减乘除节点:返回两个输入值的和/差/积/商。

可以通过多层嵌套的方式进行多个数之间的运算。

1.2 Power


幂节点:返回A的B次幂。

1.3 Square Root


平方根节点:返回输入X的平方根。


二,Advanced 高级节点

2.1 Absolute


绝对值节点:返回输入值的绝对值,输入值为正数则原样输出,输入值为负值取相反数后输出。

2.2 Exponential,Log


指数节点(Exponential): 返回输入值的指数值。
Base下拉选项:

  • 基数E: 返回x的e次方
  • 基数2: 返回x的2次方

对数节点(Log):对数是对求幂的逆运算。
Base下拉选项:

  • 底数e: 返回以e为底x的对数
  • 底数2: 返回以2为底x的对数
  • 底数10: 返回以10位底x的对数

2.3 Length


长度节点:返回输入向量的长度。
向量的长度是用勾股定理计算的。若输入的是V3的向量,其长度为:

2.5 Modulo


模节点:返回输入数A除以B后的余数。

2.6 Negate


相反数节点:返回输入数值的相反数。正值转为负值,负值转为正值。

2.7 Normalize


规范化节点:返回输入向量的归一化值。输出向量将与输入向量具有相同方向,但长度为1。

2.8 Posterize


分色节点:此节点将输入向量后处理(也叫量化)值返回到输入Steps指定的一定数量的值中。

2.9 Reciprocal, Reciprocal Square Root


倒数节点(Reciprocal):返回1除以输入值的结果。比如:输入9,输出1/9。
倒数平方根节点(Reciprocal Square Root):返回1除以输入值的平方根结果。比如:输入9,输出1/3。


三,Derivative 导数节点

此节点下的自己子节点,只能用于像素着色器阶段

3.1 DDX,DDY,DDXY


DDX节点,DDY节点:返回对X 或 Y 求导的结果
DDXY节点:返回对x,y求导的和。


四,Interpolation 差值节点

4.2 Lerp


线性差值节点:返回通过输入T在输入A和B之间的线性差值的结果。输入T的值在0-1的范围内。
和我们在代码中写的差值一个意思,当T为0时,则输出为A;T为1时,输出为B;T为0.5时,输出为A和B的中值。

4.2 Inverse Lerp


逆线性差值节点:返回通过输入T在输入A和B之间的逆线性差值的结果。就是字面意思和线性差值的结果反过来。比如当T为0时,则输出为B;T为1时,输出为A。

4.3 Smoothstep


平滑节点:当输入In值在输入Edge1和Edge2的值之间时,则返回 0 和 1 之间平滑艾米特插值的结果。当输入In的值小于输入Edge1的值,则返回 0;如果大于输入Edge2的值,则返回 1 。

当Edge1和Edge2值相等时,它和setp节点是一样的。常见应用:动画的淡入淡出。


五,Matrix 矩阵节点

5.1 Matrix Construction


矩阵构建节点:从四个输入向量M0,M1,M2和M3构建方阵。此节点可以用来生成2x2,3x3,4x4的矩阵,输出时使用对应的输出即可。

节点上的下拉菜单可以用来选择输入值是指定矩阵行还是列,它们分别是从上到下指定行,从左到右指定列。

5.2 Matrix Determinant


矩阵行列式节点:返回由输入值定义的矩阵的行列式的值。

5.3 Matrix Split


矩阵拆分节点:将输入举证拆分为向量,输出向量维度和输入矩阵维度一致。

5.4 Matrix Transpose


矩阵转置节点:返回输入矩阵的转置值。可以认为是将其进行对角线翻转操作,结果是它切换了矩阵的行和列索引。


六,Range 范围节点

6.1 Clamp


夹子(范围)节点:返回分别有Min和Max定义的最小值和最大值之间的值。若输入值在最大最小值之间,则之间输出输入值;若输入值小于最小值 或 大于最大值,则输出最小值 或 最大值。

6.2 Fraction


部分节点:返回输入值的小数部分;取值范围是: 0 <= x < 1 。比如输入1.23,则输出0.23。

6.3 Maximum,Minimum


最大,最小节点:分别返回输入值A和B中的最大,最小值。

6.4 One Minus

取相反数节点:返回输入值的相反数。也可以通过使用上面提到减法节点,输入0-x来达到相同的效果。

6.5 Random Range


随机节点:返回输入最大最小值之间的随机浮点数

6.6 Remap

重映节点:根据输入值In,在输入限定的最大最小值之间的差值,返回在输出的限定范围重新映射值。

比如上图:输入In:0,输入Min:-1,Max:1; 输出Min:0,Max:10; 则此时返回值是5。

6.7 Saturate


返回限制在0到1之间的输入值。 可以理解为是Min为0,Max为1 的Clamp(6.1)节点。


七,Round 取整节点

7.1 Ceiling, Floor, Round


Ceiling:返回向上取整后的值。比如输入1.23,返回2。
Floor:返回向下取整后的值。比如输入1.23,返回1。
Round:返回四舍五入后的值。比如输入1.23,返回1,输入4.56,返回5。

7.2 Sign


符号节点:输入正数返回1,输入负数返回-1,输入0则返回0。

7.3 Step


步骤节点:输入In值大于Edge的值,则返回1,否则返回0。

7.4 Truncate


截断节点:返回输入数值的整数部分。比如输入1.2,返回1.0。


八,Trigonometry 三角节点

8.1 Sine,Arcsine


正弦节点:返回输入值的正弦值。
反正弦节点:返回输入值的反正弦值。

8.2 Cosine,Arccosine


余弦节点:返回输入值的余弦值。
反余弦节点:返回输入值的反余弦值。

8.3 Tangent,Arctangent,Arctangent2


正切节点:返回输入值的正切值。
反正切节点:返回输入值的反正切值。
反正切节点2:返回输入值的反正切2值。

程序中的 atan 和 atan2 都是求反正切函数,如:有两个点(x1,y1),(x2,y2);
那么这两个的电形成斜率的角度计算方式为:
atan: float angle = atan((y2 - y1) / (x2 - x1) );
atan2:float angle = atan2(y2 - y1, x2 - x1 );

从上式可以看出当x2 - x1 = 0时,atan会出错,而atan2依然可以计算。

8.4 Degrees To Radians,Radians To Degrees


弧度转角度,角度转弧度:这两个节点就是字面意思度数转换。
1度 约等于 0.0174533弧度,1弧度 约等于 57.2958度,360度 完整旋转等于 2Pi弧度。

8.5 Hyperbolic Sine,Cosine,Tangent


双曲正弦,双曲余弦,双曲正切:都是返回各自的值。


九,Vector 向量节点

9.1 Cross Product,Dot Product


叉乘积(向量外积,矢量积):返回输入A和B的叉乘积。
点乘积(向量内积,标量积):返回输入A和B的点乘积。

9.2 Distance


距离节点:返回输入A和B之间的距离

9.3 Transform


转换节点:返回输入值从一个坐标空间转换到另一个坐标空间的结果。

可选择从对象,视图,世界,切线,绝对世界空间之间进行转换。

官方注解:世界与绝对世界:

使用世界和绝对世界空间选项来转换位置值的坐标空间。在世界空间选项使用脚本化渲染管道默认世界空间转换位置值。在绝对的世界空间选项使用绝对世界空间位置值转换中的所有脚本化渲染管线。
如果您使用变换节点来转换不是用于位置值的坐标空间,Unity 建议您使用世界空间选项。对不代表位置的值使用绝对世界可能会导致意外行为。

9.4 Fresnel Effect


菲涅尔效果:是根据视角在表面上产生不同反射率的效果,当您接近掠射角时,反射的光更多。菲涅尔效应节点通过计算表面法线和视图方向之间的角度接近此。这个角度越大,返回值就越大。

通过设定节点中的power参数,物体的边缘会有和中心不同的颜色。

9.5 Projection, Reflection


投影节点:返回将输入A的值投影到输入B的值平行线上的结果。
反射节点:使用输入值和表面法线Normal返回反射向量。

9.6 Rotate About Axis


绕轴旋转:输入一个向量一个轴,就可以绕着它旋转,可选根据角度还是弧度进行旋转。

9.7 Sphere Mask


球面遮罩节点:创建源自输入Center的球面遮罩。球体使用距离计算并用半径和硬度输入修改。
输入参数:位置坐标,中心,半径,硬度。常用于3D空间。


十,Wave 波节点

下面几种波的曲线示意图:

10.1 Noise Sine Wave


噪声正弦波:返回输入值的正弦值。

10.2 Sawtooth Wave


锯齿波:返回输入值的锯齿波。

10.3 Square Wave


方形波:返回输入值的方波。

10.4 Triangle Wave


三角波:返回输入值的三角波。

以上是关于Unity 之 ShaderGraph Math节点解析汇总的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 ShaderGraph 实现全息效果入门级教程

Unity 之 ShaderGraph 实现火焰效果入门级教程

Unity 之 ShaderGraph 实现旋涡(传送门)效果入门级教程

Unity 之 ShaderGraph 实现小旗随风飘扬效果入门级教程

Unity 之 ShaderGraph 实现超级炫酷的溶解效果入门级教程

Unity 之 ShaderGraph Input节点解析汇总