17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
18 # ifndef GLM_ENABLE_EXPERIMENTAL
19 # pragma message("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.")
21 # pragma message("GLM: GLM_GTX_vec_swizzle extension included")
27 template<
typename T, qualifier Q>
28 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<1, T, Q> &v) {
29 return glm::vec<2, T, Q>(v.x, v.x);
32 template<
typename T, qualifier Q>
33 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<2, T, Q> &v) {
34 return glm::vec<2, T, Q>(v.x, v.x);
37 template<
typename T, qualifier Q>
38 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<3, T, Q> &v) {
39 return glm::vec<2, T, Q>(v.x, v.x);
42 template<
typename T, qualifier Q>
43 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<4, T, Q> &v) {
44 return glm::vec<2, T, Q>(v.x, v.x);
48 template<
typename T, qualifier Q>
49 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<2, T, Q> &v) {
50 return glm::vec<2, T, Q>(v.x, v.y);
53 template<
typename T, qualifier Q>
54 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<3, T, Q> &v) {
55 return glm::vec<2, T, Q>(v.x, v.y);
58 template<
typename T, qualifier Q>
59 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<4, T, Q> &v) {
60 return glm::vec<2, T, Q>(v.x, v.y);
64 template<
typename T, qualifier Q>
65 GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<3, T, Q> &v) {
66 return glm::vec<2, T, Q>(v.x, v.z);
69 template<
typename T, qualifier Q>
70 GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<4, T, Q> &v) {
71 return glm::vec<2, T, Q>(v.x, v.z);
75 template<
typename T, qualifier Q>
76 GLM_INLINE glm::vec<2, T, Q> xw(
const glm::vec<4, T, Q> &v) {
77 return glm::vec<2, T, Q>(v.x, v.w);
81 template<
typename T, qualifier Q>
82 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<2, T, Q> &v) {
83 return glm::vec<2, T, Q>(v.y, v.x);
86 template<
typename T, qualifier Q>
87 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<3, T, Q> &v) {
88 return glm::vec<2, T, Q>(v.y, v.x);
91 template<
typename T, qualifier Q>
92 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<4, T, Q> &v) {
93 return glm::vec<2, T, Q>(v.y, v.x);
97 template<
typename T, qualifier Q>
98 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<2, T, Q> &v) {
99 return glm::vec<2, T, Q>(v.y, v.y);
102 template<
typename T, qualifier Q>
103 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<3, T, Q> &v) {
104 return glm::vec<2, T, Q>(v.y, v.y);
107 template<
typename T, qualifier Q>
108 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<4, T, Q> &v) {
109 return glm::vec<2, T, Q>(v.y, v.y);
113 template<
typename T, qualifier Q>
114 GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<3, T, Q> &v) {
115 return glm::vec<2, T, Q>(v.y, v.z);
118 template<
typename T, qualifier Q>
119 GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<4, T, Q> &v) {
120 return glm::vec<2, T, Q>(v.y, v.z);
124 template<
typename T, qualifier Q>
125 GLM_INLINE glm::vec<2, T, Q> yw(
const glm::vec<4, T, Q> &v) {
126 return glm::vec<2, T, Q>(v.y, v.w);
130 template<
typename T, qualifier Q>
131 GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<3, T, Q> &v) {
132 return glm::vec<2, T, Q>(v.z, v.x);
135 template<
typename T, qualifier Q>
136 GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<4, T, Q> &v) {
137 return glm::vec<2, T, Q>(v.z, v.x);
141 template<
typename T, qualifier Q>
142 GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<3, T, Q> &v) {
143 return glm::vec<2, T, Q>(v.z, v.y);
146 template<
typename T, qualifier Q>
147 GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<4, T, Q> &v) {
148 return glm::vec<2, T, Q>(v.z, v.y);
152 template<
typename T, qualifier Q>
153 GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<3, T, Q> &v) {
154 return glm::vec<2, T, Q>(v.z, v.z);
157 template<
typename T, qualifier Q>
158 GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<4, T, Q> &v) {
159 return glm::vec<2, T, Q>(v.z, v.z);
163 template<
typename T, qualifier Q>
164 GLM_INLINE glm::vec<2, T, Q> zw(
const glm::vec<4, T, Q> &v) {
165 return glm::vec<2, T, Q>(v.z, v.w);
169 template<
typename T, qualifier Q>
170 GLM_INLINE glm::vec<2, T, Q> wx(
const glm::vec<4, T, Q> &v) {
171 return glm::vec<2, T, Q>(v.w, v.x);
175 template<
typename T, qualifier Q>
176 GLM_INLINE glm::vec<2, T, Q> wy(
const glm::vec<4, T, Q> &v) {
177 return glm::vec<2, T, Q>(v.w, v.y);
181 template<
typename T, qualifier Q>
182 GLM_INLINE glm::vec<2, T, Q> wz(
const glm::vec<4, T, Q> &v) {
183 return glm::vec<2, T, Q>(v.w, v.z);
187 template<
typename T, qualifier Q>
188 GLM_INLINE glm::vec<2, T, Q> ww(
const glm::vec<4, T, Q> &v) {
189 return glm::vec<2, T, Q>(v.w, v.w);
193 template<
typename T, qualifier Q>
194 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<1, T, Q> &v) {
195 return glm::vec<3, T, Q>(v.x, v.x, v.x);
198 template<
typename T, qualifier Q>
199 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<2, T, Q> &v) {
200 return glm::vec<3, T, Q>(v.x, v.x, v.x);
203 template<
typename T, qualifier Q>
204 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<3, T, Q> &v) {
205 return glm::vec<3, T, Q>(v.x, v.x, v.x);
208 template<
typename T, qualifier Q>
209 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<4, T, Q> &v) {
210 return glm::vec<3, T, Q>(v.x, v.x, v.x);
214 template<
typename T, qualifier Q>
215 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<2, T, Q> &v) {
216 return glm::vec<3, T, Q>(v.x, v.x, v.y);
219 template<
typename T, qualifier Q>
220 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<3, T, Q> &v) {
221 return glm::vec<3, T, Q>(v.x, v.x, v.y);
224 template<
typename T, qualifier Q>
225 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<4, T, Q> &v) {
226 return glm::vec<3, T, Q>(v.x, v.x, v.y);
230 template<
typename T, qualifier Q>
231 GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<3, T, Q> &v) {
232 return glm::vec<3, T, Q>(v.x, v.x, v.z);
235 template<
typename T, qualifier Q>
236 GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<4, T, Q> &v) {
237 return glm::vec<3, T, Q>(v.x, v.x, v.z);
241 template<
typename T, qualifier Q>
242 GLM_INLINE glm::vec<3, T, Q> xxw(
const glm::vec<4, T, Q> &v) {
243 return glm::vec<3, T, Q>(v.x, v.x, v.w);
247 template<
typename T, qualifier Q>
248 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<2, T, Q> &v) {
249 return glm::vec<3, T, Q>(v.x, v.y, v.x);
252 template<
typename T, qualifier Q>
253 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<3, T, Q> &v) {
254 return glm::vec<3, T, Q>(v.x, v.y, v.x);
257 template<
typename T, qualifier Q>
258 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<4, T, Q> &v) {
259 return glm::vec<3, T, Q>(v.x, v.y, v.x);
263 template<
typename T, qualifier Q>
264 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<2, T, Q> &v) {
265 return glm::vec<3, T, Q>(v.x, v.y, v.y);
268 template<
typename T, qualifier Q>
269 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<3, T, Q> &v) {
270 return glm::vec<3, T, Q>(v.x, v.y, v.y);
273 template<
typename T, qualifier Q>
274 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<4, T, Q> &v) {
275 return glm::vec<3, T, Q>(v.x, v.y, v.y);
279 template<
typename T, qualifier Q>
280 GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<3, T, Q> &v) {
281 return glm::vec<3, T, Q>(v.x, v.y, v.z);
284 template<
typename T, qualifier Q>
285 GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<4, T, Q> &v) {
286 return glm::vec<3, T, Q>(v.x, v.y, v.z);
290 template<
typename T, qualifier Q>
291 GLM_INLINE glm::vec<3, T, Q> xyw(
const glm::vec<4, T, Q> &v) {
292 return glm::vec<3, T, Q>(v.x, v.y, v.w);
296 template<
typename T, qualifier Q>
297 GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<3, T, Q> &v) {
298 return glm::vec<3, T, Q>(v.x, v.z, v.x);
301 template<
typename T, qualifier Q>
302 GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<4, T, Q> &v) {
303 return glm::vec<3, T, Q>(v.x, v.z, v.x);
307 template<
typename T, qualifier Q>
308 GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<3, T, Q> &v) {
309 return glm::vec<3, T, Q>(v.x, v.z, v.y);
312 template<
typename T, qualifier Q>
313 GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<4, T, Q> &v) {
314 return glm::vec<3, T, Q>(v.x, v.z, v.y);
318 template<
typename T, qualifier Q>
319 GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<3, T, Q> &v) {
320 return glm::vec<3, T, Q>(v.x, v.z, v.z);
323 template<
typename T, qualifier Q>
324 GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<4, T, Q> &v) {
325 return glm::vec<3, T, Q>(v.x, v.z, v.z);
329 template<
typename T, qualifier Q>
330 GLM_INLINE glm::vec<3, T, Q> xzw(
const glm::vec<4, T, Q> &v) {
331 return glm::vec<3, T, Q>(v.x, v.z, v.w);
335 template<
typename T, qualifier Q>
336 GLM_INLINE glm::vec<3, T, Q> xwx(
const glm::vec<4, T, Q> &v) {
337 return glm::vec<3, T, Q>(v.x, v.w, v.x);
341 template<
typename T, qualifier Q>
342 GLM_INLINE glm::vec<3, T, Q> xwy(
const glm::vec<4, T, Q> &v) {
343 return glm::vec<3, T, Q>(v.x, v.w, v.y);
347 template<
typename T, qualifier Q>
348 GLM_INLINE glm::vec<3, T, Q> xwz(
const glm::vec<4, T, Q> &v) {
349 return glm::vec<3, T, Q>(v.x, v.w, v.z);
353 template<
typename T, qualifier Q>
354 GLM_INLINE glm::vec<3, T, Q> xww(
const glm::vec<4, T, Q> &v) {
355 return glm::vec<3, T, Q>(v.x, v.w, v.w);
359 template<
typename T, qualifier Q>
360 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<2, T, Q> &v) {
361 return glm::vec<3, T, Q>(v.y, v.x, v.x);
364 template<
typename T, qualifier Q>
365 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<3, T, Q> &v) {
366 return glm::vec<3, T, Q>(v.y, v.x, v.x);
369 template<
typename T, qualifier Q>
370 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<4, T, Q> &v) {
371 return glm::vec<3, T, Q>(v.y, v.x, v.x);
375 template<
typename T, qualifier Q>
376 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<2, T, Q> &v) {
377 return glm::vec<3, T, Q>(v.y, v.x, v.y);
380 template<
typename T, qualifier Q>
381 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<3, T, Q> &v) {
382 return glm::vec<3, T, Q>(v.y, v.x, v.y);
385 template<
typename T, qualifier Q>
386 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<4, T, Q> &v) {
387 return glm::vec<3, T, Q>(v.y, v.x, v.y);
391 template<
typename T, qualifier Q>
392 GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<3, T, Q> &v) {
393 return glm::vec<3, T, Q>(v.y, v.x, v.z);
396 template<
typename T, qualifier Q>
397 GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<4, T, Q> &v) {
398 return glm::vec<3, T, Q>(v.y, v.x, v.z);
402 template<
typename T, qualifier Q>
403 GLM_INLINE glm::vec<3, T, Q> yxw(
const glm::vec<4, T, Q> &v) {
404 return glm::vec<3, T, Q>(v.y, v.x, v.w);
408 template<
typename T, qualifier Q>
409 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<2, T, Q> &v) {
410 return glm::vec<3, T, Q>(v.y, v.y, v.x);
413 template<
typename T, qualifier Q>
414 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<3, T, Q> &v) {
415 return glm::vec<3, T, Q>(v.y, v.y, v.x);
418 template<
typename T, qualifier Q>
419 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<4, T, Q> &v) {
420 return glm::vec<3, T, Q>(v.y, v.y, v.x);
424 template<
typename T, qualifier Q>
425 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<2, T, Q> &v) {
426 return glm::vec<3, T, Q>(v.y, v.y, v.y);
429 template<
typename T, qualifier Q>
430 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<3, T, Q> &v) {
431 return glm::vec<3, T, Q>(v.y, v.y, v.y);
434 template<
typename T, qualifier Q>
435 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<4, T, Q> &v) {
436 return glm::vec<3, T, Q>(v.y, v.y, v.y);
440 template<
typename T, qualifier Q>
441 GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<3, T, Q> &v) {
442 return glm::vec<3, T, Q>(v.y, v.y, v.z);
445 template<
typename T, qualifier Q>
446 GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<4, T, Q> &v) {
447 return glm::vec<3, T, Q>(v.y, v.y, v.z);
451 template<
typename T, qualifier Q>
452 GLM_INLINE glm::vec<3, T, Q> yyw(
const glm::vec<4, T, Q> &v) {
453 return glm::vec<3, T, Q>(v.y, v.y, v.w);
457 template<
typename T, qualifier Q>
458 GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<3, T, Q> &v) {
459 return glm::vec<3, T, Q>(v.y, v.z, v.x);
462 template<
typename T, qualifier Q>
463 GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<4, T, Q> &v) {
464 return glm::vec<3, T, Q>(v.y, v.z, v.x);
468 template<
typename T, qualifier Q>
469 GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<3, T, Q> &v) {
470 return glm::vec<3, T, Q>(v.y, v.z, v.y);
473 template<
typename T, qualifier Q>
474 GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<4, T, Q> &v) {
475 return glm::vec<3, T, Q>(v.y, v.z, v.y);
479 template<
typename T, qualifier Q>
480 GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<3, T, Q> &v) {
481 return glm::vec<3, T, Q>(v.y, v.z, v.z);
484 template<
typename T, qualifier Q>
485 GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<4, T, Q> &v) {
486 return glm::vec<3, T, Q>(v.y, v.z, v.z);
490 template<
typename T, qualifier Q>
491 GLM_INLINE glm::vec<3, T, Q> yzw(
const glm::vec<4, T, Q> &v) {
492 return glm::vec<3, T, Q>(v.y, v.z, v.w);
496 template<
typename T, qualifier Q>
497 GLM_INLINE glm::vec<3, T, Q> ywx(
const glm::vec<4, T, Q> &v) {
498 return glm::vec<3, T, Q>(v.y, v.w, v.x);
502 template<
typename T, qualifier Q>
503 GLM_INLINE glm::vec<3, T, Q> ywy(
const glm::vec<4, T, Q> &v) {
504 return glm::vec<3, T, Q>(v.y, v.w, v.y);
508 template<
typename T, qualifier Q>
509 GLM_INLINE glm::vec<3, T, Q> ywz(
const glm::vec<4, T, Q> &v) {
510 return glm::vec<3, T, Q>(v.y, v.w, v.z);
514 template<
typename T, qualifier Q>
515 GLM_INLINE glm::vec<3, T, Q> yww(
const glm::vec<4, T, Q> &v) {
516 return glm::vec<3, T, Q>(v.y, v.w, v.w);
520 template<
typename T, qualifier Q>
521 GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<3, T, Q> &v) {
522 return glm::vec<3, T, Q>(v.z, v.x, v.x);
525 template<
typename T, qualifier Q>
526 GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<4, T, Q> &v) {
527 return glm::vec<3, T, Q>(v.z, v.x, v.x);
531 template<
typename T, qualifier Q>
532 GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<3, T, Q> &v) {
533 return glm::vec<3, T, Q>(v.z, v.x, v.y);
536 template<
typename T, qualifier Q>
537 GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<4, T, Q> &v) {
538 return glm::vec<3, T, Q>(v.z, v.x, v.y);
542 template<
typename T, qualifier Q>
543 GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<3, T, Q> &v) {
544 return glm::vec<3, T, Q>(v.z, v.x, v.z);
547 template<
typename T, qualifier Q>
548 GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<4, T, Q> &v) {
549 return glm::vec<3, T, Q>(v.z, v.x, v.z);
553 template<
typename T, qualifier Q>
554 GLM_INLINE glm::vec<3, T, Q> zxw(
const glm::vec<4, T, Q> &v) {
555 return glm::vec<3, T, Q>(v.z, v.x, v.w);
559 template<
typename T, qualifier Q>
560 GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<3, T, Q> &v) {
561 return glm::vec<3, T, Q>(v.z, v.y, v.x);
564 template<
typename T, qualifier Q>
565 GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<4, T, Q> &v) {
566 return glm::vec<3, T, Q>(v.z, v.y, v.x);
570 template<
typename T, qualifier Q>
571 GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<3, T, Q> &v) {
572 return glm::vec<3, T, Q>(v.z, v.y, v.y);
575 template<
typename T, qualifier Q>
576 GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<4, T, Q> &v) {
577 return glm::vec<3, T, Q>(v.z, v.y, v.y);
581 template<
typename T, qualifier Q>
582 GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<3, T, Q> &v) {
583 return glm::vec<3, T, Q>(v.z, v.y, v.z);
586 template<
typename T, qualifier Q>
587 GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<4, T, Q> &v) {
588 return glm::vec<3, T, Q>(v.z, v.y, v.z);
592 template<
typename T, qualifier Q>
593 GLM_INLINE glm::vec<3, T, Q> zyw(
const glm::vec<4, T, Q> &v) {
594 return glm::vec<3, T, Q>(v.z, v.y, v.w);
598 template<
typename T, qualifier Q>
599 GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<3, T, Q> &v) {
600 return glm::vec<3, T, Q>(v.z, v.z, v.x);
603 template<
typename T, qualifier Q>
604 GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<4, T, Q> &v) {
605 return glm::vec<3, T, Q>(v.z, v.z, v.x);
609 template<
typename T, qualifier Q>
610 GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<3, T, Q> &v) {
611 return glm::vec<3, T, Q>(v.z, v.z, v.y);
614 template<
typename T, qualifier Q>
615 GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<4, T, Q> &v) {
616 return glm::vec<3, T, Q>(v.z, v.z, v.y);
620 template<
typename T, qualifier Q>
621 GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<3, T, Q> &v) {
622 return glm::vec<3, T, Q>(v.z, v.z, v.z);
625 template<
typename T, qualifier Q>
626 GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<4, T, Q> &v) {
627 return glm::vec<3, T, Q>(v.z, v.z, v.z);
631 template<
typename T, qualifier Q>
632 GLM_INLINE glm::vec<3, T, Q> zzw(
const glm::vec<4, T, Q> &v) {
633 return glm::vec<3, T, Q>(v.z, v.z, v.w);
637 template<
typename T, qualifier Q>
638 GLM_INLINE glm::vec<3, T, Q> zwx(
const glm::vec<4, T, Q> &v) {
639 return glm::vec<3, T, Q>(v.z, v.w, v.x);
643 template<
typename T, qualifier Q>
644 GLM_INLINE glm::vec<3, T, Q> zwy(
const glm::vec<4, T, Q> &v) {
645 return glm::vec<3, T, Q>(v.z, v.w, v.y);
649 template<
typename T, qualifier Q>
650 GLM_INLINE glm::vec<3, T, Q> zwz(
const glm::vec<4, T, Q> &v) {
651 return glm::vec<3, T, Q>(v.z, v.w, v.z);
655 template<
typename T, qualifier Q>
656 GLM_INLINE glm::vec<3, T, Q> zww(
const glm::vec<4, T, Q> &v) {
657 return glm::vec<3, T, Q>(v.z, v.w, v.w);
661 template<
typename T, qualifier Q>
662 GLM_INLINE glm::vec<3, T, Q> wxx(
const glm::vec<4, T, Q> &v) {
663 return glm::vec<3, T, Q>(v.w, v.x, v.x);
667 template<
typename T, qualifier Q>
668 GLM_INLINE glm::vec<3, T, Q> wxy(
const glm::vec<4, T, Q> &v) {
669 return glm::vec<3, T, Q>(v.w, v.x, v.y);
673 template<
typename T, qualifier Q>
674 GLM_INLINE glm::vec<3, T, Q> wxz(
const glm::vec<4, T, Q> &v) {
675 return glm::vec<3, T, Q>(v.w, v.x, v.z);
679 template<
typename T, qualifier Q>
680 GLM_INLINE glm::vec<3, T, Q> wxw(
const glm::vec<4, T, Q> &v) {
681 return glm::vec<3, T, Q>(v.w, v.x, v.w);
685 template<
typename T, qualifier Q>
686 GLM_INLINE glm::vec<3, T, Q> wyx(
const glm::vec<4, T, Q> &v) {
687 return glm::vec<3, T, Q>(v.w, v.y, v.x);
691 template<
typename T, qualifier Q>
692 GLM_INLINE glm::vec<3, T, Q> wyy(
const glm::vec<4, T, Q> &v) {
693 return glm::vec<3, T, Q>(v.w, v.y, v.y);
697 template<
typename T, qualifier Q>
698 GLM_INLINE glm::vec<3, T, Q> wyz(
const glm::vec<4, T, Q> &v) {
699 return glm::vec<3, T, Q>(v.w, v.y, v.z);
703 template<
typename T, qualifier Q>
704 GLM_INLINE glm::vec<3, T, Q> wyw(
const glm::vec<4, T, Q> &v) {
705 return glm::vec<3, T, Q>(v.w, v.y, v.w);
709 template<
typename T, qualifier Q>
710 GLM_INLINE glm::vec<3, T, Q> wzx(
const glm::vec<4, T, Q> &v) {
711 return glm::vec<3, T, Q>(v.w, v.z, v.x);
715 template<
typename T, qualifier Q>
716 GLM_INLINE glm::vec<3, T, Q> wzy(
const glm::vec<4, T, Q> &v) {
717 return glm::vec<3, T, Q>(v.w, v.z, v.y);
721 template<
typename T, qualifier Q>
722 GLM_INLINE glm::vec<3, T, Q> wzz(
const glm::vec<4, T, Q> &v) {
723 return glm::vec<3, T, Q>(v.w, v.z, v.z);
727 template<
typename T, qualifier Q>
728 GLM_INLINE glm::vec<3, T, Q> wzw(
const glm::vec<4, T, Q> &v) {
729 return glm::vec<3, T, Q>(v.w, v.z, v.w);
733 template<
typename T, qualifier Q>
734 GLM_INLINE glm::vec<3, T, Q> wwx(
const glm::vec<4, T, Q> &v) {
735 return glm::vec<3, T, Q>(v.w, v.w, v.x);
739 template<
typename T, qualifier Q>
740 GLM_INLINE glm::vec<3, T, Q> wwy(
const glm::vec<4, T, Q> &v) {
741 return glm::vec<3, T, Q>(v.w, v.w, v.y);
745 template<
typename T, qualifier Q>
746 GLM_INLINE glm::vec<3, T, Q> wwz(
const glm::vec<4, T, Q> &v) {
747 return glm::vec<3, T, Q>(v.w, v.w, v.z);
751 template<
typename T, qualifier Q>
752 GLM_INLINE glm::vec<3, T, Q> www(
const glm::vec<4, T, Q> &v) {
753 return glm::vec<3, T, Q>(v.w, v.w, v.w);
757 template<
typename T, qualifier Q>
758 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<1, T, Q> &v) {
759 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
762 template<
typename T, qualifier Q>
763 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<2, T, Q> &v) {
764 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
767 template<
typename T, qualifier Q>
768 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<3, T, Q> &v) {
769 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
772 template<
typename T, qualifier Q>
773 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<4, T, Q> &v) {
774 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
778 template<
typename T, qualifier Q>
779 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<2, T, Q> &v) {
780 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
783 template<
typename T, qualifier Q>
784 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<3, T, Q> &v) {
785 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
788 template<
typename T, qualifier Q>
789 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<4, T, Q> &v) {
790 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
794 template<
typename T, qualifier Q>
795 GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<3, T, Q> &v) {
796 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
799 template<
typename T, qualifier Q>
800 GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<4, T, Q> &v) {
801 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
805 template<
typename T, qualifier Q>
806 GLM_INLINE glm::vec<4, T, Q> xxxw(
const glm::vec<4, T, Q> &v) {
807 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
811 template<
typename T, qualifier Q>
812 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<2, T, Q> &v) {
813 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
816 template<
typename T, qualifier Q>
817 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<3, T, Q> &v) {
818 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
821 template<
typename T, qualifier Q>
822 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<4, T, Q> &v) {
823 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
827 template<
typename T, qualifier Q>
828 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<2, T, Q> &v) {
829 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
832 template<
typename T, qualifier Q>
833 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<3, T, Q> &v) {
834 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
837 template<
typename T, qualifier Q>
838 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<4, T, Q> &v) {
839 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
843 template<
typename T, qualifier Q>
844 GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<3, T, Q> &v) {
845 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
848 template<
typename T, qualifier Q>
849 GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<4, T, Q> &v) {
850 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
854 template<
typename T, qualifier Q>
855 GLM_INLINE glm::vec<4, T, Q> xxyw(
const glm::vec<4, T, Q> &v) {
856 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
860 template<
typename T, qualifier Q>
861 GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<3, T, Q> &v) {
862 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
865 template<
typename T, qualifier Q>
866 GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<4, T, Q> &v) {
867 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
871 template<
typename T, qualifier Q>
872 GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<3, T, Q> &v) {
873 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
876 template<
typename T, qualifier Q>
877 GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<4, T, Q> &v) {
878 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
882 template<
typename T, qualifier Q>
883 GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<3, T, Q> &v) {
884 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
887 template<
typename T, qualifier Q>
888 GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<4, T, Q> &v) {
889 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
893 template<
typename T, qualifier Q>
894 GLM_INLINE glm::vec<4, T, Q> xxzw(
const glm::vec<4, T, Q> &v) {
895 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
899 template<
typename T, qualifier Q>
900 GLM_INLINE glm::vec<4, T, Q> xxwx(
const glm::vec<4, T, Q> &v) {
901 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
905 template<
typename T, qualifier Q>
906 GLM_INLINE glm::vec<4, T, Q> xxwy(
const glm::vec<4, T, Q> &v) {
907 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
911 template<
typename T, qualifier Q>
912 GLM_INLINE glm::vec<4, T, Q> xxwz(
const glm::vec<4, T, Q> &v) {
913 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
917 template<
typename T, qualifier Q>
918 GLM_INLINE glm::vec<4, T, Q> xxww(
const glm::vec<4, T, Q> &v) {
919 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
923 template<
typename T, qualifier Q>
924 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<2, T, Q> &v) {
925 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
928 template<
typename T, qualifier Q>
929 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<3, T, Q> &v) {
930 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
933 template<
typename T, qualifier Q>
934 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<4, T, Q> &v) {
935 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
939 template<
typename T, qualifier Q>
940 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<2, T, Q> &v) {
941 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
944 template<
typename T, qualifier Q>
945 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<3, T, Q> &v) {
946 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
949 template<
typename T, qualifier Q>
950 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<4, T, Q> &v) {
951 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
955 template<
typename T, qualifier Q>
956 GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<3, T, Q> &v) {
957 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
960 template<
typename T, qualifier Q>
961 GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<4, T, Q> &v) {
962 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
966 template<
typename T, qualifier Q>
967 GLM_INLINE glm::vec<4, T, Q> xyxw(
const glm::vec<4, T, Q> &v) {
968 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
972 template<
typename T, qualifier Q>
973 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<2, T, Q> &v) {
974 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
977 template<
typename T, qualifier Q>
978 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<3, T, Q> &v) {
979 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
982 template<
typename T, qualifier Q>
983 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<4, T, Q> &v) {
984 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
988 template<
typename T, qualifier Q>
989 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<2, T, Q> &v) {
990 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
993 template<
typename T, qualifier Q>
994 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<3, T, Q> &v) {
995 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
998 template<
typename T, qualifier Q>
999 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<4, T, Q> &v) {
1000 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
1004 template<
typename T, qualifier Q>
1005 GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<3, T, Q> &v) {
1006 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
1009 template<
typename T, qualifier Q>
1010 GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<4, T, Q> &v) {
1011 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
1015 template<
typename T, qualifier Q>
1016 GLM_INLINE glm::vec<4, T, Q> xyyw(
const glm::vec<4, T, Q> &v) {
1017 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
1021 template<
typename T, qualifier Q>
1022 GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<3, T, Q> &v) {
1023 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
1026 template<
typename T, qualifier Q>
1027 GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<4, T, Q> &v) {
1028 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
1032 template<
typename T, qualifier Q>
1033 GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<3, T, Q> &v) {
1034 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
1037 template<
typename T, qualifier Q>
1038 GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<4, T, Q> &v) {
1039 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
1043 template<
typename T, qualifier Q>
1044 GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<3, T, Q> &v) {
1045 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
1048 template<
typename T, qualifier Q>
1049 GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<4, T, Q> &v) {
1050 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
1054 template<
typename T, qualifier Q>
1055 GLM_INLINE glm::vec<4, T, Q> xyzw(
const glm::vec<4, T, Q> &v) {
1056 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
1060 template<
typename T, qualifier Q>
1061 GLM_INLINE glm::vec<4, T, Q> xywx(
const glm::vec<4, T, Q> &v) {
1062 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
1066 template<
typename T, qualifier Q>
1067 GLM_INLINE glm::vec<4, T, Q> xywy(
const glm::vec<4, T, Q> &v) {
1068 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
1072 template<
typename T, qualifier Q>
1073 GLM_INLINE glm::vec<4, T, Q> xywz(
const glm::vec<4, T, Q> &v) {
1074 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
1078 template<
typename T, qualifier Q>
1079 GLM_INLINE glm::vec<4, T, Q> xyww(
const glm::vec<4, T, Q> &v) {
1080 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
1084 template<
typename T, qualifier Q>
1085 GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<3, T, Q> &v) {
1086 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1089 template<
typename T, qualifier Q>
1090 GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<4, T, Q> &v) {
1091 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1095 template<
typename T, qualifier Q>
1096 GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<3, T, Q> &v) {
1097 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1100 template<
typename T, qualifier Q>
1101 GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<4, T, Q> &v) {
1102 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1106 template<
typename T, qualifier Q>
1107 GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<3, T, Q> &v) {
1108 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1111 template<
typename T, qualifier Q>
1112 GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<4, T, Q> &v) {
1113 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1117 template<
typename T, qualifier Q>
1118 GLM_INLINE glm::vec<4, T, Q> xzxw(
const glm::vec<4, T, Q> &v) {
1119 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
1123 template<
typename T, qualifier Q>
1124 GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<3, T, Q> &v) {
1125 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1128 template<
typename T, qualifier Q>
1129 GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<4, T, Q> &v) {
1130 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1134 template<
typename T, qualifier Q>
1135 GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<3, T, Q> &v) {
1136 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1139 template<
typename T, qualifier Q>
1140 GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<4, T, Q> &v) {
1141 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1145 template<
typename T, qualifier Q>
1146 GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<3, T, Q> &v) {
1147 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1150 template<
typename T, qualifier Q>
1151 GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<4, T, Q> &v) {
1152 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1156 template<
typename T, qualifier Q>
1157 GLM_INLINE glm::vec<4, T, Q> xzyw(
const glm::vec<4, T, Q> &v) {
1158 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
1162 template<
typename T, qualifier Q>
1163 GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<3, T, Q> &v) {
1164 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1167 template<
typename T, qualifier Q>
1168 GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<4, T, Q> &v) {
1169 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1173 template<
typename T, qualifier Q>
1174 GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<3, T, Q> &v) {
1175 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1178 template<
typename T, qualifier Q>
1179 GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<4, T, Q> &v) {
1180 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1184 template<
typename T, qualifier Q>
1185 GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<3, T, Q> &v) {
1186 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1189 template<
typename T, qualifier Q>
1190 GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<4, T, Q> &v) {
1191 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1195 template<
typename T, qualifier Q>
1196 GLM_INLINE glm::vec<4, T, Q> xzzw(
const glm::vec<4, T, Q> &v) {
1197 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
1201 template<
typename T, qualifier Q>
1202 GLM_INLINE glm::vec<4, T, Q> xzwx(
const glm::vec<4, T, Q> &v) {
1203 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
1207 template<
typename T, qualifier Q>
1208 GLM_INLINE glm::vec<4, T, Q> xzwy(
const glm::vec<4, T, Q> &v) {
1209 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
1213 template<
typename T, qualifier Q>
1214 GLM_INLINE glm::vec<4, T, Q> xzwz(
const glm::vec<4, T, Q> &v) {
1215 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
1219 template<
typename T, qualifier Q>
1220 GLM_INLINE glm::vec<4, T, Q> xzww(
const glm::vec<4, T, Q> &v) {
1221 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
1225 template<
typename T, qualifier Q>
1226 GLM_INLINE glm::vec<4, T, Q> xwxx(
const glm::vec<4, T, Q> &v) {
1227 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
1231 template<
typename T, qualifier Q>
1232 GLM_INLINE glm::vec<4, T, Q> xwxy(
const glm::vec<4, T, Q> &v) {
1233 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
1237 template<
typename T, qualifier Q>
1238 GLM_INLINE glm::vec<4, T, Q> xwxz(
const glm::vec<4, T, Q> &v) {
1239 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
1243 template<
typename T, qualifier Q>
1244 GLM_INLINE glm::vec<4, T, Q> xwxw(
const glm::vec<4, T, Q> &v) {
1245 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
1249 template<
typename T, qualifier Q>
1250 GLM_INLINE glm::vec<4, T, Q> xwyx(
const glm::vec<4, T, Q> &v) {
1251 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
1255 template<
typename T, qualifier Q>
1256 GLM_INLINE glm::vec<4, T, Q> xwyy(
const glm::vec<4, T, Q> &v) {
1257 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
1261 template<
typename T, qualifier Q>
1262 GLM_INLINE glm::vec<4, T, Q> xwyz(
const glm::vec<4, T, Q> &v) {
1263 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
1267 template<
typename T, qualifier Q>
1268 GLM_INLINE glm::vec<4, T, Q> xwyw(
const glm::vec<4, T, Q> &v) {
1269 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
1273 template<
typename T, qualifier Q>
1274 GLM_INLINE glm::vec<4, T, Q> xwzx(
const glm::vec<4, T, Q> &v) {
1275 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
1279 template<
typename T, qualifier Q>
1280 GLM_INLINE glm::vec<4, T, Q> xwzy(
const glm::vec<4, T, Q> &v) {
1281 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
1285 template<
typename T, qualifier Q>
1286 GLM_INLINE glm::vec<4, T, Q> xwzz(
const glm::vec<4, T, Q> &v) {
1287 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
1291 template<
typename T, qualifier Q>
1292 GLM_INLINE glm::vec<4, T, Q> xwzw(
const glm::vec<4, T, Q> &v) {
1293 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
1297 template<
typename T, qualifier Q>
1298 GLM_INLINE glm::vec<4, T, Q> xwwx(
const glm::vec<4, T, Q> &v) {
1299 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
1303 template<
typename T, qualifier Q>
1304 GLM_INLINE glm::vec<4, T, Q> xwwy(
const glm::vec<4, T, Q> &v) {
1305 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
1309 template<
typename T, qualifier Q>
1310 GLM_INLINE glm::vec<4, T, Q> xwwz(
const glm::vec<4, T, Q> &v) {
1311 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
1315 template<
typename T, qualifier Q>
1316 GLM_INLINE glm::vec<4, T, Q> xwww(
const glm::vec<4, T, Q> &v) {
1317 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
1321 template<
typename T, qualifier Q>
1322 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<2, T, Q> &v) {
1323 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1326 template<
typename T, qualifier Q>
1327 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<3, T, Q> &v) {
1328 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1331 template<
typename T, qualifier Q>
1332 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<4, T, Q> &v) {
1333 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1337 template<
typename T, qualifier Q>
1338 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<2, T, Q> &v) {
1339 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1342 template<
typename T, qualifier Q>
1343 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<3, T, Q> &v) {
1344 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1347 template<
typename T, qualifier Q>
1348 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<4, T, Q> &v) {
1349 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1353 template<
typename T, qualifier Q>
1354 GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<3, T, Q> &v) {
1355 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1358 template<
typename T, qualifier Q>
1359 GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<4, T, Q> &v) {
1360 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1364 template<
typename T, qualifier Q>
1365 GLM_INLINE glm::vec<4, T, Q> yxxw(
const glm::vec<4, T, Q> &v) {
1366 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
1370 template<
typename T, qualifier Q>
1371 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<2, T, Q> &v) {
1372 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1375 template<
typename T, qualifier Q>
1376 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<3, T, Q> &v) {
1377 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1380 template<
typename T, qualifier Q>
1381 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<4, T, Q> &v) {
1382 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1386 template<
typename T, qualifier Q>
1387 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<2, T, Q> &v) {
1388 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1391 template<
typename T, qualifier Q>
1392 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<3, T, Q> &v) {
1393 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1396 template<
typename T, qualifier Q>
1397 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<4, T, Q> &v) {
1398 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1402 template<
typename T, qualifier Q>
1403 GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<3, T, Q> &v) {
1404 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1407 template<
typename T, qualifier Q>
1408 GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<4, T, Q> &v) {
1409 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1413 template<
typename T, qualifier Q>
1414 GLM_INLINE glm::vec<4, T, Q> yxyw(
const glm::vec<4, T, Q> &v) {
1415 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
1419 template<
typename T, qualifier Q>
1420 GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<3, T, Q> &v) {
1421 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1424 template<
typename T, qualifier Q>
1425 GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<4, T, Q> &v) {
1426 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1430 template<
typename T, qualifier Q>
1431 GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<3, T, Q> &v) {
1432 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1435 template<
typename T, qualifier Q>
1436 GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<4, T, Q> &v) {
1437 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1441 template<
typename T, qualifier Q>
1442 GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<3, T, Q> &v) {
1443 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1446 template<
typename T, qualifier Q>
1447 GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<4, T, Q> &v) {
1448 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1452 template<
typename T, qualifier Q>
1453 GLM_INLINE glm::vec<4, T, Q> yxzw(
const glm::vec<4, T, Q> &v) {
1454 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
1458 template<
typename T, qualifier Q>
1459 GLM_INLINE glm::vec<4, T, Q> yxwx(
const glm::vec<4, T, Q> &v) {
1460 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
1464 template<
typename T, qualifier Q>
1465 GLM_INLINE glm::vec<4, T, Q> yxwy(
const glm::vec<4, T, Q> &v) {
1466 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
1470 template<
typename T, qualifier Q>
1471 GLM_INLINE glm::vec<4, T, Q> yxwz(
const glm::vec<4, T, Q> &v) {
1472 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
1476 template<
typename T, qualifier Q>
1477 GLM_INLINE glm::vec<4, T, Q> yxww(
const glm::vec<4, T, Q> &v) {
1478 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
1482 template<
typename T, qualifier Q>
1483 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<2, T, Q> &v) {
1484 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1487 template<
typename T, qualifier Q>
1488 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<3, T, Q> &v) {
1489 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1492 template<
typename T, qualifier Q>
1493 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<4, T, Q> &v) {
1494 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1498 template<
typename T, qualifier Q>
1499 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<2, T, Q> &v) {
1500 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1503 template<
typename T, qualifier Q>
1504 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<3, T, Q> &v) {
1505 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1508 template<
typename T, qualifier Q>
1509 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<4, T, Q> &v) {
1510 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1514 template<
typename T, qualifier Q>
1515 GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<3, T, Q> &v) {
1516 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1519 template<
typename T, qualifier Q>
1520 GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<4, T, Q> &v) {
1521 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1525 template<
typename T, qualifier Q>
1526 GLM_INLINE glm::vec<4, T, Q> yyxw(
const glm::vec<4, T, Q> &v) {
1527 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
1531 template<
typename T, qualifier Q>
1532 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<2, T, Q> &v) {
1533 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1536 template<
typename T, qualifier Q>
1537 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<3, T, Q> &v) {
1538 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1541 template<
typename T, qualifier Q>
1542 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<4, T, Q> &v) {
1543 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1547 template<
typename T, qualifier Q>
1548 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<2, T, Q> &v) {
1549 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1552 template<
typename T, qualifier Q>
1553 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<3, T, Q> &v) {
1554 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1557 template<
typename T, qualifier Q>
1558 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<4, T, Q> &v) {
1559 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1563 template<
typename T, qualifier Q>
1564 GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<3, T, Q> &v) {
1565 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1568 template<
typename T, qualifier Q>
1569 GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<4, T, Q> &v) {
1570 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1574 template<
typename T, qualifier Q>
1575 GLM_INLINE glm::vec<4, T, Q> yyyw(
const glm::vec<4, T, Q> &v) {
1576 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
1580 template<
typename T, qualifier Q>
1581 GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<3, T, Q> &v) {
1582 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1585 template<
typename T, qualifier Q>
1586 GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<4, T, Q> &v) {
1587 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1591 template<
typename T, qualifier Q>
1592 GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<3, T, Q> &v) {
1593 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1596 template<
typename T, qualifier Q>
1597 GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<4, T, Q> &v) {
1598 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1602 template<
typename T, qualifier Q>
1603 GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<3, T, Q> &v) {
1604 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1607 template<
typename T, qualifier Q>
1608 GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<4, T, Q> &v) {
1609 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1613 template<
typename T, qualifier Q>
1614 GLM_INLINE glm::vec<4, T, Q> yyzw(
const glm::vec<4, T, Q> &v) {
1615 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
1619 template<
typename T, qualifier Q>
1620 GLM_INLINE glm::vec<4, T, Q> yywx(
const glm::vec<4, T, Q> &v) {
1621 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
1625 template<
typename T, qualifier Q>
1626 GLM_INLINE glm::vec<4, T, Q> yywy(
const glm::vec<4, T, Q> &v) {
1627 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
1631 template<
typename T, qualifier Q>
1632 GLM_INLINE glm::vec<4, T, Q> yywz(
const glm::vec<4, T, Q> &v) {
1633 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
1637 template<
typename T, qualifier Q>
1638 GLM_INLINE glm::vec<4, T, Q> yyww(
const glm::vec<4, T, Q> &v) {
1639 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
1643 template<
typename T, qualifier Q>
1644 GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<3, T, Q> &v) {
1645 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1648 template<
typename T, qualifier Q>
1649 GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<4, T, Q> &v) {
1650 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1654 template<
typename T, qualifier Q>
1655 GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<3, T, Q> &v) {
1656 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1659 template<
typename T, qualifier Q>
1660 GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<4, T, Q> &v) {
1661 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1665 template<
typename T, qualifier Q>
1666 GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<3, T, Q> &v) {
1667 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1670 template<
typename T, qualifier Q>
1671 GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<4, T, Q> &v) {
1672 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1676 template<
typename T, qualifier Q>
1677 GLM_INLINE glm::vec<4, T, Q> yzxw(
const glm::vec<4, T, Q> &v) {
1678 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
1682 template<
typename T, qualifier Q>
1683 GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<3, T, Q> &v) {
1684 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1687 template<
typename T, qualifier Q>
1688 GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<4, T, Q> &v) {
1689 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1693 template<
typename T, qualifier Q>
1694 GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<3, T, Q> &v) {
1695 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1698 template<
typename T, qualifier Q>
1699 GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<4, T, Q> &v) {
1700 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1704 template<
typename T, qualifier Q>
1705 GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<3, T, Q> &v) {
1706 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1709 template<
typename T, qualifier Q>
1710 GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<4, T, Q> &v) {
1711 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1715 template<
typename T, qualifier Q>
1716 GLM_INLINE glm::vec<4, T, Q> yzyw(
const glm::vec<4, T, Q> &v) {
1717 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
1721 template<
typename T, qualifier Q>
1722 GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<3, T, Q> &v) {
1723 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1726 template<
typename T, qualifier Q>
1727 GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<4, T, Q> &v) {
1728 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1732 template<
typename T, qualifier Q>
1733 GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<3, T, Q> &v) {
1734 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1737 template<
typename T, qualifier Q>
1738 GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<4, T, Q> &v) {
1739 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1743 template<
typename T, qualifier Q>
1744 GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<3, T, Q> &v) {
1745 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1748 template<
typename T, qualifier Q>
1749 GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<4, T, Q> &v) {
1750 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1754 template<
typename T, qualifier Q>
1755 GLM_INLINE glm::vec<4, T, Q> yzzw(
const glm::vec<4, T, Q> &v) {
1756 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
1760 template<
typename T, qualifier Q>
1761 GLM_INLINE glm::vec<4, T, Q> yzwx(
const glm::vec<4, T, Q> &v) {
1762 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
1766 template<
typename T, qualifier Q>
1767 GLM_INLINE glm::vec<4, T, Q> yzwy(
const glm::vec<4, T, Q> &v) {
1768 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
1772 template<
typename T, qualifier Q>
1773 GLM_INLINE glm::vec<4, T, Q> yzwz(
const glm::vec<4, T, Q> &v) {
1774 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
1778 template<
typename T, qualifier Q>
1779 GLM_INLINE glm::vec<4, T, Q> yzww(
const glm::vec<4, T, Q> &v) {
1780 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
1784 template<
typename T, qualifier Q>
1785 GLM_INLINE glm::vec<4, T, Q> ywxx(
const glm::vec<4, T, Q> &v) {
1786 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
1790 template<
typename T, qualifier Q>
1791 GLM_INLINE glm::vec<4, T, Q> ywxy(
const glm::vec<4, T, Q> &v) {
1792 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
1796 template<
typename T, qualifier Q>
1797 GLM_INLINE glm::vec<4, T, Q> ywxz(
const glm::vec<4, T, Q> &v) {
1798 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
1802 template<
typename T, qualifier Q>
1803 GLM_INLINE glm::vec<4, T, Q> ywxw(
const glm::vec<4, T, Q> &v) {
1804 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
1808 template<
typename T, qualifier Q>
1809 GLM_INLINE glm::vec<4, T, Q> ywyx(
const glm::vec<4, T, Q> &v) {
1810 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
1814 template<
typename T, qualifier Q>
1815 GLM_INLINE glm::vec<4, T, Q> ywyy(
const glm::vec<4, T, Q> &v) {
1816 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
1820 template<
typename T, qualifier Q>
1821 GLM_INLINE glm::vec<4, T, Q> ywyz(
const glm::vec<4, T, Q> &v) {
1822 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
1826 template<
typename T, qualifier Q>
1827 GLM_INLINE glm::vec<4, T, Q> ywyw(
const glm::vec<4, T, Q> &v) {
1828 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
1832 template<
typename T, qualifier Q>
1833 GLM_INLINE glm::vec<4, T, Q> ywzx(
const glm::vec<4, T, Q> &v) {
1834 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
1838 template<
typename T, qualifier Q>
1839 GLM_INLINE glm::vec<4, T, Q> ywzy(
const glm::vec<4, T, Q> &v) {
1840 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
1844 template<
typename T, qualifier Q>
1845 GLM_INLINE glm::vec<4, T, Q> ywzz(
const glm::vec<4, T, Q> &v) {
1846 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
1850 template<
typename T, qualifier Q>
1851 GLM_INLINE glm::vec<4, T, Q> ywzw(
const glm::vec<4, T, Q> &v) {
1852 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
1856 template<
typename T, qualifier Q>
1857 GLM_INLINE glm::vec<4, T, Q> ywwx(
const glm::vec<4, T, Q> &v) {
1858 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
1862 template<
typename T, qualifier Q>
1863 GLM_INLINE glm::vec<4, T, Q> ywwy(
const glm::vec<4, T, Q> &v) {
1864 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
1868 template<
typename T, qualifier Q>
1869 GLM_INLINE glm::vec<4, T, Q> ywwz(
const glm::vec<4, T, Q> &v) {
1870 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
1874 template<
typename T, qualifier Q>
1875 GLM_INLINE glm::vec<4, T, Q> ywww(
const glm::vec<4, T, Q> &v) {
1876 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
1880 template<
typename T, qualifier Q>
1881 GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<3, T, Q> &v) {
1882 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1885 template<
typename T, qualifier Q>
1886 GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<4, T, Q> &v) {
1887 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1891 template<
typename T, qualifier Q>
1892 GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<3, T, Q> &v) {
1893 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1896 template<
typename T, qualifier Q>
1897 GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<4, T, Q> &v) {
1898 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1902 template<
typename T, qualifier Q>
1903 GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<3, T, Q> &v) {
1904 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1907 template<
typename T, qualifier Q>
1908 GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<4, T, Q> &v) {
1909 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1913 template<
typename T, qualifier Q>
1914 GLM_INLINE glm::vec<4, T, Q> zxxw(
const glm::vec<4, T, Q> &v) {
1915 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
1919 template<
typename T, qualifier Q>
1920 GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<3, T, Q> &v) {
1921 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1924 template<
typename T, qualifier Q>
1925 GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<4, T, Q> &v) {
1926 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1930 template<
typename T, qualifier Q>
1931 GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<3, T, Q> &v) {
1932 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1935 template<
typename T, qualifier Q>
1936 GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<4, T, Q> &v) {
1937 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1941 template<
typename T, qualifier Q>
1942 GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<3, T, Q> &v) {
1943 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1946 template<
typename T, qualifier Q>
1947 GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<4, T, Q> &v) {
1948 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1952 template<
typename T, qualifier Q>
1953 GLM_INLINE glm::vec<4, T, Q> zxyw(
const glm::vec<4, T, Q> &v) {
1954 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
1958 template<
typename T, qualifier Q>
1959 GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<3, T, Q> &v) {
1960 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1963 template<
typename T, qualifier Q>
1964 GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<4, T, Q> &v) {
1965 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1969 template<
typename T, qualifier Q>
1970 GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<3, T, Q> &v) {
1971 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1974 template<
typename T, qualifier Q>
1975 GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<4, T, Q> &v) {
1976 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1980 template<
typename T, qualifier Q>
1981 GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<3, T, Q> &v) {
1982 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1985 template<
typename T, qualifier Q>
1986 GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<4, T, Q> &v) {
1987 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1991 template<
typename T, qualifier Q>
1992 GLM_INLINE glm::vec<4, T, Q> zxzw(
const glm::vec<4, T, Q> &v) {
1993 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
1997 template<
typename T, qualifier Q>
1998 GLM_INLINE glm::vec<4, T, Q> zxwx(
const glm::vec<4, T, Q> &v) {
1999 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
2003 template<
typename T, qualifier Q>
2004 GLM_INLINE glm::vec<4, T, Q> zxwy(
const glm::vec<4, T, Q> &v) {
2005 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
2009 template<
typename T, qualifier Q>
2010 GLM_INLINE glm::vec<4, T, Q> zxwz(
const glm::vec<4, T, Q> &v) {
2011 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
2015 template<
typename T, qualifier Q>
2016 GLM_INLINE glm::vec<4, T, Q> zxww(
const glm::vec<4, T, Q> &v) {
2017 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
2021 template<
typename T, qualifier Q>
2022 GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<3, T, Q> &v) {
2023 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2026 template<
typename T, qualifier Q>
2027 GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<4, T, Q> &v) {
2028 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2032 template<
typename T, qualifier Q>
2033 GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<3, T, Q> &v) {
2034 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2037 template<
typename T, qualifier Q>
2038 GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<4, T, Q> &v) {
2039 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2043 template<
typename T, qualifier Q>
2044 GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<3, T, Q> &v) {
2045 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2048 template<
typename T, qualifier Q>
2049 GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<4, T, Q> &v) {
2050 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2054 template<
typename T, qualifier Q>
2055 GLM_INLINE glm::vec<4, T, Q> zyxw(
const glm::vec<4, T, Q> &v) {
2056 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
2060 template<
typename T, qualifier Q>
2061 GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<3, T, Q> &v) {
2062 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2065 template<
typename T, qualifier Q>
2066 GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<4, T, Q> &v) {
2067 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2071 template<
typename T, qualifier Q>
2072 GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<3, T, Q> &v) {
2073 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2076 template<
typename T, qualifier Q>
2077 GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<4, T, Q> &v) {
2078 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2082 template<
typename T, qualifier Q>
2083 GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<3, T, Q> &v) {
2084 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2087 template<
typename T, qualifier Q>
2088 GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<4, T, Q> &v) {
2089 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2093 template<
typename T, qualifier Q>
2094 GLM_INLINE glm::vec<4, T, Q> zyyw(
const glm::vec<4, T, Q> &v) {
2095 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
2099 template<
typename T, qualifier Q>
2100 GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<3, T, Q> &v) {
2101 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2104 template<
typename T, qualifier Q>
2105 GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<4, T, Q> &v) {
2106 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2110 template<
typename T, qualifier Q>
2111 GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<3, T, Q> &v) {
2112 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2115 template<
typename T, qualifier Q>
2116 GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<4, T, Q> &v) {
2117 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2121 template<
typename T, qualifier Q>
2122 GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<3, T, Q> &v) {
2123 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2126 template<
typename T, qualifier Q>
2127 GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<4, T, Q> &v) {
2128 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2132 template<
typename T, qualifier Q>
2133 GLM_INLINE glm::vec<4, T, Q> zyzw(
const glm::vec<4, T, Q> &v) {
2134 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
2138 template<
typename T, qualifier Q>
2139 GLM_INLINE glm::vec<4, T, Q> zywx(
const glm::vec<4, T, Q> &v) {
2140 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
2144 template<
typename T, qualifier Q>
2145 GLM_INLINE glm::vec<4, T, Q> zywy(
const glm::vec<4, T, Q> &v) {
2146 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
2150 template<
typename T, qualifier Q>
2151 GLM_INLINE glm::vec<4, T, Q> zywz(
const glm::vec<4, T, Q> &v) {
2152 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
2156 template<
typename T, qualifier Q>
2157 GLM_INLINE glm::vec<4, T, Q> zyww(
const glm::vec<4, T, Q> &v) {
2158 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
2162 template<
typename T, qualifier Q>
2163 GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<3, T, Q> &v) {
2164 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2167 template<
typename T, qualifier Q>
2168 GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<4, T, Q> &v) {
2169 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2173 template<
typename T, qualifier Q>
2174 GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<3, T, Q> &v) {
2175 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2178 template<
typename T, qualifier Q>
2179 GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<4, T, Q> &v) {
2180 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2184 template<
typename T, qualifier Q>
2185 GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<3, T, Q> &v) {
2186 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2189 template<
typename T, qualifier Q>
2190 GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<4, T, Q> &v) {
2191 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2195 template<
typename T, qualifier Q>
2196 GLM_INLINE glm::vec<4, T, Q> zzxw(
const glm::vec<4, T, Q> &v) {
2197 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
2201 template<
typename T, qualifier Q>
2202 GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<3, T, Q> &v) {
2203 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2206 template<
typename T, qualifier Q>
2207 GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<4, T, Q> &v) {
2208 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2212 template<
typename T, qualifier Q>
2213 GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<3, T, Q> &v) {
2214 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2217 template<
typename T, qualifier Q>
2218 GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<4, T, Q> &v) {
2219 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2223 template<
typename T, qualifier Q>
2224 GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<3, T, Q> &v) {
2225 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2228 template<
typename T, qualifier Q>
2229 GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<4, T, Q> &v) {
2230 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2234 template<
typename T, qualifier Q>
2235 GLM_INLINE glm::vec<4, T, Q> zzyw(
const glm::vec<4, T, Q> &v) {
2236 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
2240 template<
typename T, qualifier Q>
2241 GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<3, T, Q> &v) {
2242 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2245 template<
typename T, qualifier Q>
2246 GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<4, T, Q> &v) {
2247 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2251 template<
typename T, qualifier Q>
2252 GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<3, T, Q> &v) {
2253 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2256 template<
typename T, qualifier Q>
2257 GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<4, T, Q> &v) {
2258 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2262 template<
typename T, qualifier Q>
2263 GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<3, T, Q> &v) {
2264 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2267 template<
typename T, qualifier Q>
2268 GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<4, T, Q> &v) {
2269 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2273 template<
typename T, qualifier Q>
2274 GLM_INLINE glm::vec<4, T, Q> zzzw(
const glm::vec<4, T, Q> &v) {
2275 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
2279 template<
typename T, qualifier Q>
2280 GLM_INLINE glm::vec<4, T, Q> zzwx(
const glm::vec<4, T, Q> &v) {
2281 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
2285 template<
typename T, qualifier Q>
2286 GLM_INLINE glm::vec<4, T, Q> zzwy(
const glm::vec<4, T, Q> &v) {
2287 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
2291 template<
typename T, qualifier Q>
2292 GLM_INLINE glm::vec<4, T, Q> zzwz(
const glm::vec<4, T, Q> &v) {
2293 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
2297 template<
typename T, qualifier Q>
2298 GLM_INLINE glm::vec<4, T, Q> zzww(
const glm::vec<4, T, Q> &v) {
2299 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
2303 template<
typename T, qualifier Q>
2304 GLM_INLINE glm::vec<4, T, Q> zwxx(
const glm::vec<4, T, Q> &v) {
2305 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
2309 template<
typename T, qualifier Q>
2310 GLM_INLINE glm::vec<4, T, Q> zwxy(
const glm::vec<4, T, Q> &v) {
2311 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
2315 template<
typename T, qualifier Q>
2316 GLM_INLINE glm::vec<4, T, Q> zwxz(
const glm::vec<4, T, Q> &v) {
2317 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
2321 template<
typename T, qualifier Q>
2322 GLM_INLINE glm::vec<4, T, Q> zwxw(
const glm::vec<4, T, Q> &v) {
2323 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
2327 template<
typename T, qualifier Q>
2328 GLM_INLINE glm::vec<4, T, Q> zwyx(
const glm::vec<4, T, Q> &v) {
2329 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
2333 template<
typename T, qualifier Q>
2334 GLM_INLINE glm::vec<4, T, Q> zwyy(
const glm::vec<4, T, Q> &v) {
2335 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
2339 template<
typename T, qualifier Q>
2340 GLM_INLINE glm::vec<4, T, Q> zwyz(
const glm::vec<4, T, Q> &v) {
2341 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
2345 template<
typename T, qualifier Q>
2346 GLM_INLINE glm::vec<4, T, Q> zwyw(
const glm::vec<4, T, Q> &v) {
2347 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
2351 template<
typename T, qualifier Q>
2352 GLM_INLINE glm::vec<4, T, Q> zwzx(
const glm::vec<4, T, Q> &v) {
2353 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
2357 template<
typename T, qualifier Q>
2358 GLM_INLINE glm::vec<4, T, Q> zwzy(
const glm::vec<4, T, Q> &v) {
2359 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
2363 template<
typename T, qualifier Q>
2364 GLM_INLINE glm::vec<4, T, Q> zwzz(
const glm::vec<4, T, Q> &v) {
2365 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
2369 template<
typename T, qualifier Q>
2370 GLM_INLINE glm::vec<4, T, Q> zwzw(
const glm::vec<4, T, Q> &v) {
2371 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
2375 template<
typename T, qualifier Q>
2376 GLM_INLINE glm::vec<4, T, Q> zwwx(
const glm::vec<4, T, Q> &v) {
2377 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
2381 template<
typename T, qualifier Q>
2382 GLM_INLINE glm::vec<4, T, Q> zwwy(
const glm::vec<4, T, Q> &v) {
2383 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
2387 template<
typename T, qualifier Q>
2388 GLM_INLINE glm::vec<4, T, Q> zwwz(
const glm::vec<4, T, Q> &v) {
2389 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
2393 template<
typename T, qualifier Q>
2394 GLM_INLINE glm::vec<4, T, Q> zwww(
const glm::vec<4, T, Q> &v) {
2395 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
2399 template<
typename T, qualifier Q>
2400 GLM_INLINE glm::vec<4, T, Q> wxxx(
const glm::vec<4, T, Q> &v) {
2401 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
2405 template<
typename T, qualifier Q>
2406 GLM_INLINE glm::vec<4, T, Q> wxxy(
const glm::vec<4, T, Q> &v) {
2407 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
2411 template<
typename T, qualifier Q>
2412 GLM_INLINE glm::vec<4, T, Q> wxxz(
const glm::vec<4, T, Q> &v) {
2413 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
2417 template<
typename T, qualifier Q>
2418 GLM_INLINE glm::vec<4, T, Q> wxxw(
const glm::vec<4, T, Q> &v) {
2419 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
2423 template<
typename T, qualifier Q>
2424 GLM_INLINE glm::vec<4, T, Q> wxyx(
const glm::vec<4, T, Q> &v) {
2425 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
2429 template<
typename T, qualifier Q>
2430 GLM_INLINE glm::vec<4, T, Q> wxyy(
const glm::vec<4, T, Q> &v) {
2431 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
2435 template<
typename T, qualifier Q>
2436 GLM_INLINE glm::vec<4, T, Q> wxyz(
const glm::vec<4, T, Q> &v) {
2437 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
2441 template<
typename T, qualifier Q>
2442 GLM_INLINE glm::vec<4, T, Q> wxyw(
const glm::vec<4, T, Q> &v) {
2443 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
2447 template<
typename T, qualifier Q>
2448 GLM_INLINE glm::vec<4, T, Q> wxzx(
const glm::vec<4, T, Q> &v) {
2449 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
2453 template<
typename T, qualifier Q>
2454 GLM_INLINE glm::vec<4, T, Q> wxzy(
const glm::vec<4, T, Q> &v) {
2455 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
2459 template<
typename T, qualifier Q>
2460 GLM_INLINE glm::vec<4, T, Q> wxzz(
const glm::vec<4, T, Q> &v) {
2461 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
2465 template<
typename T, qualifier Q>
2466 GLM_INLINE glm::vec<4, T, Q> wxzw(
const glm::vec<4, T, Q> &v) {
2467 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
2471 template<
typename T, qualifier Q>
2472 GLM_INLINE glm::vec<4, T, Q> wxwx(
const glm::vec<4, T, Q> &v) {
2473 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
2477 template<
typename T, qualifier Q>
2478 GLM_INLINE glm::vec<4, T, Q> wxwy(
const glm::vec<4, T, Q> &v) {
2479 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
2483 template<
typename T, qualifier Q>
2484 GLM_INLINE glm::vec<4, T, Q> wxwz(
const glm::vec<4, T, Q> &v) {
2485 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
2489 template<
typename T, qualifier Q>
2490 GLM_INLINE glm::vec<4, T, Q> wxww(
const glm::vec<4, T, Q> &v) {
2491 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
2495 template<
typename T, qualifier Q>
2496 GLM_INLINE glm::vec<4, T, Q> wyxx(
const glm::vec<4, T, Q> &v) {
2497 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
2501 template<
typename T, qualifier Q>
2502 GLM_INLINE glm::vec<4, T, Q> wyxy(
const glm::vec<4, T, Q> &v) {
2503 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
2507 template<
typename T, qualifier Q>
2508 GLM_INLINE glm::vec<4, T, Q> wyxz(
const glm::vec<4, T, Q> &v) {
2509 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
2513 template<
typename T, qualifier Q>
2514 GLM_INLINE glm::vec<4, T, Q> wyxw(
const glm::vec<4, T, Q> &v) {
2515 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
2519 template<
typename T, qualifier Q>
2520 GLM_INLINE glm::vec<4, T, Q> wyyx(
const glm::vec<4, T, Q> &v) {
2521 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
2525 template<
typename T, qualifier Q>
2526 GLM_INLINE glm::vec<4, T, Q> wyyy(
const glm::vec<4, T, Q> &v) {
2527 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
2531 template<
typename T, qualifier Q>
2532 GLM_INLINE glm::vec<4, T, Q> wyyz(
const glm::vec<4, T, Q> &v) {
2533 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
2537 template<
typename T, qualifier Q>
2538 GLM_INLINE glm::vec<4, T, Q> wyyw(
const glm::vec<4, T, Q> &v) {
2539 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
2543 template<
typename T, qualifier Q>
2544 GLM_INLINE glm::vec<4, T, Q> wyzx(
const glm::vec<4, T, Q> &v) {
2545 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
2549 template<
typename T, qualifier Q>
2550 GLM_INLINE glm::vec<4, T, Q> wyzy(
const glm::vec<4, T, Q> &v) {
2551 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
2555 template<
typename T, qualifier Q>
2556 GLM_INLINE glm::vec<4, T, Q> wyzz(
const glm::vec<4, T, Q> &v) {
2557 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
2561 template<
typename T, qualifier Q>
2562 GLM_INLINE glm::vec<4, T, Q> wyzw(
const glm::vec<4, T, Q> &v) {
2563 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
2567 template<
typename T, qualifier Q>
2568 GLM_INLINE glm::vec<4, T, Q> wywx(
const glm::vec<4, T, Q> &v) {
2569 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
2573 template<
typename T, qualifier Q>
2574 GLM_INLINE glm::vec<4, T, Q> wywy(
const glm::vec<4, T, Q> &v) {
2575 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
2579 template<
typename T, qualifier Q>
2580 GLM_INLINE glm::vec<4, T, Q> wywz(
const glm::vec<4, T, Q> &v) {
2581 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
2585 template<
typename T, qualifier Q>
2586 GLM_INLINE glm::vec<4, T, Q> wyww(
const glm::vec<4, T, Q> &v) {
2587 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
2591 template<
typename T, qualifier Q>
2592 GLM_INLINE glm::vec<4, T, Q> wzxx(
const glm::vec<4, T, Q> &v) {
2593 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
2597 template<
typename T, qualifier Q>
2598 GLM_INLINE glm::vec<4, T, Q> wzxy(
const glm::vec<4, T, Q> &v) {
2599 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
2603 template<
typename T, qualifier Q>
2604 GLM_INLINE glm::vec<4, T, Q> wzxz(
const glm::vec<4, T, Q> &v) {
2605 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
2609 template<
typename T, qualifier Q>
2610 GLM_INLINE glm::vec<4, T, Q> wzxw(
const glm::vec<4, T, Q> &v) {
2611 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
2615 template<
typename T, qualifier Q>
2616 GLM_INLINE glm::vec<4, T, Q> wzyx(
const glm::vec<4, T, Q> &v) {
2617 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
2621 template<
typename T, qualifier Q>
2622 GLM_INLINE glm::vec<4, T, Q> wzyy(
const glm::vec<4, T, Q> &v) {
2623 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
2627 template<
typename T, qualifier Q>
2628 GLM_INLINE glm::vec<4, T, Q> wzyz(
const glm::vec<4, T, Q> &v) {
2629 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
2633 template<
typename T, qualifier Q>
2634 GLM_INLINE glm::vec<4, T, Q> wzyw(
const glm::vec<4, T, Q> &v) {
2635 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
2639 template<
typename T, qualifier Q>
2640 GLM_INLINE glm::vec<4, T, Q> wzzx(
const glm::vec<4, T, Q> &v) {
2641 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
2645 template<
typename T, qualifier Q>
2646 GLM_INLINE glm::vec<4, T, Q> wzzy(
const glm::vec<4, T, Q> &v) {
2647 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
2651 template<
typename T, qualifier Q>
2652 GLM_INLINE glm::vec<4, T, Q> wzzz(
const glm::vec<4, T, Q> &v) {
2653 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
2657 template<
typename T, qualifier Q>
2658 GLM_INLINE glm::vec<4, T, Q> wzzw(
const glm::vec<4, T, Q> &v) {
2659 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
2663 template<
typename T, qualifier Q>
2664 GLM_INLINE glm::vec<4, T, Q> wzwx(
const glm::vec<4, T, Q> &v) {
2665 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
2669 template<
typename T, qualifier Q>
2670 GLM_INLINE glm::vec<4, T, Q> wzwy(
const glm::vec<4, T, Q> &v) {
2671 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
2675 template<
typename T, qualifier Q>
2676 GLM_INLINE glm::vec<4, T, Q> wzwz(
const glm::vec<4, T, Q> &v) {
2677 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
2681 template<
typename T, qualifier Q>
2682 GLM_INLINE glm::vec<4, T, Q> wzww(
const glm::vec<4, T, Q> &v) {
2683 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
2687 template<
typename T, qualifier Q>
2688 GLM_INLINE glm::vec<4, T, Q> wwxx(
const glm::vec<4, T, Q> &v) {
2689 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
2693 template<
typename T, qualifier Q>
2694 GLM_INLINE glm::vec<4, T, Q> wwxy(
const glm::vec<4, T, Q> &v) {
2695 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
2699 template<
typename T, qualifier Q>
2700 GLM_INLINE glm::vec<4, T, Q> wwxz(
const glm::vec<4, T, Q> &v) {
2701 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
2705 template<
typename T, qualifier Q>
2706 GLM_INLINE glm::vec<4, T, Q> wwxw(
const glm::vec<4, T, Q> &v) {
2707 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
2711 template<
typename T, qualifier Q>
2712 GLM_INLINE glm::vec<4, T, Q> wwyx(
const glm::vec<4, T, Q> &v) {
2713 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
2717 template<
typename T, qualifier Q>
2718 GLM_INLINE glm::vec<4, T, Q> wwyy(
const glm::vec<4, T, Q> &v) {
2719 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
2723 template<
typename T, qualifier Q>
2724 GLM_INLINE glm::vec<4, T, Q> wwyz(
const glm::vec<4, T, Q> &v) {
2725 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
2729 template<
typename T, qualifier Q>
2730 GLM_INLINE glm::vec<4, T, Q> wwyw(
const glm::vec<4, T, Q> &v) {
2731 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
2735 template<
typename T, qualifier Q>
2736 GLM_INLINE glm::vec<4, T, Q> wwzx(
const glm::vec<4, T, Q> &v) {
2737 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
2741 template<
typename T, qualifier Q>
2742 GLM_INLINE glm::vec<4, T, Q> wwzy(
const glm::vec<4, T, Q> &v) {
2743 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
2747 template<
typename T, qualifier Q>
2748 GLM_INLINE glm::vec<4, T, Q> wwzz(
const glm::vec<4, T, Q> &v) {
2749 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
2753 template<
typename T, qualifier Q>
2754 GLM_INLINE glm::vec<4, T, Q> wwzw(
const glm::vec<4, T, Q> &v) {
2755 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
2759 template<
typename T, qualifier Q>
2760 GLM_INLINE glm::vec<4, T, Q> wwwx(
const glm::vec<4, T, Q> &v) {
2761 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
2765 template<
typename T, qualifier Q>
2766 GLM_INLINE glm::vec<4, T, Q> wwwy(
const glm::vec<4, T, Q> &v) {
2767 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
2771 template<
typename T, qualifier Q>
2772 GLM_INLINE glm::vec<4, T, Q> wwwz(
const glm::vec<4, T, Q> &v) {
2773 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
2777 template<
typename T, qualifier Q>
2778 GLM_INLINE glm::vec<4, T, Q> wwww(
const glm::vec<4, T, Q> &v) {
2779 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);