> ## Name

> saturate - returns smallest integer not less than a scalar or each vector component.

> ## Synopsis

>     float  saturate(float x);
>     float1 saturate(float1 x);
>     float2 saturate(float2 x);
>     float3 saturate(float3 x);
>     float4 saturate(float4 x);

>     half   saturate(half x);
>     half1  saturate(half1 x);
>     half2  saturate(half2 x);
>     half3  saturate(half3 x);
>     half4  saturate(half4 x);

>     fixed  saturate(fixed x);
>     fixed1 saturate(fixed1 x);
>     fixed2 saturate(fixed2 x);
>     fixed3 saturate(fixed3 x);
>     fixed4 saturate(fixed4 x);

> ## Parameters

> x
>   Vector or scalar to saturate.

> ## Description

> Returns x saturated to the range [0,1] as follows:

>   1) Returns 0 if x is less than 0; else
>   2) Returns 1 if x is greater than 1; else
>   3) Returns x otherwise.

> For vectors, the returned vector contains the saturated result of each element of the vector x saturated to [0,1].

> ## Reference Implementation

> saturate for float scalars could be implemented like this.

>     float saturate(float x)
>     {
>       return max(0, min(1, x));
>     }

> ## Profile Support

> saturate is supported in all profiles.

> saturate is very efficient in the fp20, fp30, and fp40 profiles.

> ## See Also

> clamp, max, min