plumageRender/3rdparty/glm/gtx/vec_swizzle.hpp

2785 lines
78 KiB
C++
Raw Normal View History

2023-05-17 14:49:05 +08:00
/// @ref gtx_vec_swizzle
/// @file glm/gtx/vec_swizzle.hpp
///
/// @see core (dependence)
///
/// @defgroup gtx_vec_swizzle GLM_GTX_vec_swizzle
/// @ingroup gtx
///
2023-06-07 10:52:04 +08:00
/// Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.
2023-05-17 14:49:05 +08:00
///
2023-06-07 10:52:04 +08:00
/// Functions to perform swizzle operation.
2023-05-17 14:49:05 +08:00
#pragma once
#include "../glm.hpp"
#ifndef GLM_ENABLE_EXPERIMENTAL
# error "GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
2025-02-15 20:55:58 +08:00
#elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
# pragma message("GLM: GLM_GTX_vec_swizzle extension included")
2023-05-17 14:49:05 +08:00
#endif
namespace glm {
2025-02-15 20:55:58 +08:00
/// @addtogroup gtx_vec_swizzle
/// @{
2023-05-17 14:49:05 +08:00
// xx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<1, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// yx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// yy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// yz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// yw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// ww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<2, T, Q> ww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<2, T, Q>(v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// xxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<1, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// xyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// xyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// xyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// xyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// xzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// xzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// xzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// xzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// xwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// xwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// xwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// xww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.x, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// yxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// yxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// yxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// yxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// yyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// yyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// yyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// yyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// yzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// yzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// yzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// yzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// ywx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// ywy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// ywz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// yww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.y, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// zxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// zxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// zxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// zxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// zyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// zyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// zyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// zyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// zwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// zwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// zwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// zww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.z, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// wxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// wxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// wxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// wxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// wyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// wyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// wyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// wyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// wzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// wzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// wzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// wzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// www
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<3, T, Q> www(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<3, T, Q>(v.w, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// xxxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<1, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xxxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xxxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xxxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// xxyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// xxyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// xxyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// xxyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// xxzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// xxzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// xxzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// xxzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// xxwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// xxwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// xxwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// xxww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// xyxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xyxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xyxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xyxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// xyyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// xyyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// xyyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// xyyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// xyzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// xyzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// xyzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// xyzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// xywx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// xywy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// xywz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// xyww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// xzxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xzxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xzxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xzxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// xzyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// xzyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// xzyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// xzyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// xzzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// xzzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// xzzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// xzzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// xzwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// xzwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// xzwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// xzww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// xwxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// xwxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// xwxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// xwxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// xwyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// xwyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// xwyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// xwyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// xwzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// xwzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// xwzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// xwzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// xwwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// xwwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// xwwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// xwww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// yxxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// yxxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// yxxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// yxxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// yxyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// yxyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// yxyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// yxyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// yxzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// yxzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// yxzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// yxzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// yxwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// yxwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// yxwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// yxww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// yyxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// yyxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// yyxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// yyxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// yyyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// yyyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<2, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// yyyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// yyyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// yyzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// yyzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// yyzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// yyzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// yywx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// yywy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// yywz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// yyww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// yzxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// yzxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// yzxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// yzxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// yzyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// yzyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// yzyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// yzyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// yzzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// yzzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// yzzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// yzzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// yzwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// yzwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// yzwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// yzww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// ywxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// ywxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// ywxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// ywxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// ywyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// ywyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// ywyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// ywyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// ywzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// ywzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// ywzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// ywzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// ywwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// ywwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// ywwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// ywww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// zxxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// zxxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// zxxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// zxxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// zxyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// zxyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// zxyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// zxyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zxzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zxzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zxzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zxzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// zxwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// zxwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// zxwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// zxww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// zyxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// zyxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// zyxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// zyxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// zyyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// zyyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// zyyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// zyyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zyzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zyzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zyzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zyzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// zywx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// zywy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// zywz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// zyww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// zzxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// zzxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// zzxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// zzxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// zzyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// zzyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// zzyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// zzyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zzzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zzzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zzzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(const glm::vec<3, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zzzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// zzwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// zzwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// zzwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// zzww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// zwxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// zwxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// zwxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// zwxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// zwyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// zwyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// zwyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// zwyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// zwzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// zwzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// zwzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// zwzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// zwwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// zwwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// zwwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// zwww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// wxxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// wxxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// wxxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// wxxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// wxyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// wxyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// wxyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// wxyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// wxzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// wxzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// wxzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// wxzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wxwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wxwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wxwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// wxww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// wyxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// wyxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// wyxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// wyxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// wyyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// wyyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// wyyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// wyyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// wyzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// wyzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// wyzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// wyzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wywx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wywy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wywz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// wyww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// wzxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// wzxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// wzxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// wzxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// wzyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// wzyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// wzyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// wzyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// wzzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// wzzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// wzzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// wzzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wzwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wzwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wzwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// wzww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
// wwxx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
2023-05-17 14:49:05 +08:00
}
// wwxy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
2023-05-17 14:49:05 +08:00
}
// wwxz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
2023-05-17 14:49:05 +08:00
}
// wwxw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
2023-05-17 14:49:05 +08:00
}
// wwyx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
2023-05-17 14:49:05 +08:00
}
// wwyy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
2023-05-17 14:49:05 +08:00
}
// wwyz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
2023-05-17 14:49:05 +08:00
}
// wwyw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
2023-05-17 14:49:05 +08:00
}
// wwzx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
2023-05-17 14:49:05 +08:00
}
// wwzy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
2023-05-17 14:49:05 +08:00
}
// wwzz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
2023-05-17 14:49:05 +08:00
}
// wwzw
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzw(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
2023-05-17 14:49:05 +08:00
}
// wwwx
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwx(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
2023-05-17 14:49:05 +08:00
}
// wwwy
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwy(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
2023-05-17 14:49:05 +08:00
}
// wwwz
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwz(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
2023-05-17 14:49:05 +08:00
}
// wwww
2023-06-07 10:52:04 +08:00
template<typename T, qualifier Q>
2025-02-15 20:55:58 +08:00
GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwww(const glm::vec<4, T, Q> &v) {
2023-06-07 10:52:04 +08:00
return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);
2023-05-17 14:49:05 +08:00
}
2025-02-15 20:55:58 +08:00
/// @}
}//namespace glm