Move Vectormath main
C++20 game and graphics mathematics
Loading...
Searching...
No Matches
Vectors.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <type_traits>
6
7#include <mv/math/Vec3.hpp>
9
10namespace mv::math::gpu
11{
13
14 struct alignas(16) Float3Slot16
15 {
16 float X{};
17 float Y{};
18 float Z{};
19 std::uint32_t Padding{};
20 };
21
22 [[nodiscard]] inline Vec3f Load(const Float3Slot16& value) noexcept
23 {
24 return Vec3f(value.X, value.Y, value.Z);
25 }
26
27 inline void Store(Float3Slot16& destination, Vec3f value) noexcept
28 {
29 destination = {value.X(), value.Y(), value.Z(), 0U};
30 }
31
32 [[nodiscard]] inline Float3Slot16 Store(Vec3f value) noexcept
33 {
34 return {value.X(), value.Y(), value.Z(), 0U};
35 }
36} // namespace mv::math::gpu
37
38static_assert(sizeof(mv::math::gpu::Float3Slot16) == 16);
39static_assert(alignof(mv::math::gpu::Float3Slot16) == 16);
40static_assert(offsetof(mv::math::gpu::Float3Slot16, X) == 0);
41static_assert(offsetof(mv::math::gpu::Float3Slot16, Y) == 4);
42static_assert(offsetof(mv::math::gpu::Float3Slot16, Z) == 8);
43static_assert(offsetof(mv::math::gpu::Float3Slot16, Padding) == 12);
44static_assert(std::is_trivially_copyable_v<mv::math::gpu::Float3Slot16>);
45static_assert(std::is_standard_layout_v<mv::math::gpu::Float3Slot16>);
void Store(Float3Slot16 &destination, Vec3f value) noexcept
Definition Vectors.hpp:27
Vec3f Load(const Float3Slot16 &value) noexcept
Definition Vectors.hpp:22
Vec3< float > Vec3f
Definition Vec3.hpp:344