这类算子通常称为 硬件内建数学指令(Hardware Intrinsics)Fast Math Functions。它们很多看起来像复杂数学运算,但 GPU(甚至 CPU SIMD)往往都有专门的硬件指令,因此比调用普通数学库快得多

下面按照图形学中最常见的整理。

算子数学意义常见硬件实现相比普通实现图形学用途
rcp(x)1/xReciprocal 指令比除法快2~10倍透视除法、UV插值
rsqrt(x)1/√xReciprocal Square Root比 sqrt+除法快很多normalize、光照
sqrt(x)√x常由 rsqrt+乘法实现比 rsqrt慢距离计算
dot(a,b)点积SIMD DP 指令一条或少量指令光照、投影
cross(a,b)叉积SIMD shuffle+FMA极快法线
mad(a,b,c)a×b+cFMA一条指令完成插值
fma(a,b,c)a×b+cFused Multiply Add精度更高且更快几乎所有Shader
lerp(a,b,t)a+t(b-a)MAD/FMA展开极快插值
clamp(x,a,b)min(max())min/max指令无分支饱和
saturate(x)clamp(x,0,1)专用SAT比clamp更快HDR、颜色
min/max最值单指令无分支深度比较
abs(x)绝对值修改符号位几乎零成本法线
sign(x)符号比较指令很快SDF
step(edge,x)阶跃函数CMP无if蒙版
smoothstep平滑阶跃多个FMA很快渐变
frac(x)小数部分floor+sub硬件Noise
floor/ceil取整Convert指令Tile
round四舍五入Convert像素定位
trunc截断Convert数据处理

# 三角函数

现代GPU都有 SFU(Special Function Unit)。

算子是否专用硬件备注
sinSFU
cosSFU
sincos同时计算通常更快
tan一般 sin/cos
asin部分近似实现
acos部分较慢
atan部分较慢
atan2部分更慢

一般速度

sin ≈ cos
    <
sincos
    <<
atan
acos
asin
atan2

# 指数对数

GPU同样提供快速近似。

算子硬件支持用途
exp2(x)2^x
log2(x)log₂
exp(x)exp2换底指数
log(x)log2换底对数
pow(x,y)log+mul+exp相对较慢

一般

exp2
log2
    <
exp
log
    <<
pow

# 位运算

算子复杂度用途
countbitsPOPCNTCluster
firstbitlowBSFBitmask
firstbithighBSRLOD
reversebitsBITREVMorton
asuintBitCastreinterpret
asfloatBitCastreinterpret
pack/unpackPack指令GBuffer

# 插值相关

算子本质
barycentricFMA
interpolateAtSample硬件插值
interpolateAtCentroid硬件
ddxQuad差分
ddyQuad差分
fwidthabs(ddx)+abs(ddy)

# 向量归一化

GPU几乎都会优化成

normalize(v)



len2 = dot(v,v)
inv = rsqrt(len2)
v*=inv

# 经验性的性能层级(从快到慢)

位运算
≈ abs
≈ min/max
≈ saturate
≈ FMA
≈ dot
≈ rcp
≈ rsqrt
< exp2/log2
< sin/cos
< sqrt
< exp/log
<< pow
<< atan/acos/asin
<< atan2

需要注意的是,现代 GPU 不同架构(NVIDIA Ada/Blackwell、AMD RDNA、Apple GPU 等)的具体延迟和吞吐会有所差异,编译器还会进行大量优化,因此这个层级更适合作为 Shader 编写和性能优化时的经验法则,而不是绝对的周期数。