ShaderGraph节点——Math

Math Nodes:数学节点

1 高级

Absolute——绝对值:返回输入的绝对值。输入动态矢量的正分量将保持为正,负分量将反向变为正。

void Unity_Absolute_float4(float4 In, out float4 Out)
{
    Out = abs(In);
}

Exponential——指数:返回输入的指数值。指数基可以从节点上的基下拉菜单在e基和2基之间进行切换。

Base E:返回E的输入幂

Base 2:返回2的输入幂

 

Length——长度:返回输入的长度。这也被称为幅度。矢量的长度是由毕达哥拉斯定理计算出来的。

向量2的长度可以计算为:\sqrt{x^{2} + y^{2}}。其中x和y是输入向量的分量。长度可以通过添加或删除组件来计算其他维向量。

\sqrt{x^{2} + y^{2} + z^{2}}等等。

Log——对数:返回输入的对数。对数是指数节点的逆运算。

例如,使用输入值3的基数2指数的结果是8。2^{3} = 2\times 2\times 2 = 8

因此,使用输入值8的base-2对数的结果是3。

对数基可以从节点上的基下拉菜单中在base-e、base-2和base-10之间进行切换。

Modulo——取模:返回输入A除以输入B的余数。

void Unity_Modulo_float4(float4 A, float4 B, out float4 Out)
{
    Out = fmod(A, B);
}

Negate——取反:返回输入的翻转符号值。正的值变成负的,负的值变成正的。

Normalize——标准化:返回输入的规范化值。输出向量与输入方向相同,但长度为1。

Posterize——色调分离:此节点将输入的色调分离(也称为量化)值返回到输入步骤指定的值的数量中。

void Unity_Posterize_float4(float4 In, float4 Steps, out float4 Out)
{
    Out = floor(In / (1 / Steps)) * (1 / Steps);
}

Reciprocal——倒数:返回1除以输入In的结果。这可以通过快速逼近着色器模型5来计算,通过设置Method 为fast。

Default

void Unity_Reciprocal_float4(float4 In, out float4 Out)
{
    Out = 1.0/In;
}

Fast (Requires Shader Model 5)

void Unity_Reciprocal_Fast_float4(float4 In, out float4 Out)
{
    Out = rcp(In);
}

Reciprocal Square Root——倒数平方:返回1除以输入In的平方根的结果。

2 Basic:基础

Add——加:返回两个输入值A和B的和。

Divide——除:返回输入A(被除数)除以输入B(除数)的结果。

Multiply——乘:返回输入A乘以输入b的结果。如果两个输入都是向量类型,则输出类型将是与这些输入的计算类型具有相同维数的向量类型。如果两个输入都是矩阵类型,则输出类型将是与这些输入的计算类型具有相同维数的矩阵类型。如果一个输入是向量类型,另一个是矩阵类型,那么输出类型将是与向量类型输入具有相同维数的向量。

Power——幂:返回输入A的结果到输入B的幂次。

Square Root——平方根:返回输入的平方根。

Subtract——减:返回输入A减去输入B的结果。

3 Derivative:导数

DDX:返回输入对屏幕空间x坐标的偏导数。此节点只能在像素着色阶段使用。

DDXY:返回输入对屏幕空间x坐标和屏幕空间y坐标的偏导数的和。此节点只能在像素着色阶段使用。

DDY:返回输入对屏幕空间y坐标的偏导数。此节点只能在像素着色阶段使用。

4 Interpolation:插值

Inverse Lerp:返回线性参数,该参数在输入A到输入B的范围内产生由输入T指定的内插。

逆Lerp是Lerp节点的逆操作。它可以用来根据一个Lerp的输出来确定它的输入是什么。

例如,Lerp的值在0和2之间,T值为1,等于0.5。因此,在0和2之间,T值为0.5的逆Lerp的值是1。

void Unity_InverseLerp_float4(float4 A, float4 B, float4 T, out float4 Out)
{
    Out = (T - A)/(B - A);
}

 

Lerp:返回输入T对输入A和输入B进行线性插值的结果。输入T的值被夹在0到1的范围内。

