7#include "numeric_array.hpp"
10namespace hi::inline v1 {
12[[nodiscard]]
constexpr uint32_t make_unorm_a2bgr10_pack_value(f32x4
const &rhs)
noexcept
14 hilet r =
static_cast<uint32_t
>(std::clamp(rhs.r, 0.0f, 1.0f) * 1023.0f);
15 hilet g =
static_cast<uint32_t
>(std::clamp(rhs.g, 0.0f, 1.0f) * 1023.0f);
16 hilet b =
static_cast<uint32_t
>(std::clamp(rhs.b, 0.0f, 1.0f) * 1023.0f);
17 hilet a =
static_cast<uint32_t
>(std::clamp(rhs.a, 0.0f, 1.0f) * 3.0f);
18 return (a << 30) | (b << 20) | (g << 10) | r;
35 value = make_unorm_a2bgr10_pack_value(rhs);
39 explicit operator f32x4()
const noexcept
42 static_cast<float>((value >> 20) & 0x3ff) / 1023.0f,
43 static_cast<float>((value >> 10) & 0x3ff) / 1023.0f,
44 static_cast<float>(value & 0x3ff) / 1023.0f,
45 static_cast<float>(value >> 30) / 3.0f};
#define hilet
Invariant should be the default for variables.
Definition required.hpp:23
Definition unorm_a2bgr10_pack.hpp:21