> # 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