1. 程式人生 > >Shader smoothstep使用

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)   a=0.2, b=0.7

  smoothstep(0.5, 0, x)   a=0.5, b=0