跳转到内容

节点手册 · 数学与逻辑

本页收录做运算的节点:math 76 个、logic 11 个、channel 3 个,共 90 个。 「动态」表示多态端口,实际类型由连线推导;这类节点的所有输入会被统一到同一类型 (见概念篇)。

菜单:mathbasic。输入输出均为动态,候选:float / int / vec2 / vec3 / vec4 / mat2 / mat3 / mat4。

节点说明快捷键
add相加a
minus相减M
multiply相乘。矩阵与向量相乘也用它m
divide相除d
oneMinus1 − x,反相。做遮罩取反最常用o

菜单:mathcommon

节点输入说明
abs动态绝对值
sign动态符号:正 1、负 −1、零 0
floor动态向下取整
ceil动态向上取整
fract动态取小数部分。做无限平铺、循环动画的基础
mod动态 × 2取模求余
min动态 × 2取较小值
max动态 × 2取较大值
clamp值、min、max(默认 max = 1)限制在区间内。min=0、max=1 即等价于 saturate
mixA、B、Alpha线性插值:A×(1−Alpha) + B×Alpha。快捷键 l
stepedge、值值 ≥ edge 时为 1,否则 0。产生硬边
smoothstepedge0、edge1、值在两个边界间平滑过渡(S 曲线),产生软边

菜单:mathadvanced

节点输入说明
negate动态取负:−In
posterizeIn、Steps(默认 4)色阶量化:floor(In × Steps) / Steps,做卡通分层、像素风
reciprocalIn(默认 1)倒数:1 / In
reciprocalSqrtIn(默认 1)平方根的倒数:inversesqrt(In)

菜单:mathround

节点说明
round四舍五入:floor(In + 0.5)
truncate向零取整:sign(In) × floor(abs(In))

菜单:mathexponential。全部为动态输入输出。

节点说明
pow幂:A 的 B 次方。快捷键 e
sqrt平方根
inversesqrt平方根倒数
expe 的 x 次方
log自然对数
exp22 的 x 次方
log2以 2 为底的对数

菜单:mathtrigonometry

节点输入说明
radians动态角度转弧度
degrees动态弧度转角度
sin / cos / tan动态正弦 / 余弦 / 正切(输入为弧度)
asin / acos / atan动态反正弦 / 反余弦 / 反正切
atan2y、x (float)两参数反正切,返回完整象限的角度
hyperbolicSine动态双曲正弦:(eˣ − e⁻ˣ) / 2
hyperbolicCosine动态双曲余弦:(eˣ + e⁻ˣ) / 2
hyperbolicTangent动态双曲正切

菜单:mathgeometric

节点输入输出说明
length动态float向量长度
distance动态 × 2float两点距离
dot动态 × 2float点积。判断朝向一致性、算光照强度
crossvec3 × 2vec3叉积。求垂直于两向量的方向
normalize动态动态归一化为单位长度。快捷键 n
faceforwardN、I、Nref动态让 N 朝向与 I 相反的一侧
reflectI(入射)、N(法线)动态反射向量,做反射采样
refractI、N、eta动态GLSL 内置折射,eta 为折射率之比

菜单:mathvector

节点输入输出说明
projectionA、B动态A 在 B 上的投影分量:B × dot(A,B) / dot(B,B)
rejectionA、B动态A 垂直于 B 的分量:A − projection(A,B)
sphereMaskCoords、Center、Radius (0.1)、Hardness (0.8)float球形/圆形遮罩:离中心越近值越大,Hardness 控制边缘硬度
rotateAboutAxisIn、Axis (默认 0,1,0)、Rotationvec3绕任意轴旋转向量。Unit 模式:Radians / Degrees
refractIncident、Normal、IORSource (1)、IORMedium (1.5)Refracted (vec3) + Intensity (float)完整折射:双输出,Intensity 是透射强度(Schlick 近似),全反射时为 0

refractMode

模式行为
Safe始终返回折射向量(超过临界角时结果被钳制)
CriticalAngle超过临界角时改为返回反射向量,物理上更正确

