17 #ifndef GLM_ENABLE_EXPERIMENTAL
18 # 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."
23 template<
typename T, qualifier Q>
24 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<1, T, Q> &v) {
25 return glm::vec<2, T, Q>(v.x, v.x);
28 template<
typename T, qualifier Q>
29 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<2, T, Q> &v) {
30 return glm::vec<2, T, Q>(v.x, v.x);
33 template<
typename T, qualifier Q>
34 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<3, T, Q> &v) {
35 return glm::vec<2, T, Q>(v.x, v.x);
38 template<
typename T, qualifier Q>
39 GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<4, T, Q> &v) {
40 return glm::vec<2, T, Q>(v.x, v.x);
44 template<
typename T, qualifier Q>
45 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<2, T, Q> &v) {
46 return glm::vec<2, T, Q>(v.x, v.y);
49 template<
typename T, qualifier Q>
50 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<3, T, Q> &v) {
51 return glm::vec<2, T, Q>(v.x, v.y);
54 template<
typename T, qualifier Q>
55 GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<4, T, Q> &v) {
56 return glm::vec<2, T, Q>(v.x, v.y);
60 template<
typename T, qualifier Q>
61 GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<3, T, Q> &v) {
62 return glm::vec<2, T, Q>(v.x, v.z);
65 template<
typename T, qualifier Q>
66 GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<4, T, Q> &v) {
67 return glm::vec<2, T, Q>(v.x, v.z);
71 template<
typename T, qualifier Q>
72 GLM_INLINE glm::vec<2, T, Q> xw(
const glm::vec<4, T, Q> &v) {
73 return glm::vec<2, T, Q>(v.x, v.w);
77 template<
typename T, qualifier Q>
78 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<2, T, Q> &v) {
79 return glm::vec<2, T, Q>(v.y, v.x);
82 template<
typename T, qualifier Q>
83 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<3, T, Q> &v) {
84 return glm::vec<2, T, Q>(v.y, v.x);
87 template<
typename T, qualifier Q>
88 GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<4, T, Q> &v) {
89 return glm::vec<2, T, Q>(v.y, v.x);
93 template<
typename T, qualifier Q>
94 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<2, T, Q> &v) {
95 return glm::vec<2, T, Q>(v.y, v.y);
98 template<
typename T, qualifier Q>
99 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<3, T, Q> &v) {
100 return glm::vec<2, T, Q>(v.y, v.y);
103 template<
typename T, qualifier Q>
104 GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<4, T, Q> &v) {
105 return glm::vec<2, T, Q>(v.y, v.y);
109 template<
typename T, qualifier Q>
110 GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<3, T, Q> &v) {
111 return glm::vec<2, T, Q>(v.y, v.z);
114 template<
typename T, qualifier Q>
115 GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<4, T, Q> &v) {
116 return glm::vec<2, T, Q>(v.y, v.z);
120 template<
typename T, qualifier Q>
121 GLM_INLINE glm::vec<2, T, Q> yw(
const glm::vec<4, T, Q> &v) {
122 return glm::vec<2, T, Q>(v.y, v.w);
126 template<
typename T, qualifier Q>
127 GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<3, T, Q> &v) {
128 return glm::vec<2, T, Q>(v.z, v.x);
131 template<
typename T, qualifier Q>
132 GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<4, T, Q> &v) {
133 return glm::vec<2, T, Q>(v.z, v.x);
137 template<
typename T, qualifier Q>
138 GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<3, T, Q> &v) {
139 return glm::vec<2, T, Q>(v.z, v.y);
142 template<
typename T, qualifier Q>
143 GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<4, T, Q> &v) {
144 return glm::vec<2, T, Q>(v.z, v.y);
148 template<
typename T, qualifier Q>
149 GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<3, T, Q> &v) {
150 return glm::vec<2, T, Q>(v.z, v.z);
153 template<
typename T, qualifier Q>
154 GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<4, T, Q> &v) {
155 return glm::vec<2, T, Q>(v.z, v.z);
159 template<
typename T, qualifier Q>
160 GLM_INLINE glm::vec<2, T, Q> zw(
const glm::vec<4, T, Q> &v) {
161 return glm::vec<2, T, Q>(v.z, v.w);
165 template<
typename T, qualifier Q>
166 GLM_INLINE glm::vec<2, T, Q> wx(
const glm::vec<4, T, Q> &v) {
167 return glm::vec<2, T, Q>(v.w, v.x);
171 template<
typename T, qualifier Q>
172 GLM_INLINE glm::vec<2, T, Q> wy(
const glm::vec<4, T, Q> &v) {
173 return glm::vec<2, T, Q>(v.w, v.y);
177 template<
typename T, qualifier Q>
178 GLM_INLINE glm::vec<2, T, Q> wz(
const glm::vec<4, T, Q> &v) {
179 return glm::vec<2, T, Q>(v.w, v.z);
183 template<
typename T, qualifier Q>
184 GLM_INLINE glm::vec<2, T, Q> ww(
const glm::vec<4, T, Q> &v) {
185 return glm::vec<2, T, Q>(v.w, v.w);
189 template<
typename T, qualifier Q>
190 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<1, T, Q> &v) {
191 return glm::vec<3, T, Q>(v.x, v.x, v.x);
194 template<
typename T, qualifier Q>
195 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<2, T, Q> &v) {
196 return glm::vec<3, T, Q>(v.x, v.x, v.x);
199 template<
typename T, qualifier Q>
200 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<3, T, Q> &v) {
201 return glm::vec<3, T, Q>(v.x, v.x, v.x);
204 template<
typename T, qualifier Q>
205 GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<4, T, Q> &v) {
206 return glm::vec<3, T, Q>(v.x, v.x, v.x);
210 template<
typename T, qualifier Q>
211 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<2, T, Q> &v) {
212 return glm::vec<3, T, Q>(v.x, v.x, v.y);
215 template<
typename T, qualifier Q>
216 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<3, T, Q> &v) {
217 return glm::vec<3, T, Q>(v.x, v.x, v.y);
220 template<
typename T, qualifier Q>
221 GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<4, T, Q> &v) {
222 return glm::vec<3, T, Q>(v.x, v.x, v.y);
226 template<
typename T, qualifier Q>
227 GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<3, T, Q> &v) {
228 return glm::vec<3, T, Q>(v.x, v.x, v.z);
231 template<
typename T, qualifier Q>
232 GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<4, T, Q> &v) {
233 return glm::vec<3, T, Q>(v.x, v.x, v.z);
237 template<
typename T, qualifier Q>
238 GLM_INLINE glm::vec<3, T, Q> xxw(
const glm::vec<4, T, Q> &v) {
239 return glm::vec<3, T, Q>(v.x, v.x, v.w);
243 template<
typename T, qualifier Q>
244 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<2, T, Q> &v) {
245 return glm::vec<3, T, Q>(v.x, v.y, v.x);
248 template<
typename T, qualifier Q>
249 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<3, T, Q> &v) {
250 return glm::vec<3, T, Q>(v.x, v.y, v.x);
253 template<
typename T, qualifier Q>
254 GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<4, T, Q> &v) {
255 return glm::vec<3, T, Q>(v.x, v.y, v.x);
259 template<
typename T, qualifier Q>
260 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<2, T, Q> &v) {
261 return glm::vec<3, T, Q>(v.x, v.y, v.y);
264 template<
typename T, qualifier Q>
265 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<3, T, Q> &v) {
266 return glm::vec<3, T, Q>(v.x, v.y, v.y);
269 template<
typename T, qualifier Q>
270 GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<4, T, Q> &v) {
271 return glm::vec<3, T, Q>(v.x, v.y, v.y);
275 template<
typename T, qualifier Q>
276 GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<3, T, Q> &v) {
277 return glm::vec<3, T, Q>(v.x, v.y, v.z);
280 template<
typename T, qualifier Q>
281 GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<4, T, Q> &v) {
282 return glm::vec<3, T, Q>(v.x, v.y, v.z);
286 template<
typename T, qualifier Q>
287 GLM_INLINE glm::vec<3, T, Q> xyw(
const glm::vec<4, T, Q> &v) {
288 return glm::vec<3, T, Q>(v.x, v.y, v.w);
292 template<
typename T, qualifier Q>
293 GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<3, T, Q> &v) {
294 return glm::vec<3, T, Q>(v.x, v.z, v.x);
297 template<
typename T, qualifier Q>
298 GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<4, T, Q> &v) {
299 return glm::vec<3, T, Q>(v.x, v.z, v.x);
303 template<
typename T, qualifier Q>
304 GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<3, T, Q> &v) {
305 return glm::vec<3, T, Q>(v.x, v.z, v.y);
308 template<
typename T, qualifier Q>
309 GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<4, T, Q> &v) {
310 return glm::vec<3, T, Q>(v.x, v.z, v.y);
314 template<
typename T, qualifier Q>
315 GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<3, T, Q> &v) {
316 return glm::vec<3, T, Q>(v.x, v.z, v.z);
319 template<
typename T, qualifier Q>
320 GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<4, T, Q> &v) {
321 return glm::vec<3, T, Q>(v.x, v.z, v.z);
325 template<
typename T, qualifier Q>
326 GLM_INLINE glm::vec<3, T, Q> xzw(
const glm::vec<4, T, Q> &v) {
327 return glm::vec<3, T, Q>(v.x, v.z, v.w);
331 template<
typename T, qualifier Q>
332 GLM_INLINE glm::vec<3, T, Q> xwx(
const glm::vec<4, T, Q> &v) {
333 return glm::vec<3, T, Q>(v.x, v.w, v.x);
337 template<
typename T, qualifier Q>
338 GLM_INLINE glm::vec<3, T, Q> xwy(
const glm::vec<4, T, Q> &v) {
339 return glm::vec<3, T, Q>(v.x, v.w, v.y);
343 template<
typename T, qualifier Q>
344 GLM_INLINE glm::vec<3, T, Q> xwz(
const glm::vec<4, T, Q> &v) {
345 return glm::vec<3, T, Q>(v.x, v.w, v.z);
349 template<
typename T, qualifier Q>
350 GLM_INLINE glm::vec<3, T, Q> xww(
const glm::vec<4, T, Q> &v) {
351 return glm::vec<3, T, Q>(v.x, v.w, v.w);
355 template<
typename T, qualifier Q>
356 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<2, T, Q> &v) {
357 return glm::vec<3, T, Q>(v.y, v.x, v.x);
360 template<
typename T, qualifier Q>
361 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<3, T, Q> &v) {
362 return glm::vec<3, T, Q>(v.y, v.x, v.x);
365 template<
typename T, qualifier Q>
366 GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<4, T, Q> &v) {
367 return glm::vec<3, T, Q>(v.y, v.x, v.x);
371 template<
typename T, qualifier Q>
372 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<2, T, Q> &v) {
373 return glm::vec<3, T, Q>(v.y, v.x, v.y);
376 template<
typename T, qualifier Q>
377 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<3, T, Q> &v) {
378 return glm::vec<3, T, Q>(v.y, v.x, v.y);
381 template<
typename T, qualifier Q>
382 GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<4, T, Q> &v) {
383 return glm::vec<3, T, Q>(v.y, v.x, v.y);
387 template<
typename T, qualifier Q>
388 GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<3, T, Q> &v) {
389 return glm::vec<3, T, Q>(v.y, v.x, v.z);
392 template<
typename T, qualifier Q>
393 GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<4, T, Q> &v) {
394 return glm::vec<3, T, Q>(v.y, v.x, v.z);
398 template<
typename T, qualifier Q>
399 GLM_INLINE glm::vec<3, T, Q> yxw(
const glm::vec<4, T, Q> &v) {
400 return glm::vec<3, T, Q>(v.y, v.x, v.w);
404 template<
typename T, qualifier Q>
405 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<2, T, Q> &v) {
406 return glm::vec<3, T, Q>(v.y, v.y, v.x);
409 template<
typename T, qualifier Q>
410 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<3, T, Q> &v) {
411 return glm::vec<3, T, Q>(v.y, v.y, v.x);
414 template<
typename T, qualifier Q>
415 GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<4, T, Q> &v) {
416 return glm::vec<3, T, Q>(v.y, v.y, v.x);
420 template<
typename T, qualifier Q>
421 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<2, T, Q> &v) {
422 return glm::vec<3, T, Q>(v.y, v.y, v.y);
425 template<
typename T, qualifier Q>
426 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<3, T, Q> &v) {
427 return glm::vec<3, T, Q>(v.y, v.y, v.y);
430 template<
typename T, qualifier Q>
431 GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<4, T, Q> &v) {
432 return glm::vec<3, T, Q>(v.y, v.y, v.y);
436 template<
typename T, qualifier Q>
437 GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<3, T, Q> &v) {
438 return glm::vec<3, T, Q>(v.y, v.y, v.z);
441 template<
typename T, qualifier Q>
442 GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<4, T, Q> &v) {
443 return glm::vec<3, T, Q>(v.y, v.y, v.z);
447 template<
typename T, qualifier Q>
448 GLM_INLINE glm::vec<3, T, Q> yyw(
const glm::vec<4, T, Q> &v) {
449 return glm::vec<3, T, Q>(v.y, v.y, v.w);
453 template<
typename T, qualifier Q>
454 GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<3, T, Q> &v) {
455 return glm::vec<3, T, Q>(v.y, v.z, v.x);
458 template<
typename T, qualifier Q>
459 GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<4, T, Q> &v) {
460 return glm::vec<3, T, Q>(v.y, v.z, v.x);
464 template<
typename T, qualifier Q>
465 GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<3, T, Q> &v) {
466 return glm::vec<3, T, Q>(v.y, v.z, v.y);
469 template<
typename T, qualifier Q>
470 GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<4, T, Q> &v) {
471 return glm::vec<3, T, Q>(v.y, v.z, v.y);
475 template<
typename T, qualifier Q>
476 GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<3, T, Q> &v) {
477 return glm::vec<3, T, Q>(v.y, v.z, v.z);
480 template<
typename T, qualifier Q>
481 GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<4, T, Q> &v) {
482 return glm::vec<3, T, Q>(v.y, v.z, v.z);
486 template<
typename T, qualifier Q>
487 GLM_INLINE glm::vec<3, T, Q> yzw(
const glm::vec<4, T, Q> &v) {
488 return glm::vec<3, T, Q>(v.y, v.z, v.w);
492 template<
typename T, qualifier Q>
493 GLM_INLINE glm::vec<3, T, Q> ywx(
const glm::vec<4, T, Q> &v) {
494 return glm::vec<3, T, Q>(v.y, v.w, v.x);
498 template<
typename T, qualifier Q>
499 GLM_INLINE glm::vec<3, T, Q> ywy(
const glm::vec<4, T, Q> &v) {
500 return glm::vec<3, T, Q>(v.y, v.w, v.y);
504 template<
typename T, qualifier Q>
505 GLM_INLINE glm::vec<3, T, Q> ywz(
const glm::vec<4, T, Q> &v) {
506 return glm::vec<3, T, Q>(v.y, v.w, v.z);
510 template<
typename T, qualifier Q>
511 GLM_INLINE glm::vec<3, T, Q> yww(
const glm::vec<4, T, Q> &v) {
512 return glm::vec<3, T, Q>(v.y, v.w, v.w);
516 template<
typename T, qualifier Q>
517 GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<3, T, Q> &v) {
518 return glm::vec<3, T, Q>(v.z, v.x, v.x);
521 template<
typename T, qualifier Q>
522 GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<4, T, Q> &v) {
523 return glm::vec<3, T, Q>(v.z, v.x, v.x);
527 template<
typename T, qualifier Q>
528 GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<3, T, Q> &v) {
529 return glm::vec<3, T, Q>(v.z, v.x, v.y);
532 template<
typename T, qualifier Q>
533 GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<4, T, Q> &v) {
534 return glm::vec<3, T, Q>(v.z, v.x, v.y);
538 template<
typename T, qualifier Q>
539 GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<3, T, Q> &v) {
540 return glm::vec<3, T, Q>(v.z, v.x, v.z);
543 template<
typename T, qualifier Q>
544 GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<4, T, Q> &v) {
545 return glm::vec<3, T, Q>(v.z, v.x, v.z);
549 template<
typename T, qualifier Q>
550 GLM_INLINE glm::vec<3, T, Q> zxw(
const glm::vec<4, T, Q> &v) {
551 return glm::vec<3, T, Q>(v.z, v.x, v.w);
555 template<
typename T, qualifier Q>
556 GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<3, T, Q> &v) {
557 return glm::vec<3, T, Q>(v.z, v.y, v.x);
560 template<
typename T, qualifier Q>
561 GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<4, T, Q> &v) {
562 return glm::vec<3, T, Q>(v.z, v.y, v.x);
566 template<
typename T, qualifier Q>
567 GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<3, T, Q> &v) {
568 return glm::vec<3, T, Q>(v.z, v.y, v.y);
571 template<
typename T, qualifier Q>
572 GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<4, T, Q> &v) {
573 return glm::vec<3, T, Q>(v.z, v.y, v.y);
577 template<
typename T, qualifier Q>
578 GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<3, T, Q> &v) {
579 return glm::vec<3, T, Q>(v.z, v.y, v.z);
582 template<
typename T, qualifier Q>
583 GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<4, T, Q> &v) {
584 return glm::vec<3, T, Q>(v.z, v.y, v.z);
588 template<
typename T, qualifier Q>
589 GLM_INLINE glm::vec<3, T, Q> zyw(
const glm::vec<4, T, Q> &v) {
590 return glm::vec<3, T, Q>(v.z, v.y, v.w);
594 template<
typename T, qualifier Q>
595 GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<3, T, Q> &v) {
596 return glm::vec<3, T, Q>(v.z, v.z, v.x);
599 template<
typename T, qualifier Q>
600 GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<4, T, Q> &v) {
601 return glm::vec<3, T, Q>(v.z, v.z, v.x);
605 template<
typename T, qualifier Q>
606 GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<3, T, Q> &v) {
607 return glm::vec<3, T, Q>(v.z, v.z, v.y);
610 template<
typename T, qualifier Q>
611 GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<4, T, Q> &v) {
612 return glm::vec<3, T, Q>(v.z, v.z, v.y);
616 template<
typename T, qualifier Q>
617 GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<3, T, Q> &v) {
618 return glm::vec<3, T, Q>(v.z, v.z, v.z);
621 template<
typename T, qualifier Q>
622 GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<4, T, Q> &v) {
623 return glm::vec<3, T, Q>(v.z, v.z, v.z);
627 template<
typename T, qualifier Q>
628 GLM_INLINE glm::vec<3, T, Q> zzw(
const glm::vec<4, T, Q> &v) {
629 return glm::vec<3, T, Q>(v.z, v.z, v.w);
633 template<
typename T, qualifier Q>
634 GLM_INLINE glm::vec<3, T, Q> zwx(
const glm::vec<4, T, Q> &v) {
635 return glm::vec<3, T, Q>(v.z, v.w, v.x);
639 template<
typename T, qualifier Q>
640 GLM_INLINE glm::vec<3, T, Q> zwy(
const glm::vec<4, T, Q> &v) {
641 return glm::vec<3, T, Q>(v.z, v.w, v.y);
645 template<
typename T, qualifier Q>
646 GLM_INLINE glm::vec<3, T, Q> zwz(
const glm::vec<4, T, Q> &v) {
647 return glm::vec<3, T, Q>(v.z, v.w, v.z);
651 template<
typename T, qualifier Q>
652 GLM_INLINE glm::vec<3, T, Q> zww(
const glm::vec<4, T, Q> &v) {
653 return glm::vec<3, T, Q>(v.z, v.w, v.w);
657 template<
typename T, qualifier Q>
658 GLM_INLINE glm::vec<3, T, Q> wxx(
const glm::vec<4, T, Q> &v) {
659 return glm::vec<3, T, Q>(v.w, v.x, v.x);
663 template<
typename T, qualifier Q>
664 GLM_INLINE glm::vec<3, T, Q> wxy(
const glm::vec<4, T, Q> &v) {
665 return glm::vec<3, T, Q>(v.w, v.x, v.y);
669 template<
typename T, qualifier Q>
670 GLM_INLINE glm::vec<3, T, Q> wxz(
const glm::vec<4, T, Q> &v) {
671 return glm::vec<3, T, Q>(v.w, v.x, v.z);
675 template<
typename T, qualifier Q>
676 GLM_INLINE glm::vec<3, T, Q> wxw(
const glm::vec<4, T, Q> &v) {
677 return glm::vec<3, T, Q>(v.w, v.x, v.w);
681 template<
typename T, qualifier Q>
682 GLM_INLINE glm::vec<3, T, Q> wyx(
const glm::vec<4, T, Q> &v) {
683 return glm::vec<3, T, Q>(v.w, v.y, v.x);
687 template<
typename T, qualifier Q>
688 GLM_INLINE glm::vec<3, T, Q> wyy(
const glm::vec<4, T, Q> &v) {
689 return glm::vec<3, T, Q>(v.w, v.y, v.y);
693 template<
typename T, qualifier Q>
694 GLM_INLINE glm::vec<3, T, Q> wyz(
const glm::vec<4, T, Q> &v) {
695 return glm::vec<3, T, Q>(v.w, v.y, v.z);
699 template<
typename T, qualifier Q>
700 GLM_INLINE glm::vec<3, T, Q> wyw(
const glm::vec<4, T, Q> &v) {
701 return glm::vec<3, T, Q>(v.w, v.y, v.w);
705 template<
typename T, qualifier Q>
706 GLM_INLINE glm::vec<3, T, Q> wzx(
const glm::vec<4, T, Q> &v) {
707 return glm::vec<3, T, Q>(v.w, v.z, v.x);
711 template<
typename T, qualifier Q>
712 GLM_INLINE glm::vec<3, T, Q> wzy(
const glm::vec<4, T, Q> &v) {
713 return glm::vec<3, T, Q>(v.w, v.z, v.y);
717 template<
typename T, qualifier Q>
718 GLM_INLINE glm::vec<3, T, Q> wzz(
const glm::vec<4, T, Q> &v) {
719 return glm::vec<3, T, Q>(v.w, v.z, v.z);
723 template<
typename T, qualifier Q>
724 GLM_INLINE glm::vec<3, T, Q> wzw(
const glm::vec<4, T, Q> &v) {
725 return glm::vec<3, T, Q>(v.w, v.z, v.w);
729 template<
typename T, qualifier Q>
730 GLM_INLINE glm::vec<3, T, Q> wwx(
const glm::vec<4, T, Q> &v) {
731 return glm::vec<3, T, Q>(v.w, v.w, v.x);
735 template<
typename T, qualifier Q>
736 GLM_INLINE glm::vec<3, T, Q> wwy(
const glm::vec<4, T, Q> &v) {
737 return glm::vec<3, T, Q>(v.w, v.w, v.y);
741 template<
typename T, qualifier Q>
742 GLM_INLINE glm::vec<3, T, Q> wwz(
const glm::vec<4, T, Q> &v) {
743 return glm::vec<3, T, Q>(v.w, v.w, v.z);
747 template<
typename T, qualifier Q>
748 GLM_INLINE glm::vec<3, T, Q> www(
const glm::vec<4, T, Q> &v) {
749 return glm::vec<3, T, Q>(v.w, v.w, v.w);
753 template<
typename T, qualifier Q>
754 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<1, T, Q> &v) {
755 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
758 template<
typename T, qualifier Q>
759 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<2, T, Q> &v) {
760 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
763 template<
typename T, qualifier Q>
764 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<3, T, Q> &v) {
765 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
768 template<
typename T, qualifier Q>
769 GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<4, T, Q> &v) {
770 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
774 template<
typename T, qualifier Q>
775 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<2, T, Q> &v) {
776 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
779 template<
typename T, qualifier Q>
780 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<3, T, Q> &v) {
781 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
784 template<
typename T, qualifier Q>
785 GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<4, T, Q> &v) {
786 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
790 template<
typename T, qualifier Q>
791 GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<3, T, Q> &v) {
792 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
795 template<
typename T, qualifier Q>
796 GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<4, T, Q> &v) {
797 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
801 template<
typename T, qualifier Q>
802 GLM_INLINE glm::vec<4, T, Q> xxxw(
const glm::vec<4, T, Q> &v) {
803 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
807 template<
typename T, qualifier Q>
808 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<2, T, Q> &v) {
809 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
812 template<
typename T, qualifier Q>
813 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<3, T, Q> &v) {
814 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
817 template<
typename T, qualifier Q>
818 GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<4, T, Q> &v) {
819 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
823 template<
typename T, qualifier Q>
824 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<2, T, Q> &v) {
825 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
828 template<
typename T, qualifier Q>
829 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<3, T, Q> &v) {
830 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
833 template<
typename T, qualifier Q>
834 GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<4, T, Q> &v) {
835 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
839 template<
typename T, qualifier Q>
840 GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<3, T, Q> &v) {
841 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
844 template<
typename T, qualifier Q>
845 GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<4, T, Q> &v) {
846 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
850 template<
typename T, qualifier Q>
851 GLM_INLINE glm::vec<4, T, Q> xxyw(
const glm::vec<4, T, Q> &v) {
852 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
856 template<
typename T, qualifier Q>
857 GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<3, T, Q> &v) {
858 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
861 template<
typename T, qualifier Q>
862 GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<4, T, Q> &v) {
863 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
867 template<
typename T, qualifier Q>
868 GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<3, T, Q> &v) {
869 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
872 template<
typename T, qualifier Q>
873 GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<4, T, Q> &v) {
874 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
878 template<
typename T, qualifier Q>
879 GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<3, T, Q> &v) {
880 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
883 template<
typename T, qualifier Q>
884 GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<4, T, Q> &v) {
885 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
889 template<
typename T, qualifier Q>
890 GLM_INLINE glm::vec<4, T, Q> xxzw(
const glm::vec<4, T, Q> &v) {
891 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
895 template<
typename T, qualifier Q>
896 GLM_INLINE glm::vec<4, T, Q> xxwx(
const glm::vec<4, T, Q> &v) {
897 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
901 template<
typename T, qualifier Q>
902 GLM_INLINE glm::vec<4, T, Q> xxwy(
const glm::vec<4, T, Q> &v) {
903 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
907 template<
typename T, qualifier Q>
908 GLM_INLINE glm::vec<4, T, Q> xxwz(
const glm::vec<4, T, Q> &v) {
909 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
913 template<
typename T, qualifier Q>
914 GLM_INLINE glm::vec<4, T, Q> xxww(
const glm::vec<4, T, Q> &v) {
915 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
919 template<
typename T, qualifier Q>
920 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<2, T, Q> &v) {
921 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
924 template<
typename T, qualifier Q>
925 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<3, T, Q> &v) {
926 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
929 template<
typename T, qualifier Q>
930 GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<4, T, Q> &v) {
931 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
935 template<
typename T, qualifier Q>
936 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<2, T, Q> &v) {
937 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
940 template<
typename T, qualifier Q>
941 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<3, T, Q> &v) {
942 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
945 template<
typename T, qualifier Q>
946 GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<4, T, Q> &v) {
947 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
951 template<
typename T, qualifier Q>
952 GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<3, T, Q> &v) {
953 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
956 template<
typename T, qualifier Q>
957 GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<4, T, Q> &v) {
958 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
962 template<
typename T, qualifier Q>
963 GLM_INLINE glm::vec<4, T, Q> xyxw(
const glm::vec<4, T, Q> &v) {
964 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
968 template<
typename T, qualifier Q>
969 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<2, T, Q> &v) {
970 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
973 template<
typename T, qualifier Q>
974 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<3, T, Q> &v) {
975 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
978 template<
typename T, qualifier Q>
979 GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<4, T, Q> &v) {
980 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
984 template<
typename T, qualifier Q>
985 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<2, T, Q> &v) {
986 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
989 template<
typename T, qualifier Q>
990 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<3, T, Q> &v) {
991 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
994 template<
typename T, qualifier Q>
995 GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<4, T, Q> &v) {
996 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
1000 template<
typename T, qualifier Q>
1001 GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<3, T, Q> &v) {
1002 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
1005 template<
typename T, qualifier Q>
1006 GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<4, T, Q> &v) {
1007 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
1011 template<
typename T, qualifier Q>
1012 GLM_INLINE glm::vec<4, T, Q> xyyw(
const glm::vec<4, T, Q> &v) {
1013 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
1017 template<
typename T, qualifier Q>
1018 GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<3, T, Q> &v) {
1019 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
1022 template<
typename T, qualifier Q>
1023 GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<4, T, Q> &v) {
1024 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
1028 template<
typename T, qualifier Q>
1029 GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<3, T, Q> &v) {
1030 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
1033 template<
typename T, qualifier Q>
1034 GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<4, T, Q> &v) {
1035 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
1039 template<
typename T, qualifier Q>
1040 GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<3, T, Q> &v) {
1041 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
1044 template<
typename T, qualifier Q>
1045 GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<4, T, Q> &v) {
1046 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
1050 template<
typename T, qualifier Q>
1051 GLM_INLINE glm::vec<4, T, Q> xyzw(
const glm::vec<4, T, Q> &v) {
1052 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
1056 template<
typename T, qualifier Q>
1057 GLM_INLINE glm::vec<4, T, Q> xywx(
const glm::vec<4, T, Q> &v) {
1058 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
1062 template<
typename T, qualifier Q>
1063 GLM_INLINE glm::vec<4, T, Q> xywy(
const glm::vec<4, T, Q> &v) {
1064 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
1068 template<
typename T, qualifier Q>
1069 GLM_INLINE glm::vec<4, T, Q> xywz(
const glm::vec<4, T, Q> &v) {
1070 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
1074 template<
typename T, qualifier Q>
1075 GLM_INLINE glm::vec<4, T, Q> xyww(
const glm::vec<4, T, Q> &v) {
1076 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
1080 template<
typename T, qualifier Q>
1081 GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<3, T, Q> &v) {
1082 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1085 template<
typename T, qualifier Q>
1086 GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<4, T, Q> &v) {
1087 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1091 template<
typename T, qualifier Q>
1092 GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<3, T, Q> &v) {
1093 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1096 template<
typename T, qualifier Q>
1097 GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<4, T, Q> &v) {
1098 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1102 template<
typename T, qualifier Q>
1103 GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<3, T, Q> &v) {
1104 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1107 template<
typename T, qualifier Q>
1108 GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<4, T, Q> &v) {
1109 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1113 template<
typename T, qualifier Q>
1114 GLM_INLINE glm::vec<4, T, Q> xzxw(
const glm::vec<4, T, Q> &v) {
1115 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
1119 template<
typename T, qualifier Q>
1120 GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<3, T, Q> &v) {
1121 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1124 template<
typename T, qualifier Q>
1125 GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<4, T, Q> &v) {
1126 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1130 template<
typename T, qualifier Q>
1131 GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<3, T, Q> &v) {
1132 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1135 template<
typename T, qualifier Q>
1136 GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<4, T, Q> &v) {
1137 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1141 template<
typename T, qualifier Q>
1142 GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<3, T, Q> &v) {
1143 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1146 template<
typename T, qualifier Q>
1147 GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<4, T, Q> &v) {
1148 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1152 template<
typename T, qualifier Q>
1153 GLM_INLINE glm::vec<4, T, Q> xzyw(
const glm::vec<4, T, Q> &v) {
1154 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
1158 template<
typename T, qualifier Q>
1159 GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<3, T, Q> &v) {
1160 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1163 template<
typename T, qualifier Q>
1164 GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<4, T, Q> &v) {
1165 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1169 template<
typename T, qualifier Q>
1170 GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<3, T, Q> &v) {
1171 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1174 template<
typename T, qualifier Q>
1175 GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<4, T, Q> &v) {
1176 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1180 template<
typename T, qualifier Q>
1181 GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<3, T, Q> &v) {
1182 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1185 template<
typename T, qualifier Q>
1186 GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<4, T, Q> &v) {
1187 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1191 template<
typename T, qualifier Q>
1192 GLM_INLINE glm::vec<4, T, Q> xzzw(
const glm::vec<4, T, Q> &v) {
1193 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
1197 template<
typename T, qualifier Q>
1198 GLM_INLINE glm::vec<4, T, Q> xzwx(
const glm::vec<4, T, Q> &v) {
1199 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
1203 template<
typename T, qualifier Q>
1204 GLM_INLINE glm::vec<4, T, Q> xzwy(
const glm::vec<4, T, Q> &v) {
1205 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
1209 template<
typename T, qualifier Q>
1210 GLM_INLINE glm::vec<4, T, Q> xzwz(
const glm::vec<4, T, Q> &v) {
1211 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
1215 template<
typename T, qualifier Q>
1216 GLM_INLINE glm::vec<4, T, Q> xzww(
const glm::vec<4, T, Q> &v) {
1217 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
1221 template<
typename T, qualifier Q>
1222 GLM_INLINE glm::vec<4, T, Q> xwxx(
const glm::vec<4, T, Q> &v) {
1223 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
1227 template<
typename T, qualifier Q>
1228 GLM_INLINE glm::vec<4, T, Q> xwxy(
const glm::vec<4, T, Q> &v) {
1229 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
1233 template<
typename T, qualifier Q>
1234 GLM_INLINE glm::vec<4, T, Q> xwxz(
const glm::vec<4, T, Q> &v) {
1235 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
1239 template<
typename T, qualifier Q>
1240 GLM_INLINE glm::vec<4, T, Q> xwxw(
const glm::vec<4, T, Q> &v) {
1241 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
1245 template<
typename T, qualifier Q>
1246 GLM_INLINE glm::vec<4, T, Q> xwyx(
const glm::vec<4, T, Q> &v) {
1247 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
1251 template<
typename T, qualifier Q>
1252 GLM_INLINE glm::vec<4, T, Q> xwyy(
const glm::vec<4, T, Q> &v) {
1253 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
1257 template<
typename T, qualifier Q>
1258 GLM_INLINE glm::vec<4, T, Q> xwyz(
const glm::vec<4, T, Q> &v) {
1259 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
1263 template<
typename T, qualifier Q>
1264 GLM_INLINE glm::vec<4, T, Q> xwyw(
const glm::vec<4, T, Q> &v) {
1265 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
1269 template<
typename T, qualifier Q>
1270 GLM_INLINE glm::vec<4, T, Q> xwzx(
const glm::vec<4, T, Q> &v) {
1271 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
1275 template<
typename T, qualifier Q>
1276 GLM_INLINE glm::vec<4, T, Q> xwzy(
const glm::vec<4, T, Q> &v) {
1277 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
1281 template<
typename T, qualifier Q>
1282 GLM_INLINE glm::vec<4, T, Q> xwzz(
const glm::vec<4, T, Q> &v) {
1283 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
1287 template<
typename T, qualifier Q>
1288 GLM_INLINE glm::vec<4, T, Q> xwzw(
const glm::vec<4, T, Q> &v) {
1289 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
1293 template<
typename T, qualifier Q>
1294 GLM_INLINE glm::vec<4, T, Q> xwwx(
const glm::vec<4, T, Q> &v) {
1295 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
1299 template<
typename T, qualifier Q>
1300 GLM_INLINE glm::vec<4, T, Q> xwwy(
const glm::vec<4, T, Q> &v) {
1301 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
1305 template<
typename T, qualifier Q>
1306 GLM_INLINE glm::vec<4, T, Q> xwwz(
const glm::vec<4, T, Q> &v) {
1307 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
1311 template<
typename T, qualifier Q>
1312 GLM_INLINE glm::vec<4, T, Q> xwww(
const glm::vec<4, T, Q> &v) {
1313 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
1317 template<
typename T, qualifier Q>
1318 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<2, T, Q> &v) {
1319 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1322 template<
typename T, qualifier Q>
1323 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<3, T, Q> &v) {
1324 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1327 template<
typename T, qualifier Q>
1328 GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<4, T, Q> &v) {
1329 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1333 template<
typename T, qualifier Q>
1334 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<2, T, Q> &v) {
1335 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1338 template<
typename T, qualifier Q>
1339 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<3, T, Q> &v) {
1340 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1343 template<
typename T, qualifier Q>
1344 GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<4, T, Q> &v) {
1345 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1349 template<
typename T, qualifier Q>
1350 GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<3, T, Q> &v) {
1351 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1354 template<
typename T, qualifier Q>
1355 GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<4, T, Q> &v) {
1356 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1360 template<
typename T, qualifier Q>
1361 GLM_INLINE glm::vec<4, T, Q> yxxw(
const glm::vec<4, T, Q> &v) {
1362 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
1366 template<
typename T, qualifier Q>
1367 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<2, T, Q> &v) {
1368 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1371 template<
typename T, qualifier Q>
1372 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<3, T, Q> &v) {
1373 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1376 template<
typename T, qualifier Q>
1377 GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<4, T, Q> &v) {
1378 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1382 template<
typename T, qualifier Q>
1383 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<2, T, Q> &v) {
1384 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1387 template<
typename T, qualifier Q>
1388 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<3, T, Q> &v) {
1389 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1392 template<
typename T, qualifier Q>
1393 GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<4, T, Q> &v) {
1394 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1398 template<
typename T, qualifier Q>
1399 GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<3, T, Q> &v) {
1400 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1403 template<
typename T, qualifier Q>
1404 GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<4, T, Q> &v) {
1405 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1409 template<
typename T, qualifier Q>
1410 GLM_INLINE glm::vec<4, T, Q> yxyw(
const glm::vec<4, T, Q> &v) {
1411 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
1415 template<
typename T, qualifier Q>
1416 GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<3, T, Q> &v) {
1417 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1420 template<
typename T, qualifier Q>
1421 GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<4, T, Q> &v) {
1422 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1426 template<
typename T, qualifier Q>
1427 GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<3, T, Q> &v) {
1428 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1431 template<
typename T, qualifier Q>
1432 GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<4, T, Q> &v) {
1433 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1437 template<
typename T, qualifier Q>
1438 GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<3, T, Q> &v) {
1439 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1442 template<
typename T, qualifier Q>
1443 GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<4, T, Q> &v) {
1444 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1448 template<
typename T, qualifier Q>
1449 GLM_INLINE glm::vec<4, T, Q> yxzw(
const glm::vec<4, T, Q> &v) {
1450 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
1454 template<
typename T, qualifier Q>
1455 GLM_INLINE glm::vec<4, T, Q> yxwx(
const glm::vec<4, T, Q> &v) {
1456 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
1460 template<
typename T, qualifier Q>
1461 GLM_INLINE glm::vec<4, T, Q> yxwy(
const glm::vec<4, T, Q> &v) {
1462 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
1466 template<
typename T, qualifier Q>
1467 GLM_INLINE glm::vec<4, T, Q> yxwz(
const glm::vec<4, T, Q> &v) {
1468 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
1472 template<
typename T, qualifier Q>
1473 GLM_INLINE glm::vec<4, T, Q> yxww(
const glm::vec<4, T, Q> &v) {
1474 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
1478 template<
typename T, qualifier Q>
1479 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<2, T, Q> &v) {
1480 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1483 template<
typename T, qualifier Q>
1484 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<3, T, Q> &v) {
1485 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1488 template<
typename T, qualifier Q>
1489 GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<4, T, Q> &v) {
1490 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1494 template<
typename T, qualifier Q>
1495 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<2, T, Q> &v) {
1496 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1499 template<
typename T, qualifier Q>
1500 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<3, T, Q> &v) {
1501 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1504 template<
typename T, qualifier Q>
1505 GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<4, T, Q> &v) {
1506 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1510 template<
typename T, qualifier Q>
1511 GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<3, T, Q> &v) {
1512 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1515 template<
typename T, qualifier Q>
1516 GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<4, T, Q> &v) {
1517 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1521 template<
typename T, qualifier Q>
1522 GLM_INLINE glm::vec<4, T, Q> yyxw(
const glm::vec<4, T, Q> &v) {
1523 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
1527 template<
typename T, qualifier Q>
1528 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<2, T, Q> &v) {
1529 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1532 template<
typename T, qualifier Q>
1533 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<3, T, Q> &v) {
1534 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1537 template<
typename T, qualifier Q>
1538 GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<4, T, Q> &v) {
1539 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1543 template<
typename T, qualifier Q>
1544 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<2, T, Q> &v) {
1545 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1548 template<
typename T, qualifier Q>
1549 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<3, T, Q> &v) {
1550 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1553 template<
typename T, qualifier Q>
1554 GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<4, T, Q> &v) {
1555 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1559 template<
typename T, qualifier Q>
1560 GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<3, T, Q> &v) {
1561 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1564 template<
typename T, qualifier Q>
1565 GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<4, T, Q> &v) {
1566 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1570 template<
typename T, qualifier Q>
1571 GLM_INLINE glm::vec<4, T, Q> yyyw(
const glm::vec<4, T, Q> &v) {
1572 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
1576 template<
typename T, qualifier Q>
1577 GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<3, T, Q> &v) {
1578 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1581 template<
typename T, qualifier Q>
1582 GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<4, T, Q> &v) {
1583 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1587 template<
typename T, qualifier Q>
1588 GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<3, T, Q> &v) {
1589 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1592 template<
typename T, qualifier Q>
1593 GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<4, T, Q> &v) {
1594 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1598 template<
typename T, qualifier Q>
1599 GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<3, T, Q> &v) {
1600 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1603 template<
typename T, qualifier Q>
1604 GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<4, T, Q> &v) {
1605 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1609 template<
typename T, qualifier Q>
1610 GLM_INLINE glm::vec<4, T, Q> yyzw(
const glm::vec<4, T, Q> &v) {
1611 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
1615 template<
typename T, qualifier Q>
1616 GLM_INLINE glm::vec<4, T, Q> yywx(
const glm::vec<4, T, Q> &v) {
1617 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
1621 template<
typename T, qualifier Q>
1622 GLM_INLINE glm::vec<4, T, Q> yywy(
const glm::vec<4, T, Q> &v) {
1623 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
1627 template<
typename T, qualifier Q>
1628 GLM_INLINE glm::vec<4, T, Q> yywz(
const glm::vec<4, T, Q> &v) {
1629 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
1633 template<
typename T, qualifier Q>
1634 GLM_INLINE glm::vec<4, T, Q> yyww(
const glm::vec<4, T, Q> &v) {
1635 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
1639 template<
typename T, qualifier Q>
1640 GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<3, T, Q> &v) {
1641 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1644 template<
typename T, qualifier Q>
1645 GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<4, T, Q> &v) {
1646 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1650 template<
typename T, qualifier Q>
1651 GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<3, T, Q> &v) {
1652 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1655 template<
typename T, qualifier Q>
1656 GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<4, T, Q> &v) {
1657 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1661 template<
typename T, qualifier Q>
1662 GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<3, T, Q> &v) {
1663 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1666 template<
typename T, qualifier Q>
1667 GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<4, T, Q> &v) {
1668 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1672 template<
typename T, qualifier Q>
1673 GLM_INLINE glm::vec<4, T, Q> yzxw(
const glm::vec<4, T, Q> &v) {
1674 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
1678 template<
typename T, qualifier Q>
1679 GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<3, T, Q> &v) {
1680 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1683 template<
typename T, qualifier Q>
1684 GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<4, T, Q> &v) {
1685 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1689 template<
typename T, qualifier Q>
1690 GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<3, T, Q> &v) {
1691 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1694 template<
typename T, qualifier Q>
1695 GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<4, T, Q> &v) {
1696 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1700 template<
typename T, qualifier Q>
1701 GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<3, T, Q> &v) {
1702 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1705 template<
typename T, qualifier Q>
1706 GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<4, T, Q> &v) {
1707 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1711 template<
typename T, qualifier Q>
1712 GLM_INLINE glm::vec<4, T, Q> yzyw(
const glm::vec<4, T, Q> &v) {
1713 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
1717 template<
typename T, qualifier Q>
1718 GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<3, T, Q> &v) {
1719 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1722 template<
typename T, qualifier Q>
1723 GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<4, T, Q> &v) {
1724 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1728 template<
typename T, qualifier Q>
1729 GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<3, T, Q> &v) {
1730 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1733 template<
typename T, qualifier Q>
1734 GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<4, T, Q> &v) {
1735 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1739 template<
typename T, qualifier Q>
1740 GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<3, T, Q> &v) {
1741 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1744 template<
typename T, qualifier Q>
1745 GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<4, T, Q> &v) {
1746 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1750 template<
typename T, qualifier Q>
1751 GLM_INLINE glm::vec<4, T, Q> yzzw(
const glm::vec<4, T, Q> &v) {
1752 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
1756 template<
typename T, qualifier Q>
1757 GLM_INLINE glm::vec<4, T, Q> yzwx(
const glm::vec<4, T, Q> &v) {
1758 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
1762 template<
typename T, qualifier Q>
1763 GLM_INLINE glm::vec<4, T, Q> yzwy(
const glm::vec<4, T, Q> &v) {
1764 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
1768 template<
typename T, qualifier Q>
1769 GLM_INLINE glm::vec<4, T, Q> yzwz(
const glm::vec<4, T, Q> &v) {
1770 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
1774 template<
typename T, qualifier Q>
1775 GLM_INLINE glm::vec<4, T, Q> yzww(
const glm::vec<4, T, Q> &v) {
1776 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
1780 template<
typename T, qualifier Q>
1781 GLM_INLINE glm::vec<4, T, Q> ywxx(
const glm::vec<4, T, Q> &v) {
1782 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
1786 template<
typename T, qualifier Q>
1787 GLM_INLINE glm::vec<4, T, Q> ywxy(
const glm::vec<4, T, Q> &v) {
1788 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
1792 template<
typename T, qualifier Q>
1793 GLM_INLINE glm::vec<4, T, Q> ywxz(
const glm::vec<4, T, Q> &v) {
1794 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
1798 template<
typename T, qualifier Q>
1799 GLM_INLINE glm::vec<4, T, Q> ywxw(
const glm::vec<4, T, Q> &v) {
1800 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
1804 template<
typename T, qualifier Q>
1805 GLM_INLINE glm::vec<4, T, Q> ywyx(
const glm::vec<4, T, Q> &v) {
1806 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
1810 template<
typename T, qualifier Q>
1811 GLM_INLINE glm::vec<4, T, Q> ywyy(
const glm::vec<4, T, Q> &v) {
1812 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
1816 template<
typename T, qualifier Q>
1817 GLM_INLINE glm::vec<4, T, Q> ywyz(
const glm::vec<4, T, Q> &v) {
1818 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
1822 template<
typename T, qualifier Q>
1823 GLM_INLINE glm::vec<4, T, Q> ywyw(
const glm::vec<4, T, Q> &v) {
1824 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
1828 template<
typename T, qualifier Q>
1829 GLM_INLINE glm::vec<4, T, Q> ywzx(
const glm::vec<4, T, Q> &v) {
1830 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
1834 template<
typename T, qualifier Q>
1835 GLM_INLINE glm::vec<4, T, Q> ywzy(
const glm::vec<4, T, Q> &v) {
1836 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
1840 template<
typename T, qualifier Q>
1841 GLM_INLINE glm::vec<4, T, Q> ywzz(
const glm::vec<4, T, Q> &v) {
1842 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
1846 template<
typename T, qualifier Q>
1847 GLM_INLINE glm::vec<4, T, Q> ywzw(
const glm::vec<4, T, Q> &v) {
1848 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
1852 template<
typename T, qualifier Q>
1853 GLM_INLINE glm::vec<4, T, Q> ywwx(
const glm::vec<4, T, Q> &v) {
1854 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
1858 template<
typename T, qualifier Q>
1859 GLM_INLINE glm::vec<4, T, Q> ywwy(
const glm::vec<4, T, Q> &v) {
1860 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
1864 template<
typename T, qualifier Q>
1865 GLM_INLINE glm::vec<4, T, Q> ywwz(
const glm::vec<4, T, Q> &v) {
1866 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
1870 template<
typename T, qualifier Q>
1871 GLM_INLINE glm::vec<4, T, Q> ywww(
const glm::vec<4, T, Q> &v) {
1872 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
1876 template<
typename T, qualifier Q>
1877 GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<3, T, Q> &v) {
1878 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1881 template<
typename T, qualifier Q>
1882 GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<4, T, Q> &v) {
1883 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1887 template<
typename T, qualifier Q>
1888 GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<3, T, Q> &v) {
1889 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1892 template<
typename T, qualifier Q>
1893 GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<4, T, Q> &v) {
1894 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1898 template<
typename T, qualifier Q>
1899 GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<3, T, Q> &v) {
1900 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1903 template<
typename T, qualifier Q>
1904 GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<4, T, Q> &v) {
1905 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1909 template<
typename T, qualifier Q>
1910 GLM_INLINE glm::vec<4, T, Q> zxxw(
const glm::vec<4, T, Q> &v) {
1911 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
1915 template<
typename T, qualifier Q>
1916 GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<3, T, Q> &v) {
1917 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1920 template<
typename T, qualifier Q>
1921 GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<4, T, Q> &v) {
1922 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1926 template<
typename T, qualifier Q>
1927 GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<3, T, Q> &v) {
1928 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1931 template<
typename T, qualifier Q>
1932 GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<4, T, Q> &v) {
1933 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1937 template<
typename T, qualifier Q>
1938 GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<3, T, Q> &v) {
1939 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1942 template<
typename T, qualifier Q>
1943 GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<4, T, Q> &v) {
1944 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1948 template<
typename T, qualifier Q>
1949 GLM_INLINE glm::vec<4, T, Q> zxyw(
const glm::vec<4, T, Q> &v) {
1950 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
1954 template<
typename T, qualifier Q>
1955 GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<3, T, Q> &v) {
1956 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1959 template<
typename T, qualifier Q>
1960 GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<4, T, Q> &v) {
1961 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1965 template<
typename T, qualifier Q>
1966 GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<3, T, Q> &v) {
1967 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1970 template<
typename T, qualifier Q>
1971 GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<4, T, Q> &v) {
1972 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1976 template<
typename T, qualifier Q>
1977 GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<3, T, Q> &v) {
1978 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1981 template<
typename T, qualifier Q>
1982 GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<4, T, Q> &v) {
1983 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1987 template<
typename T, qualifier Q>
1988 GLM_INLINE glm::vec<4, T, Q> zxzw(
const glm::vec<4, T, Q> &v) {
1989 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
1993 template<
typename T, qualifier Q>
1994 GLM_INLINE glm::vec<4, T, Q> zxwx(
const glm::vec<4, T, Q> &v) {
1995 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
1999 template<
typename T, qualifier Q>
2000 GLM_INLINE glm::vec<4, T, Q> zxwy(
const glm::vec<4, T, Q> &v) {
2001 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
2005 template<
typename T, qualifier Q>
2006 GLM_INLINE glm::vec<4, T, Q> zxwz(
const glm::vec<4, T, Q> &v) {
2007 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
2011 template<
typename T, qualifier Q>
2012 GLM_INLINE glm::vec<4, T, Q> zxww(
const glm::vec<4, T, Q> &v) {
2013 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
2017 template<
typename T, qualifier Q>
2018 GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<3, T, Q> &v) {
2019 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2022 template<
typename T, qualifier Q>
2023 GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<4, T, Q> &v) {
2024 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2028 template<
typename T, qualifier Q>
2029 GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<3, T, Q> &v) {
2030 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2033 template<
typename T, qualifier Q>
2034 GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<4, T, Q> &v) {
2035 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2039 template<
typename T, qualifier Q>
2040 GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<3, T, Q> &v) {
2041 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2044 template<
typename T, qualifier Q>
2045 GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<4, T, Q> &v) {
2046 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2050 template<
typename T, qualifier Q>
2051 GLM_INLINE glm::vec<4, T, Q> zyxw(
const glm::vec<4, T, Q> &v) {
2052 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
2056 template<
typename T, qualifier Q>
2057 GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<3, T, Q> &v) {
2058 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2061 template<
typename T, qualifier Q>
2062 GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<4, T, Q> &v) {
2063 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2067 template<
typename T, qualifier Q>
2068 GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<3, T, Q> &v) {
2069 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2072 template<
typename T, qualifier Q>
2073 GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<4, T, Q> &v) {
2074 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2078 template<
typename T, qualifier Q>
2079 GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<3, T, Q> &v) {
2080 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2083 template<
typename T, qualifier Q>
2084 GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<4, T, Q> &v) {
2085 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2089 template<
typename T, qualifier Q>
2090 GLM_INLINE glm::vec<4, T, Q> zyyw(
const glm::vec<4, T, Q> &v) {
2091 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
2095 template<
typename T, qualifier Q>
2096 GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<3, T, Q> &v) {
2097 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2100 template<
typename T, qualifier Q>
2101 GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<4, T, Q> &v) {
2102 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2106 template<
typename T, qualifier Q>
2107 GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<3, T, Q> &v) {
2108 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2111 template<
typename T, qualifier Q>
2112 GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<4, T, Q> &v) {
2113 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2117 template<
typename T, qualifier Q>
2118 GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<3, T, Q> &v) {
2119 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2122 template<
typename T, qualifier Q>
2123 GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<4, T, Q> &v) {
2124 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2128 template<
typename T, qualifier Q>
2129 GLM_INLINE glm::vec<4, T, Q> zyzw(
const glm::vec<4, T, Q> &v) {
2130 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
2134 template<
typename T, qualifier Q>
2135 GLM_INLINE glm::vec<4, T, Q> zywx(
const glm::vec<4, T, Q> &v) {
2136 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
2140 template<
typename T, qualifier Q>
2141 GLM_INLINE glm::vec<4, T, Q> zywy(
const glm::vec<4, T, Q> &v) {
2142 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
2146 template<
typename T, qualifier Q>
2147 GLM_INLINE glm::vec<4, T, Q> zywz(
const glm::vec<4, T, Q> &v) {
2148 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
2152 template<
typename T, qualifier Q>
2153 GLM_INLINE glm::vec<4, T, Q> zyww(
const glm::vec<4, T, Q> &v) {
2154 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
2158 template<
typename T, qualifier Q>
2159 GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<3, T, Q> &v) {
2160 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2163 template<
typename T, qualifier Q>
2164 GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<4, T, Q> &v) {
2165 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2169 template<
typename T, qualifier Q>
2170 GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<3, T, Q> &v) {
2171 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2174 template<
typename T, qualifier Q>
2175 GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<4, T, Q> &v) {
2176 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2180 template<
typename T, qualifier Q>
2181 GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<3, T, Q> &v) {
2182 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2185 template<
typename T, qualifier Q>
2186 GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<4, T, Q> &v) {
2187 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2191 template<
typename T, qualifier Q>
2192 GLM_INLINE glm::vec<4, T, Q> zzxw(
const glm::vec<4, T, Q> &v) {
2193 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
2197 template<
typename T, qualifier Q>
2198 GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<3, T, Q> &v) {
2199 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2202 template<
typename T, qualifier Q>
2203 GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<4, T, Q> &v) {
2204 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2208 template<
typename T, qualifier Q>
2209 GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<3, T, Q> &v) {
2210 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2213 template<
typename T, qualifier Q>
2214 GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<4, T, Q> &v) {
2215 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2219 template<
typename T, qualifier Q>
2220 GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<3, T, Q> &v) {
2221 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2224 template<
typename T, qualifier Q>
2225 GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<4, T, Q> &v) {
2226 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2230 template<
typename T, qualifier Q>
2231 GLM_INLINE glm::vec<4, T, Q> zzyw(
const glm::vec<4, T, Q> &v) {
2232 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
2236 template<
typename T, qualifier Q>
2237 GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<3, T, Q> &v) {
2238 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2241 template<
typename T, qualifier Q>
2242 GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<4, T, Q> &v) {
2243 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2247 template<
typename T, qualifier Q>
2248 GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<3, T, Q> &v) {
2249 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2252 template<
typename T, qualifier Q>
2253 GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<4, T, Q> &v) {
2254 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2258 template<
typename T, qualifier Q>
2259 GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<3, T, Q> &v) {
2260 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2263 template<
typename T, qualifier Q>
2264 GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<4, T, Q> &v) {
2265 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2269 template<
typename T, qualifier Q>
2270 GLM_INLINE glm::vec<4, T, Q> zzzw(
const glm::vec<4, T, Q> &v) {
2271 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
2275 template<
typename T, qualifier Q>
2276 GLM_INLINE glm::vec<4, T, Q> zzwx(
const glm::vec<4, T, Q> &v) {
2277 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
2281 template<
typename T, qualifier Q>
2282 GLM_INLINE glm::vec<4, T, Q> zzwy(
const glm::vec<4, T, Q> &v) {
2283 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
2287 template<
typename T, qualifier Q>
2288 GLM_INLINE glm::vec<4, T, Q> zzwz(
const glm::vec<4, T, Q> &v) {
2289 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
2293 template<
typename T, qualifier Q>
2294 GLM_INLINE glm::vec<4, T, Q> zzww(
const glm::vec<4, T, Q> &v) {
2295 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
2299 template<
typename T, qualifier Q>
2300 GLM_INLINE glm::vec<4, T, Q> zwxx(
const glm::vec<4, T, Q> &v) {
2301 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
2305 template<
typename T, qualifier Q>
2306 GLM_INLINE glm::vec<4, T, Q> zwxy(
const glm::vec<4, T, Q> &v) {
2307 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
2311 template<
typename T, qualifier Q>
2312 GLM_INLINE glm::vec<4, T, Q> zwxz(
const glm::vec<4, T, Q> &v) {
2313 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
2317 template<
typename T, qualifier Q>
2318 GLM_INLINE glm::vec<4, T, Q> zwxw(
const glm::vec<4, T, Q> &v) {
2319 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
2323 template<
typename T, qualifier Q>
2324 GLM_INLINE glm::vec<4, T, Q> zwyx(
const glm::vec<4, T, Q> &v) {
2325 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
2329 template<
typename T, qualifier Q>
2330 GLM_INLINE glm::vec<4, T, Q> zwyy(
const glm::vec<4, T, Q> &v) {
2331 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
2335 template<
typename T, qualifier Q>
2336 GLM_INLINE glm::vec<4, T, Q> zwyz(
const glm::vec<4, T, Q> &v) {
2337 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
2341 template<
typename T, qualifier Q>
2342 GLM_INLINE glm::vec<4, T, Q> zwyw(
const glm::vec<4, T, Q> &v) {
2343 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
2347 template<
typename T, qualifier Q>
2348 GLM_INLINE glm::vec<4, T, Q> zwzx(
const glm::vec<4, T, Q> &v) {
2349 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
2353 template<
typename T, qualifier Q>
2354 GLM_INLINE glm::vec<4, T, Q> zwzy(
const glm::vec<4, T, Q> &v) {
2355 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
2359 template<
typename T, qualifier Q>
2360 GLM_INLINE glm::vec<4, T, Q> zwzz(
const glm::vec<4, T, Q> &v) {
2361 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
2365 template<
typename T, qualifier Q>
2366 GLM_INLINE glm::vec<4, T, Q> zwzw(
const glm::vec<4, T, Q> &v) {
2367 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
2371 template<
typename T, qualifier Q>
2372 GLM_INLINE glm::vec<4, T, Q> zwwx(
const glm::vec<4, T, Q> &v) {
2373 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
2377 template<
typename T, qualifier Q>
2378 GLM_INLINE glm::vec<4, T, Q> zwwy(
const glm::vec<4, T, Q> &v) {
2379 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
2383 template<
typename T, qualifier Q>
2384 GLM_INLINE glm::vec<4, T, Q> zwwz(
const glm::vec<4, T, Q> &v) {
2385 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
2389 template<
typename T, qualifier Q>
2390 GLM_INLINE glm::vec<4, T, Q> zwww(
const glm::vec<4, T, Q> &v) {
2391 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
2395 template<
typename T, qualifier Q>
2396 GLM_INLINE glm::vec<4, T, Q> wxxx(
const glm::vec<4, T, Q> &v) {
2397 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
2401 template<
typename T, qualifier Q>
2402 GLM_INLINE glm::vec<4, T, Q> wxxy(
const glm::vec<4, T, Q> &v) {
2403 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
2407 template<
typename T, qualifier Q>
2408 GLM_INLINE glm::vec<4, T, Q> wxxz(
const glm::vec<4, T, Q> &v) {
2409 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
2413 template<
typename T, qualifier Q>
2414 GLM_INLINE glm::vec<4, T, Q> wxxw(
const glm::vec<4, T, Q> &v) {
2415 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
2419 template<
typename T, qualifier Q>
2420 GLM_INLINE glm::vec<4, T, Q> wxyx(
const glm::vec<4, T, Q> &v) {
2421 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
2425 template<
typename T, qualifier Q>
2426 GLM_INLINE glm::vec<4, T, Q> wxyy(
const glm::vec<4, T, Q> &v) {
2427 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
2431 template<
typename T, qualifier Q>
2432 GLM_INLINE glm::vec<4, T, Q> wxyz(
const glm::vec<4, T, Q> &v) {
2433 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
2437 template<
typename T, qualifier Q>
2438 GLM_INLINE glm::vec<4, T, Q> wxyw(
const glm::vec<4, T, Q> &v) {
2439 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
2443 template<
typename T, qualifier Q>
2444 GLM_INLINE glm::vec<4, T, Q> wxzx(
const glm::vec<4, T, Q> &v) {
2445 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
2449 template<
typename T, qualifier Q>
2450 GLM_INLINE glm::vec<4, T, Q> wxzy(
const glm::vec<4, T, Q> &v) {
2451 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
2455 template<
typename T, qualifier Q>
2456 GLM_INLINE glm::vec<4, T, Q> wxzz(
const glm::vec<4, T, Q> &v) {
2457 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
2461 template<
typename T, qualifier Q>
2462 GLM_INLINE glm::vec<4, T, Q> wxzw(
const glm::vec<4, T, Q> &v) {
2463 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
2467 template<
typename T, qualifier Q>
2468 GLM_INLINE glm::vec<4, T, Q> wxwx(
const glm::vec<4, T, Q> &v) {
2469 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
2473 template<
typename T, qualifier Q>
2474 GLM_INLINE glm::vec<4, T, Q> wxwy(
const glm::vec<4, T, Q> &v) {
2475 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
2479 template<
typename T, qualifier Q>
2480 GLM_INLINE glm::vec<4, T, Q> wxwz(
const glm::vec<4, T, Q> &v) {
2481 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
2485 template<
typename T, qualifier Q>
2486 GLM_INLINE glm::vec<4, T, Q> wxww(
const glm::vec<4, T, Q> &v) {
2487 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
2491 template<
typename T, qualifier Q>
2492 GLM_INLINE glm::vec<4, T, Q> wyxx(
const glm::vec<4, T, Q> &v) {
2493 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
2497 template<
typename T, qualifier Q>
2498 GLM_INLINE glm::vec<4, T, Q> wyxy(
const glm::vec<4, T, Q> &v) {
2499 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
2503 template<
typename T, qualifier Q>
2504 GLM_INLINE glm::vec<4, T, Q> wyxz(
const glm::vec<4, T, Q> &v) {
2505 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
2509 template<
typename T, qualifier Q>
2510 GLM_INLINE glm::vec<4, T, Q> wyxw(
const glm::vec<4, T, Q> &v) {
2511 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
2515 template<
typename T, qualifier Q>
2516 GLM_INLINE glm::vec<4, T, Q> wyyx(
const glm::vec<4, T, Q> &v) {
2517 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
2521 template<
typename T, qualifier Q>
2522 GLM_INLINE glm::vec<4, T, Q> wyyy(
const glm::vec<4, T, Q> &v) {
2523 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
2527 template<
typename T, qualifier Q>
2528 GLM_INLINE glm::vec<4, T, Q> wyyz(
const glm::vec<4, T, Q> &v) {
2529 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
2533 template<
typename T, qualifier Q>
2534 GLM_INLINE glm::vec<4, T, Q> wyyw(
const glm::vec<4, T, Q> &v) {
2535 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
2539 template<
typename T, qualifier Q>
2540 GLM_INLINE glm::vec<4, T, Q> wyzx(
const glm::vec<4, T, Q> &v) {
2541 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
2545 template<
typename T, qualifier Q>
2546 GLM_INLINE glm::vec<4, T, Q> wyzy(
const glm::vec<4, T, Q> &v) {
2547 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
2551 template<
typename T, qualifier Q>
2552 GLM_INLINE glm::vec<4, T, Q> wyzz(
const glm::vec<4, T, Q> &v) {
2553 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
2557 template<
typename T, qualifier Q>
2558 GLM_INLINE glm::vec<4, T, Q> wyzw(
const glm::vec<4, T, Q> &v) {
2559 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
2563 template<
typename T, qualifier Q>
2564 GLM_INLINE glm::vec<4, T, Q> wywx(
const glm::vec<4, T, Q> &v) {
2565 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
2569 template<
typename T, qualifier Q>
2570 GLM_INLINE glm::vec<4, T, Q> wywy(
const glm::vec<4, T, Q> &v) {
2571 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
2575 template<
typename T, qualifier Q>
2576 GLM_INLINE glm::vec<4, T, Q> wywz(
const glm::vec<4, T, Q> &v) {
2577 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
2581 template<
typename T, qualifier Q>
2582 GLM_INLINE glm::vec<4, T, Q> wyww(
const glm::vec<4, T, Q> &v) {
2583 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
2587 template<
typename T, qualifier Q>
2588 GLM_INLINE glm::vec<4, T, Q> wzxx(
const glm::vec<4, T, Q> &v) {
2589 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
2593 template<
typename T, qualifier Q>
2594 GLM_INLINE glm::vec<4, T, Q> wzxy(
const glm::vec<4, T, Q> &v) {
2595 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
2599 template<
typename T, qualifier Q>
2600 GLM_INLINE glm::vec<4, T, Q> wzxz(
const glm::vec<4, T, Q> &v) {
2601 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
2605 template<
typename T, qualifier Q>
2606 GLM_INLINE glm::vec<4, T, Q> wzxw(
const glm::vec<4, T, Q> &v) {
2607 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
2611 template<
typename T, qualifier Q>
2612 GLM_INLINE glm::vec<4, T, Q> wzyx(
const glm::vec<4, T, Q> &v) {
2613 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
2617 template<
typename T, qualifier Q>
2618 GLM_INLINE glm::vec<4, T, Q> wzyy(
const glm::vec<4, T, Q> &v) {
2619 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
2623 template<
typename T, qualifier Q>
2624 GLM_INLINE glm::vec<4, T, Q> wzyz(
const glm::vec<4, T, Q> &v) {
2625 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
2629 template<
typename T, qualifier Q>
2630 GLM_INLINE glm::vec<4, T, Q> wzyw(
const glm::vec<4, T, Q> &v) {
2631 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
2635 template<
typename T, qualifier Q>
2636 GLM_INLINE glm::vec<4, T, Q> wzzx(
const glm::vec<4, T, Q> &v) {
2637 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
2641 template<
typename T, qualifier Q>
2642 GLM_INLINE glm::vec<4, T, Q> wzzy(
const glm::vec<4, T, Q> &v) {
2643 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
2647 template<
typename T, qualifier Q>
2648 GLM_INLINE glm::vec<4, T, Q> wzzz(
const glm::vec<4, T, Q> &v) {
2649 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
2653 template<
typename T, qualifier Q>
2654 GLM_INLINE glm::vec<4, T, Q> wzzw(
const glm::vec<4, T, Q> &v) {
2655 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
2659 template<
typename T, qualifier Q>
2660 GLM_INLINE glm::vec<4, T, Q> wzwx(
const glm::vec<4, T, Q> &v) {
2661 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
2665 template<
typename T, qualifier Q>
2666 GLM_INLINE glm::vec<4, T, Q> wzwy(
const glm::vec<4, T, Q> &v) {
2667 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
2671 template<
typename T, qualifier Q>
2672 GLM_INLINE glm::vec<4, T, Q> wzwz(
const glm::vec<4, T, Q> &v) {
2673 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
2677 template<
typename T, qualifier Q>
2678 GLM_INLINE glm::vec<4, T, Q> wzww(
const glm::vec<4, T, Q> &v) {
2679 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
2683 template<
typename T, qualifier Q>
2684 GLM_INLINE glm::vec<4, T, Q> wwxx(
const glm::vec<4, T, Q> &v) {
2685 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
2689 template<
typename T, qualifier Q>
2690 GLM_INLINE glm::vec<4, T, Q> wwxy(
const glm::vec<4, T, Q> &v) {
2691 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
2695 template<
typename T, qualifier Q>
2696 GLM_INLINE glm::vec<4, T, Q> wwxz(
const glm::vec<4, T, Q> &v) {
2697 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
2701 template<
typename T, qualifier Q>
2702 GLM_INLINE glm::vec<4, T, Q> wwxw(
const glm::vec<4, T, Q> &v) {
2703 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
2707 template<
typename T, qualifier Q>
2708 GLM_INLINE glm::vec<4, T, Q> wwyx(
const glm::vec<4, T, Q> &v) {
2709 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
2713 template<
typename T, qualifier Q>
2714 GLM_INLINE glm::vec<4, T, Q> wwyy(
const glm::vec<4, T, Q> &v) {
2715 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
2719 template<
typename T, qualifier Q>
2720 GLM_INLINE glm::vec<4, T, Q> wwyz(
const glm::vec<4, T, Q> &v) {
2721 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
2725 template<
typename T, qualifier Q>
2726 GLM_INLINE glm::vec<4, T, Q> wwyw(
const glm::vec<4, T, Q> &v) {
2727 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
2731 template<
typename T, qualifier Q>
2732 GLM_INLINE glm::vec<4, T, Q> wwzx(
const glm::vec<4, T, Q> &v) {
2733 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
2737 template<
typename T, qualifier Q>
2738 GLM_INLINE glm::vec<4, T, Q> wwzy(
const glm::vec<4, T, Q> &v) {
2739 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
2743 template<
typename T, qualifier Q>
2744 GLM_INLINE glm::vec<4, T, Q> wwzz(
const glm::vec<4, T, Q> &v) {
2745 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
2749 template<
typename T, qualifier Q>
2750 GLM_INLINE glm::vec<4, T, Q> wwzw(
const glm::vec<4, T, Q> &v) {
2751 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
2755 template<
typename T, qualifier Q>
2756 GLM_INLINE glm::vec<4, T, Q> wwwx(
const glm::vec<4, T, Q> &v) {
2757 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
2761 template<
typename T, qualifier Q>
2762 GLM_INLINE glm::vec<4, T, Q> wwwy(
const glm::vec<4, T, Q> &v) {
2763 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
2767 template<
typename T, qualifier Q>
2768 GLM_INLINE glm::vec<4, T, Q> wwwz(
const glm::vec<4, T, Q> &v) {
2769 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
2773 template<
typename T, qualifier Q>
2774 GLM_INLINE glm::vec<4, T, Q> wwww(
const glm::vec<4, T, Q> &v) {
2775 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);