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