math/interpolation 与 math/range —— 插值与重映射

Section titled “math/interpolation 与 math/range —— 插值与重映射”
节点菜单输入说明
inverseLerpmath/interpolationA (0)、B (1)、Tmix 的逆运算:求 T 在 A~B 区间中的归一化位置
remapmath/rangeIn、InMinMax (−1,1)、OutMinMax (0,1)区间重映射,把一个范围的值线性映射到另一个范围
randomRangemath/rangeSeed (vec2)、Min (0)、Max (1)由二维种子生成 Min~Max 的伪随机数

菜单:mathwave。全部动态输入输出,周期为 1。

节点说明
sawtoothWave锯齿波,输出 −1~1
squareWave方波,输出 −1 或 1
triangleWave三角波,输出 −1~1
noiseSineWave带噪声的正弦波,MinMax(默认 −0.5,0.5)控制噪声幅度
节点菜单输入输出说明
fresnelmath/effectnormal、viewDir、powerfloat菲涅尔:pow(1 − dot(normal, viewDir), power)。边缘光、能量护盾、水面反射强度

菜单:mathexpression

节点输入输出说明
append动态 × 2动态把两个值拼成更高维向量,如 float + float → vec2
maskvec2 / vec3 / vec4动态R / G / B / A 四个勾选框取出若干分量,输出维度 = 勾选数量

菜单:mathmatrix。矩阵按列主序存储。

节点输入输出说明
matrixTransposeIn (mat2/3/4)同型矩阵转置
matrixDeterminantIn (mat2/3/4)float行列式
matrixSplitIn (mat2/3/4)M0 / M1 / M2 / M3把矩阵拆成向量。Axis:Row(按行)/ Column(按列)
matrixConstructionM0~M3 (vec4)4x4 / 3x3 / 2x2 三个输出由四个向量组装矩阵,三种尺寸同时给出。Axis:Row / Column
transformationMatrixmat4取引擎内置变换矩阵
transformIn (vec3)vec3在坐标空间之间变换

transformationMatrixMatrix 选项:ModelViewProjectionViewProjectionModelView

transform 的选项:

选项可选值说明
From / ToObject / World / View / Clip / AbsoluteWorld源空间与目标空间
TypePosition / Direction / NormalPosition 按点变换(含平移),Direction 与 Normal 按方向变换(忽略平移)

菜单:mathderivative。全部动态输入输出。

节点说明
DDX相邻像素在屏幕 X 方向的变化量
DDY相邻像素在屏幕 Y 方向的变化量
DDXYabs(DDX) + abs(DDY),即 fwidth。做与屏幕像素大小无关的抗锯齿边缘
节点输入输出说明
ifA、B、A>BA<BA==B动态比较 A 与 B,按结果输出三个分支之一。快捷键 i
forLoopfistIndex (int)、lastIndex (int)、bodycompleted、index (int)从 fistIndex 循环到 lastIndex,每次迭代把 body 的值写入结果

菜单:logic

节点输入输出说明
andA、B (bool)bool
orA、B (bool)bool
nandA、B (bool)bool与非
notIn (bool)bool
branchPredicate (bool)、True、False动态按条件二选一。输出维度跟随 True / False 的类型
comparisonA、B (float)bool数值比较,模式见下
allIn (动态)bool所有分量都非 0 时为 true
anyIn (动态)bool任一分量非 0 时为 true
isNaNIn (float)bool是否为 NaN
isInfiniteIn (float)bool是否为无穷大
isFrontFacebool当前像素是否属于正面。双面材质里区分正反面用

comparisonComparison 模式:EqualNotEqualLessLessOrEqualGreaterGreaterOrEqual

菜单:channel。三个节点都是动态输入输出,用勾选框或字符串而不是连线来配置。

节点配置说明
flipR / G / B / A 勾选框勾中的分量取反(x → −x
channelMaskR / G / B / A 勾选框未勾中的分量清零,保留勾中的分量(维度不变)
swizzleMask 字符串任意重排/重复分量,例如 xxywzyxrgb

本文更新于