16 template<std::
signed_
integral T>
24 value_{static_cast<
T>(literal)}
26 if (literal < std::numeric_limits<T>::min() or
27 literal > std::numeric_limits<T>::max()) {
29 throw std::runtime_error{
"provided value is out of range"};
43 explicit constexpr operator float()
const
48 explicit constexpr operator T()
const
70 const float fvalue =
static_cast<float>(value_) /
static_cast<float>(std::numeric_limits<T>::max());
71 return fvalue >= -1.0f ? fvalue : -1.0f;
75 static constexpr T to_normalized_int(
float v)
77 const float saturated = v > -1.0f ? (v < 1.0f ? v : 1.0f) : -1.0f;
78 return static_cast<T>(127.0f * saturated);
86 template<std::
signed_
integral T>
88 static constexpr bool value =
true;
constexpr float normalized_value() const
Definition snorm.h:58
consteval Snorm(int literal)
Definition snorm.h:23
constexpr Snorm()=default
constexpr T raw_value() const
Definition snorm.h:53
friend auto operator<=>(const Snorm &, const Snorm &)=default
constexpr Snorm(T raw_value)
Definition snorm.h:33
constexpr Snorm(float normalized_value)
Definition snorm.h:37
T value_type
Definition snorm.h:19
Definition custom_decoration_generator.h:5
static constexpr bool value
Definition scalar.h:12