理解 smoothstep

据说这是最有用的函数。

自己实现一个 smoothstep

a=x2a = x^2 开始,再绘制一个 b=1(x1)2b = 1-(x-1)^2 这样的抛物线,对这两个函数进行线性插值,得到 a(1x)+bxa(1 - x)+bx,化简最后得到 x2(32x)x^2(3-2x) ,得到一个这样的抛物线。

图1

为了方便,把上式写成 s=k2(32k)s=k^2(3-2k),之后需要一个 k=xk=x,对他进行 clamp,最后得到了 k=max(0,min(1,x))k=max(0,min(1,x)),于是就得到了 smoothstep 函数。

image-20250828233915888

接下来对于他的左右平移、坡度之类的,都是初中数学学过的,就不赘述了。

最终得到的 k 是这样的 k=max(0,min(1,(xt1)/(t2t1)))k=max(0,min(1,(x-t_1)/(t_2-t_1)))

如果对一个正弦函数乘 ss,就会变成:

图2

可以灵活调整你的参数。