例如,当输入的值T = 0时返回值等于输入的A值,当T=1返回值等于输入的B值,当T=0.5时返回值是A和B两个输入值的中点值。

Smoothstep:如果输入In的值分别位于输入Edge1和Edge2的值之间,则返回在0和1之间的平滑Hermite插值的结果。如果输入In的值小于输入Step1的值,则返回0;如果大于输入Step2的值,则返回1。

这个节点与Lerp节点相似,但是有两个显著的区别。首先,使用这个节点,用户指定范围,返回值在0到1之间。这可以看作是Lerp节点的反面。其次,该节点使用平滑Hermite插值代替线性插值。这意味着插值将逐渐加快,从开始和放慢到结束。这对于创建看起来自然的动画、淡入淡出和其他过渡非常有用。

5 Matrix:矩阵

Matrix Construction——构造矩阵:从四个输入向量M0、M1、M2和M3构造方阵。该节点可生成矩阵2x2、矩阵3x3、矩阵4x4等类型的矩阵。

可以使用节点上的下拉菜单选择输入值是指定矩阵行还是列。

  • 行:输入向量指定从上到下的矩阵行。
  • 列:输入向量指定从左到右的矩阵列。

矩阵输出是从左上角的建设的投入。这可以用来从不同的维向量生成不同维的矩阵。

例如,将向量2的类型值连接到输入M0和M1将从输出2x2生成所需的矩阵。

 

Matrix Determinant——矩阵行列式:返回由输入定义的矩阵的行列式。它可以看作是矩阵所描述的变换的比例因子。

Matrix Split——矩阵分裂:将一个由输入定义的矩阵分割成向量。输出向量维由输入矩阵的维数定义。

节点上的下拉菜单可用于选择输出值是取自输入矩阵的行还是列。

  • 行:输出向量由从上到下的矩阵行组成。
  • 列:输出向量由从左到右的矩阵列组成。

类型为matrix 2x2或matrix 3x3的输入矩阵将在超出其维数的行(或列,取决于下拉选择)中返回0值。

例如,将矩阵2x2类型连接到输入将返回正确的向量2类型输出到输出槽M0和M1,而输出的M2和M3将返回0值。

Matrix Transpose——转置矩阵:返回由输入In定义的矩阵的转置值。这可以看作是将矩阵翻转到其对角线上的操作。结果是它改变了矩阵的行和列的指标。

6 Range:范围

Clamp——固定:返回固定在由输入Min和Max分别定义的最小值和最大值之间的输入。

Fraction——小数:返回输入的小数部分(或小数部分);大于等于0,小于1。

Maximum——最大值:返回两个输入值A和B中最大的一个。

Minimum——最小值:返回两个输入值A和B中最小的一个。

One Minus——一减:返回从1中减去的输入值的结果。

Random Range——随机值:返回一个基于输入种子的伪随机数值,该值位于分别由输入Min和Max定义的最小值和最大值之间。

虽然相同的输入种子的值总是会导致相同的输出值,但输出值本身将出现随机。输入种子是一个向量2值,方便根据UV输入生成随机数,但是在大多数情况下,一个向量1输入就足够了。

Remap——重映射:根据输入的值的在In Min Max输入值的x和y分量之间的进行线性插值,返回 Out Min Max输入的值的x和y分量之间的值。

void Unity_Remap_float4(float4 In, float2 InMinMax, float2 OutMinMax, out float4 Out)
{
    Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
}

Saturate:返回固定在0和1之间的输入值。

7 Round:四舍五入

Ceiling:返回大于或等于输入In的值的最小整数值或整数。

Floor:返回小于或等于输入In的值的最大整数值或整数。

Round:将输入的值四舍五入为最接近的整数或整数。

Sign:对于每个组件,如果输入的值小于0,则返回-1;如果等于0,则返回0;如果大于0,则返回1。

Step:对于每个组件,如果input In的值大于或等于input Edge的值,则返回1,否则返回0。

Truncate:返回输入值的整数或整数组件。例如,给定输入值1.7,此节点将返回值1.0。

8 Trigonometry:三角

Arccosine——反余弦:将输入的每个分量的反余弦作为相同维数和相同长度的向量返回。每个分量都应该在-1到1的范围内。

