Shader smoothstep使用

  ret smoothstep(a, b, x)可以用来生成0到1的平滑过渡.

返回值 条件
0 x < a < b 或 x > a > b
1 x < b < a 或 x > b > a
某个值 根据x在域 [a, b] (或者[b, a])中的位置, 返回某个在 [0, 1] 内的值

  对于参数全是float的重载

float smoothstep(float a, float b, float x)
{
    float t = saturate((x - a)/(b - a));
    return t*t*(3.0 - (2.0*t));
}

  我们用图像来直观理解一下这个计算式, 可以看出smoothstep对于参数ab的大小并没有限制, 均能完成平滑的插值.

  smoothstep(0.2, 0.7, x)
  Shader smoothstep使用_第1张图片

  smoothstep(0.5, 0, x)
  Shader smoothstep使用_第2张图片

你可能感兴趣的:(语法)