|  | 
| template<typename T, int N> | 
| constexpr vector< float, N > | hlsl::asfloat (vector< T, N > V) | 
| template<typename T> | 
| constexpr float | hlsl::asfloat (T F) | 
|  | Interprets the bit pattern of x as float point number. 
 | 
| template<typename T, int N> | 
| constexpr vector< int, N > | hlsl::asint (vector< T, N > V) | 
| template<typename T> | 
| constexpr int | hlsl::asint (T F) | 
|  | Interprets the bit pattern of x as an integer. 
 | 
| template<typename T, int N> | 
| constexpr vector< uint, N > | hlsl::asuint (vector< T, N > V) | 
| template<typename T> | 
| constexpr uint | hlsl::asuint (T F) | 
|  | Interprets the bit pattern of x as an unsigned integer. 
 | 
| void | hlsl::asuint (double, out uint, out uint) | 
| void | hlsl::asuint (double2, out uint2, out uint2) | 
| void | hlsl::asuint (double3, out uint3, out uint3) | 
| void | hlsl::asuint (double4, out uint4, out uint4) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::distance (T X, T Y) | 
|  | Returns a distance scalar between X and Y. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::distance (T X, T Y) | 
| template<int N> | 
| const half | hlsl::distance (__detail::HLSL_FIXED_VECTOR< half, N > X, __detail::HLSL_FIXED_VECTOR< half, N > Y) | 
| template<int N> | 
| const float | hlsl::distance (__detail::HLSL_FIXED_VECTOR< float, N > X, __detail::HLSL_FIXED_VECTOR< float, N > Y) | 
| const float | hlsl::dot2add (half2 A, half2 B, float C) | 
|  | Dot product of 2 vector of type half and add a float scalar value. 
 | 
| const half4 | hlsl::dst (half4 Src0, half4 Src1) | 
| const float4 | hlsl::dst (float4 Src0, float4 Src1) | 
| const double4 | hlsl::dst (double4 Src0, double4 Src1) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::faceforward (T N, T I, T Ng) | 
|  | Flips the surface-normal (if needed) to face in a direction opposite to I. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::faceforward (T N, T I, T Ng) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< half, L > | hlsl::faceforward (__detail::HLSL_FIXED_VECTOR< half, L > N, __detail::HLSL_FIXED_VECTOR< half, L > I, __detail::HLSL_FIXED_VECTOR< half, L > Ng) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< float, L > | hlsl::faceforward (__detail::HLSL_FIXED_VECTOR< float, L > N, __detail::HLSL_FIXED_VECTOR< float, L > I, __detail::HLSL_FIXED_VECTOR< float, L > Ng) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::fmod (T X, T Y) | 
|  | Returns the linear interpolation of x to y. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::fmod (T X, T Y) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< half, N > | hlsl::fmod (__detail::HLSL_FIXED_VECTOR< half, N > X, __detail::HLSL_FIXED_VECTOR< half, N > Y) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< float, N > | hlsl::fmod (__detail::HLSL_FIXED_VECTOR< float, N > X, __detail::HLSL_FIXED_VECTOR< float, N > Y) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::ldexp (T X, T Exp) | 
|  | Returns the result of multiplying the specified value by two raised to the power of the specified exponent. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::ldexp (T X, T Exp) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< half, N > | hlsl::ldexp (__detail::HLSL_FIXED_VECTOR< half, N > X, __detail::HLSL_FIXED_VECTOR< half, N > Exp) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< float, N > | hlsl::ldexp (__detail::HLSL_FIXED_VECTOR< float, N > X, __detail::HLSL_FIXED_VECTOR< float, N > Exp) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::length (T X) | 
|  | Returns the length of the specified floating-point vector. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::length (T X) | 
| template<int N> | 
| const half | hlsl::length (__detail::HLSL_FIXED_VECTOR< half, N > X) | 
| template<int N> | 
| const float | hlsl::length (__detail::HLSL_FIXED_VECTOR< float, N > X) | 
| const half4 | hlsl::lit (half NDotL, half NDotH, half M) | 
| const float4 | hlsl::lit (float NDotL, float NDotH, float M) | 
| constexpr int4 | hlsl::D3DCOLORtoUBYTE4 (float4 V) | 
| constexpr uint32_t | hlsl::NonUniformResourceIndex (uint32_t Index) | 
|  | A compiler hint to indicate that a resource index varies across threads within a wave (i.e., it is non-uniform). 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::reflect (T I, T N) | 
|  | Returns a reflection using an incident ray, I, and a surface normal, N. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::reflect (T I, T N) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< half, L > | hlsl::reflect (__detail::HLSL_FIXED_VECTOR< half, L > I, __detail::HLSL_FIXED_VECTOR< half, L > N) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< float, L > | hlsl::reflect (__detail::HLSL_FIXED_VECTOR< float, L > I, __detail::HLSL_FIXED_VECTOR< float, L > N) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::refract (T I, T N, T eta) | 
|  | Returns a refraction using an entering ray, I, a surface normal, N and refraction index eta. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::refract (T I, T N, T eta) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< half, L > | hlsl::refract (__detail::HLSL_FIXED_VECTOR< half, L > I, __detail::HLSL_FIXED_VECTOR< half, L > N, half eta) | 
| template<int L> | 
| const __detail::HLSL_FIXED_VECTOR< float, L > | hlsl::refract (__detail::HLSL_FIXED_VECTOR< float, L > I, __detail::HLSL_FIXED_VECTOR< float, L > N, float eta) | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< half, T >::value, T > | hlsl::smoothstep (T Min, T Max, T X) | 
|  | Returns a smooth Hermite interpolation between 0 and 1, if X is in the range [Min, Max]. 
 | 
| template<typename T> | 
| const __detail::enable_if_t< __detail::is_arithmetic< T >::Value &&__detail::is_same< float, T >::value, T > | hlsl::smoothstep (T Min, T Max, T X) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< half, N > | hlsl::smoothstep (__detail::HLSL_FIXED_VECTOR< half, N > Min, __detail::HLSL_FIXED_VECTOR< half, N > Max, __detail::HLSL_FIXED_VECTOR< half, N > X) | 
| template<int N> | 
| const __detail::HLSL_FIXED_VECTOR< float, N > | hlsl::smoothstep (__detail::HLSL_FIXED_VECTOR< float, N > Min, __detail::HLSL_FIXED_VECTOR< float, N > Max, __detail::HLSL_FIXED_VECTOR< float, N > X) |