31 template<
class T, glm::length_t C, glm::length_t R, glm::qualifier Q>
33 static_assert(std::is_trivially_copyable_v<T>,
"T must be trivially copyable to be treated as raw bytes!!");
35 std::vector<vec_data> data;
36 for (size_t c = 0; c < C; ++c) { data.emplace_back(glm::column(value, c)); }
41 template<
class T, size_t C, size_t R>
43 static_assert(std::is_trivially_copyable_v<T>,
"T must be trivially copyable to be treated as raw bytes!!");
47 std::vector<vec_data> data;
48 for (size_t c = 0; c < C; ++c) { data.emplace_back(column_type(value[c])); }
54 std::vector<vec_data> _data;
58 explicit mat_data(
const std::vector<vec_data>& data);
62 template<
class T, glm::length_t C, glm::length_t R, glm::qualifier Q>
64 template<
class T, glm::length_t C, glm::length_t R, glm::qualifier Q,
65 std::enable_if_t<(mstd::is_same_type_in_v<T,
bool,
int,
unsigned int,
float,
double> && mstd::is_in_range_v<C, 2, 4> &&
66 mstd::is_in_range_v<R, 2, 4>),
70 const glm::mat<C, R, T, Q>& value
72 mstd::is_in_range_v<C, 2, 4> && mstd::is_in_range_v<R, 2, 4>))
73 : mat_data(_get_data(value)) {
78 template<
class T, size_t C, size_t R>
80 template<
class T, size_t C, size_t R,
81 std::enable_if_t<(mstd::is_same_type_in_v<T,
bool,
int,
unsigned int,
float,
double> && mstd::is_in_range_v<C, 2, 4> &&
82 mstd::is_in_range_v<R, 2, 4>),
86 const mstd::mat<C, R, T>& value
88 mstd::is_in_range_v<C, 2, 4> && mstd::is_in_range_v<R, 2, 4>))
89 : mat_data(_get_data(value)) {
93 mat_data(
const mat_data& other);
95 mat_data(mat_data&& other)
noexcept;
101 mat_data& operator=(
const mat_data& other);
103 mat_data& operator=(mat_data&& other)
noexcept;
107 template<utils::glsl_mat T>
109 template<
class T, std::enable_if_t<utils::is_glsl_mat_v<T>,
bool> =
true>
112 return mat_traits<T>::get_value(*
this);
116 [[nodiscard]]
const std::vector<vec_data>& data()
const noexcept;
#define _GLSL_STRUCT_HAS_CXX20
check if compiler has c++ version greater or equal to c++20 and if user enabled c++20 features using ...
Definition config.hpp:142
#define _GLSL_STRUCT_HAS_CXX17
check if compiler has c++ version greater or equal to c++17
Definition config.hpp:130