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 );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