clamp
Keywords: clamp, NVIDIA, NVIDIA Cg Toolkit, Cg Toolkit, Shader, Shader Programming, GPU Shader Programming, GPU Program

> ## Name

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

> ## Synopsis

>     float  clamp(float x, float a, float b);
>     float1 clamp(float1 x, float1 a, float1 b);
>     float2 clamp(float2 x, float2 a, float2 b);
>     float3 clamp(float3 x, float3 a, float3 b);
>     float4 clamp(float4 x, float4 a, float4 b);

>     half   clamp(half x, half a, half b);
>     half1  clamp(half1 x, half1 a, half1 b);
>     half2  clamp(half2 x, half2 a, half2 b);
>     half3  clamp(half3 x, half3 a, half3 b);
>     half4  clamp(half4 x, half4 a, half4 b);

>     fixed  clamp(fixed x, fixed a, fixed b);
>     fixed1 clamp(fixed1 x, fixed1 a, fixed1 b);
>     fixed2 clamp(fixed2 x, fixed2 a, fixed2 b);
>     fixed3 clamp(fixed3 x, fixed3 a, fixed3 b);
>     fixed4 clamp(fixed4 x, fixed4 a, fixed4 b);

>     float1 clamp(float1 x, float a, float b);
>     float2 clamp(float2 x, float a, float b);
>     float3 clamp(float3 x, float a, float b);
>     float4 clamp(float4 x, float a, float b);

>     half1  clamp(half1 x, half a, half b);
>     half2  clamp(half2 x, half a, half b);
>     half3  clamp(half3 x, half a, half b);
>     half4  clamp(half4 x, half a, half b);

>     fixed1 clamp(fixed1 x, fixed a, fixed b);
>     fixed2 clamp(fixed2 x, fixed a, fixed b);
>     fixed3 clamp(fixed3 x, fixed a, fixed b);
>     fixed4 clamp(fixed4 x, fixed a, fixed b);

> ## Parameters

> x
>   Vector or scalar to clamp.
> a
>   Vector or scalar for bottom of clamp range.
> b
>   Vector or scalar for top of clamp range.

> ## Description

> Returns x clamped to the range [a,b] as follows:

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

> For vectors, the returned vector contains the clamped result of each element of the vector x clamped using the respective element of vectors a and b.

> ## Reference Implementation

> clamp for float scalars could be implemented like this.

>     float clamp(float x, float a, float b)
>     {
>       return max(a, min(b, x));
>     }

> ## Profile Support

> clamp is supported in all profiles except fp20.

> ## See Also

> max, min, saturate