Arcsine——反正弦值:返回输入的每个分量的反正弦值,作为相同维数和相同长度的向量。每个分量应该在- π/2到π/2的范围内。

Arctangent:返回输入值的反正切值。每个分量应该在- π/2到π/2的范围内。

Arctangent2:返回输入A和输入b的值的反正切值。输入值的符号(无论它们是正的还是负的值)用于确定输出组件或通道在-Pi到Pi的范围内是正的还是负的。

Cosine:返回输入值的余弦值。

Degrees to Radians:返回输入值,该值由度转换为弧度。1度大约等于0。0174533弧度360度的完整旋转等于2π弧度。

Hyperbolic Cosine:返回输入的双曲余弦值。

Hyperbolic Sine:返回输入的双曲正弦值。

Hyperbolic Tangent:返回输入的双曲正切。

Radians to Degrees:返回从弧度转换为角度的输入值。一个弧度大约等于57。2958度一个完整的旋转2弧度等于360度。

Sine:返回输入值In的正弦值。

Tangent:返回输入值的正切值。

9 Vector:向量

Cross Product:返回输入A和b的值的叉乘。两个向量的叉乘得到第三个向量,它垂直于两个输入向量。结果的大小等于两个输入的大小相乘,然后乘以输入之间夹角的正弦值。您可以使用“左手规则”来确定结果向量的方向。

Distance:返回输入A和b之间的欧氏距离。这对于计算空间中两点之间的距离很有用,通常用于计算有符号距离函数 (Signed Distance Function)。

Dot Product:返回两个输入向量A和B的点积,或标量积。

点积是一个等于两个向量相乘的模的值然后乘以它们夹角的余弦值。

对于归一化的输入向量,如果它们指向完全相同的方向,则点积节点返回1;如果它们指向完全相反的方向,则返回-1;如果向量垂直,则返回0。

Fresnel Effect:菲涅耳效应是在一个表面上的不同反射率的影响,取决于观察角度,当你接近掠射角更多的光被反射。菲涅耳效应节点通过计算表面法线和视图方向之间的角度来近似地实现这一点。这个角度越大,返回值越大。这种效果经常用于实现边缘照明,在许多艺术风格中很常见。

Projection:返回将输入A的值投影到与输入B的值平行的直线上的结果。

Reflection:使用输入和表面法线返回一个反射向量。

Rejection:返回结果的输入的值的投影到输入值A的正交平面,或输入B值的垂直平面。拒绝向量的值等于原来的A输入的值的向量,减去相同的投影输入的值。

void Unity_Rejection_float4(float4 A, float4 B, out float4 Out)
{
    Out = A - (B * dot(A, B) / dot(B, B))
}

 

Rotate About Axis:通过旋转的值使输入向量绕轴旋转。旋转角度的单位可以由参数单位来选择。

Sphere Mask:创建一个来自输入中心的球体掩码。球是计算距离和修改使用半径和硬度输入。球面遮罩功能可以在二维和三维空间中工作,它基于坐标输入中的矢量坐标。

Transform:返回将输入值(In)从一个坐标空间转换为另一个坐标空间的结果。选择节点上的下拉选项,以定义要从哪些空间转换到哪些空间。

10 Wave:波

Noise Sine Wave:返回输入值In的正弦值。对于方差,psuedo-random噪声被添加到正弦波的振幅,在输入的最小到最大值范围内。

void Unity_NoiseSineWave_float4(float4 In, float2 MinMax, out float4 Out)
{
    float sinIn = sin(In);
    float sinInOffset = sin(In + 1.0);
    float randomno =  frac(sin((sinIn - sinInOffset) * (12.9898 + 78.233))*43758.5453);
    float noise = lerp(MinMax.x, MinMax.y, randomno);
    Out = sinIn + noise;
}

Sawtooth Wave:从输入的值中返回一个锯齿波。

void Unity_SawtoothWave_float4(float4 In, out float4 Out)
{
    Out = 2 * (In - floor(0.5 + In));
}

Square Wave:从输入的值中返回一个方波。

void Unity_SquareWave_float4(float4 In, out float4 Out)
{
    Out = 1.0 - 2.0 * round(frac(In));
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值