Skip to content

Commit 2ae81f4

Browse files
committed
is_scalar_v and is_floating_point_v now are true for float16_t
1 parent 6e15e45 commit 2ae81f4

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

include/nbl/builtin/hlsl/concepts/core.hlsl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ template<typename T>
2929
NBL_BOOL_CONCEPT UnsignedIntegral = !nbl::hlsl::is_signed_v<T> && ::nbl::hlsl::is_integral_v<T>;
3030

3131
template<typename T>
32-
NBL_BOOL_CONCEPT FloatingPoint = nbl::hlsl::is_floating_point_v<T> || nbl::hlsl::is_same_v<T, float16_t>;
32+
NBL_BOOL_CONCEPT FloatingPoint = nbl::hlsl::is_floating_point_v<T>;
3333

3434
template<typename T>
3535
NBL_BOOL_CONCEPT Boolean = nbl::hlsl::is_same_v<T, bool> || (nbl::hlsl::is_vector_v<T> && nbl::hlsl::is_same_v<typename vector_traits<T>::scalar_type, bool>);
3636

3737
template <typename T>
38-
NBL_BOOL_CONCEPT Scalar = nbl::hlsl::is_scalar_v<T> || nbl::hlsl::is_same_v<T, float16_t>;
38+
NBL_BOOL_CONCEPT Scalar = nbl::hlsl::is_scalar_v<T>;
3939

4040
template<typename T>
4141
NBL_BOOL_CONCEPT IntegralScalar = nbl::hlsl::is_integral_v<T> && nbl::hlsl::is_scalar_v<T>;
@@ -47,7 +47,7 @@ template<typename T>
4747
NBL_BOOL_CONCEPT UnsignedIntegralScalar = !nbl::hlsl::is_signed_v<T> && ::nbl::hlsl::is_integral_v<T> && nbl::hlsl::is_scalar_v<T>;
4848

4949
template<typename T>
50-
NBL_BOOL_CONCEPT FloatingPointScalar = (nbl::hlsl::is_floating_point_v<T> && nbl::hlsl::is_scalar_v<T>) || nbl::hlsl::is_same_v<T, float16_t>;
50+
NBL_BOOL_CONCEPT FloatingPointScalar = nbl::hlsl::is_floating_point_v<T> && nbl::hlsl::is_scalar_v<T>;
5151

5252
template<typename T>
5353
NBL_BOOL_CONCEPT BooleanScalar = concepts::Boolean<T> && nbl::hlsl::is_scalar_v<T>;

include/nbl/builtin/hlsl/type_traits.hlsl

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ concept is_scoped_enum = std::is_enum_v<E> && !std::is_convertible_v<E, std::und
1515
#include <nbl/builtin/hlsl/cpp_compat/basic.h>
1616
#include <nbl/builtin/hlsl/concepts.hlsl>
1717

18-
1918
// Since HLSL currently doesnt allow type aliases we declare them as seperate structs thus they are (WORKAROUND)s
2019
/*
2120
// helper class
@@ -516,7 +515,7 @@ template<class T>
516515
using is_unbounded_array = std::is_unbounded_array<T>;
517516

518517
template<class T>
519-
using is_scalar = std::is_scalar<T>;
518+
struct is_scalar : std::bool_constant<std::is_scalar_v<T> || std::is_same_v<T, float16_t>> {};
520519

521520
template<class T>
522521
struct is_signed : impl::base_type_forwarder<std::is_signed, T> {};
@@ -527,8 +526,14 @@ struct is_unsigned : impl::base_type_forwarder<std::is_unsigned, T> {};
527526
template<class T>
528527
struct is_integral : impl::base_type_forwarder<std::is_integral, T> {};
529528

529+
namespace impl
530+
{
531+
template<typename T>
532+
struct is_floating_point : std::bool_constant<std::is_floating_point_v<T> || std::is_same_v<T, float16_t>> {};
533+
}
534+
530535
template<class T>
531-
struct is_floating_point : impl::base_type_forwarder<std::is_floating_point, T> {};
536+
struct is_floating_point : impl::base_type_forwarder<impl::is_floating_point, T> {};
532537

533538
template<class T>
534539
using is_const = std::is_const<T>;

0 commit comments

Comments
 (0)