在我的一个项目中,我使用以下smoothstep()
功能:
float smoothstep(float a, float b, float m, int n)
{
for(int i = 0 ; i < n ; i++)
{
m = m * m * (3 - 2 * m);
}
return a + (b - a) * m;
}
它工作得很好,但是,它有两个缺点:
- 它很慢(特别是对于 的大值
n
) - 它不适用于非整数值(例如
n = 1.5
:)
是否有提供更好性能(和相同行为)的替代方法(不包括预先计算点然后进行插值),或者另一个函数提供了很好的近似值?