File tree Expand file tree Collapse file tree 1 file changed +21
-5
lines changed Expand file tree Collapse file tree 1 file changed +21
-5
lines changed Original file line number Diff line number Diff line change 6
6
7
7
#include <nbl/builtin/hlsl/spirv_intrinsics/glsl.std.450 .hlsl>
8
8
#include <nbl/builtin/hlsl/impl/tgmath_impl.hlsl>
9
+ #include <nbl/builtin/hlsl/type_traits.hlsl>
10
+ #include <nbl/builtin/hlsl/vector_utils/vector_traits.hlsl>
9
11
// C++ headers
10
12
#ifndef __HLSL_VERSION
11
13
#include <algorithm>
@@ -83,17 +85,31 @@ inline FloatingPoint erfInv(FloatingPoint _x)
83
85
return p*x;
84
86
}
85
87
86
- template<typename T>
87
- inline T floor (NBL_CONST_REF_ARG (T ) val)
88
+ template<typename Scalar NBL_FUNC_REQUIRES (hlsl::is_floating_point_v<Scalar> && hlsl::is_scalar_v<Scalar>)
89
+ inline Scalar floor (NBL_CONST_REF_ARG (Scalar ) val)
88
90
{
89
91
#ifdef __HLSL_VERSION
90
- return spirv::floor<T >(val);
92
+ return spirv::floor<Scalar >(val);
91
93
#else
92
- return glm ::floor (val);
94
+ return std ::floor<Scalar> (val);
93
95
#endif
94
-
95
96
}
96
97
98
+ template<typename Vector NBL_FUNC_REQUIRES (hlsl::is_floating_point_v<Vector>&& hlsl::is_vector_v<Vector>)
99
+ inline Vector floor (NBL_CONST_REF_ARG (Vector) vec)
100
+ {
101
+ #ifdef __HLSL_VERSION
102
+ return spirv::floor<Vector>(vec);
103
+ #else
104
+ Vector output;
105
+ for (int32_t i = 0 ; i < hlsl::vector_traits<Vector>::Dimension; ++i)
106
+ output[i] = std::floor (vec[i]);
107
+
108
+ return output;
109
+ #endif
110
+ }
111
+
112
+
97
113
template<typename T, typename U>
98
114
inline T lerp (NBL_CONST_REF_ARG (T) x, NBL_CONST_REF_ARG (T) y, NBL_CONST_REF_ARG (U) a)
99
115
{
You can’t perform that action at this time.
0 commit comments