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."
19 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
20 # pragma message("GLM: GLM_GTX_vec_swizzle extension included")
28 template<
typename T, qualifier Q>
29 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(
const glm::vec<1, T, Q> &v) {
30 return glm::vec<2, T, Q>(v.x, v.x);
33 template<
typename T, qualifier Q>
34 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(
const glm::vec<2, T, Q> &v) {
35 return glm::vec<2, T, Q>(v.x, v.x);
38 template<
typename T, qualifier Q>
39 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(
const glm::vec<3, T, Q> &v) {
40 return glm::vec<2, T, Q>(v.x, v.x);
43 template<
typename T, qualifier Q>
44 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(
const glm::vec<4, T, Q> &v) {
45 return glm::vec<2, T, Q>(v.x, v.x);
49 template<
typename T, qualifier Q>
50 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(
const glm::vec<2, T, Q> &v) {
51 return glm::vec<2, T, Q>(v.x, v.y);
54 template<
typename T, qualifier Q>
55 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(
const glm::vec<3, T, Q> &v) {
56 return glm::vec<2, T, Q>(v.x, v.y);
59 template<
typename T, qualifier Q>
60 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(
const glm::vec<4, T, Q> &v) {
61 return glm::vec<2, T, Q>(v.x, v.y);
65 template<
typename T, qualifier Q>
66 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(
const glm::vec<3, T, Q> &v) {
67 return glm::vec<2, T, Q>(v.x, v.z);
70 template<
typename T, qualifier Q>
71 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(
const glm::vec<4, T, Q> &v) {
72 return glm::vec<2, T, Q>(v.x, v.z);
76 template<
typename T, qualifier Q>
77 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xw(
const glm::vec<4, T, Q> &v) {
78 return glm::vec<2, T, Q>(v.x, v.w);
82 template<
typename T, qualifier Q>
83 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(
const glm::vec<2, T, Q> &v) {
84 return glm::vec<2, T, Q>(v.y, v.x);
87 template<
typename T, qualifier Q>
88 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(
const glm::vec<3, T, Q> &v) {
89 return glm::vec<2, T, Q>(v.y, v.x);
92 template<
typename T, qualifier Q>
93 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(
const glm::vec<4, T, Q> &v) {
94 return glm::vec<2, T, Q>(v.y, v.x);
98 template<
typename T, qualifier Q>
99 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(
const glm::vec<2, T, Q> &v) {
100 return glm::vec<2, T, Q>(v.y, v.y);
103 template<
typename T, qualifier Q>
104 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(
const glm::vec<3, T, Q> &v) {
105 return glm::vec<2, T, Q>(v.y, v.y);
108 template<
typename T, qualifier Q>
109 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(
const glm::vec<4, T, Q> &v) {
110 return glm::vec<2, T, Q>(v.y, v.y);
114 template<
typename T, qualifier Q>
115 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(
const glm::vec<3, T, Q> &v) {
116 return glm::vec<2, T, Q>(v.y, v.z);
119 template<
typename T, qualifier Q>
120 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(
const glm::vec<4, T, Q> &v) {
121 return glm::vec<2, T, Q>(v.y, v.z);
125 template<
typename T, qualifier Q>
126 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yw(
const glm::vec<4, T, Q> &v) {
127 return glm::vec<2, T, Q>(v.y, v.w);
131 template<
typename T, qualifier Q>
132 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(
const glm::vec<3, T, Q> &v) {
133 return glm::vec<2, T, Q>(v.z, v.x);
136 template<
typename T, qualifier Q>
137 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(
const glm::vec<4, T, Q> &v) {
138 return glm::vec<2, T, Q>(v.z, v.x);
142 template<
typename T, qualifier Q>
143 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(
const glm::vec<3, T, Q> &v) {
144 return glm::vec<2, T, Q>(v.z, v.y);
147 template<
typename T, qualifier Q>
148 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(
const glm::vec<4, T, Q> &v) {
149 return glm::vec<2, T, Q>(v.z, v.y);
153 template<
typename T, qualifier Q>
154 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(
const glm::vec<3, T, Q> &v) {
155 return glm::vec<2, T, Q>(v.z, v.z);
158 template<
typename T, qualifier Q>
159 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(
const glm::vec<4, T, Q> &v) {
160 return glm::vec<2, T, Q>(v.z, v.z);
164 template<
typename T, qualifier Q>
165 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zw(
const glm::vec<4, T, Q> &v) {
166 return glm::vec<2, T, Q>(v.z, v.w);
170 template<
typename T, qualifier Q>
171 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wx(
const glm::vec<4, T, Q> &v) {
172 return glm::vec<2, T, Q>(v.w, v.x);
176 template<
typename T, qualifier Q>
177 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wy(
const glm::vec<4, T, Q> &v) {
178 return glm::vec<2, T, Q>(v.w, v.y);
182 template<
typename T, qualifier Q>
183 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wz(
const glm::vec<4, T, Q> &v) {
184 return glm::vec<2, T, Q>(v.w, v.z);
188 template<
typename T, qualifier Q>
189 GLM_FUNC_QUALIFIER glm::vec<2, T, Q> ww(
const glm::vec<4, T, Q> &v) {
190 return glm::vec<2, T, Q>(v.w, v.w);
194 template<
typename T, qualifier Q>
195 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(
const glm::vec<1, T, Q> &v) {
196 return glm::vec<3, T, Q>(v.x, v.x, v.x);
199 template<
typename T, qualifier Q>
200 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(
const glm::vec<2, T, Q> &v) {
201 return glm::vec<3, T, Q>(v.x, v.x, v.x);
204 template<
typename T, qualifier Q>
205 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(
const glm::vec<3, T, Q> &v) {
206 return glm::vec<3, T, Q>(v.x, v.x, v.x);
209 template<
typename T, qualifier Q>
210 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(
const glm::vec<4, T, Q> &v) {
211 return glm::vec<3, T, Q>(v.x, v.x, v.x);
215 template<
typename T, qualifier Q>
216 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(
const glm::vec<2, T, Q> &v) {
217 return glm::vec<3, T, Q>(v.x, v.x, v.y);
220 template<
typename T, qualifier Q>
221 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(
const glm::vec<3, T, Q> &v) {
222 return glm::vec<3, T, Q>(v.x, v.x, v.y);
225 template<
typename T, qualifier Q>
226 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(
const glm::vec<4, T, Q> &v) {
227 return glm::vec<3, T, Q>(v.x, v.x, v.y);
231 template<
typename T, qualifier Q>
232 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(
const glm::vec<3, T, Q> &v) {
233 return glm::vec<3, T, Q>(v.x, v.x, v.z);
236 template<
typename T, qualifier Q>
237 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(
const glm::vec<4, T, Q> &v) {
238 return glm::vec<3, T, Q>(v.x, v.x, v.z);
242 template<
typename T, qualifier Q>
243 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxw(
const glm::vec<4, T, Q> &v) {
244 return glm::vec<3, T, Q>(v.x, v.x, v.w);
248 template<
typename T, qualifier Q>
249 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(
const glm::vec<2, T, Q> &v) {
250 return glm::vec<3, T, Q>(v.x, v.y, v.x);
253 template<
typename T, qualifier Q>
254 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(
const glm::vec<3, T, Q> &v) {
255 return glm::vec<3, T, Q>(v.x, v.y, v.x);
258 template<
typename T, qualifier Q>
259 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(
const glm::vec<4, T, Q> &v) {
260 return glm::vec<3, T, Q>(v.x, v.y, v.x);
264 template<
typename T, qualifier Q>
265 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(
const glm::vec<2, T, Q> &v) {
266 return glm::vec<3, T, Q>(v.x, v.y, v.y);
269 template<
typename T, qualifier Q>
270 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(
const glm::vec<3, T, Q> &v) {
271 return glm::vec<3, T, Q>(v.x, v.y, v.y);
274 template<
typename T, qualifier Q>
275 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(
const glm::vec<4, T, Q> &v) {
276 return glm::vec<3, T, Q>(v.x, v.y, v.y);
280 template<
typename T, qualifier Q>
281 GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyz(
const glm::vec<3, T, Q> &v) {
282 return glm::vec<3, T, Q>(v.x, v.y, v.z);
286 template<
typename T, qualifier Q>
287 GLM_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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_FUNC_QUALIFIER 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);
1040 template<
typename T, qualifier Q>
1041 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzw(
const glm::vec<4, T, Q> &v) {
1042 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
1046 template<
typename T, qualifier Q>
1047 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywx(
const glm::vec<4, T, Q> &v) {
1048 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
1052 template<
typename T, qualifier Q>
1053 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywy(
const glm::vec<4, T, Q> &v) {
1054 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
1058 template<
typename T, qualifier Q>
1059 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywz(
const glm::vec<4, T, Q> &v) {
1060 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
1064 template<
typename T, qualifier Q>
1065 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyww(
const glm::vec<4, T, Q> &v) {
1066 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
1070 template<
typename T, qualifier Q>
1071 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(
const glm::vec<3, T, Q> &v) {
1072 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1075 template<
typename T, qualifier Q>
1076 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(
const glm::vec<4, T, Q> &v) {
1077 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
1081 template<
typename T, qualifier Q>
1082 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(
const glm::vec<3, T, Q> &v) {
1083 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1086 template<
typename T, qualifier Q>
1087 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(
const glm::vec<4, T, Q> &v) {
1088 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
1092 template<
typename T, qualifier Q>
1093 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(
const glm::vec<3, T, Q> &v) {
1094 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1097 template<
typename T, qualifier Q>
1098 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(
const glm::vec<4, T, Q> &v) {
1099 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
1103 template<
typename T, qualifier Q>
1104 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxw(
const glm::vec<4, T, Q> &v) {
1105 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
1109 template<
typename T, qualifier Q>
1110 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(
const glm::vec<3, T, Q> &v) {
1111 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1114 template<
typename T, qualifier Q>
1115 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(
const glm::vec<4, T, Q> &v) {
1116 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
1120 template<
typename T, qualifier Q>
1121 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(
const glm::vec<3, T, Q> &v) {
1122 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1125 template<
typename T, qualifier Q>
1126 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(
const glm::vec<4, T, Q> &v) {
1127 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
1131 template<
typename T, qualifier Q>
1132 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(
const glm::vec<3, T, Q> &v) {
1133 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1136 template<
typename T, qualifier Q>
1137 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(
const glm::vec<4, T, Q> &v) {
1138 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
1142 template<
typename T, qualifier Q>
1143 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyw(
const glm::vec<4, T, Q> &v) {
1144 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
1148 template<
typename T, qualifier Q>
1149 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(
const glm::vec<3, T, Q> &v) {
1150 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1153 template<
typename T, qualifier Q>
1154 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(
const glm::vec<4, T, Q> &v) {
1155 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
1159 template<
typename T, qualifier Q>
1160 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(
const glm::vec<3, T, Q> &v) {
1161 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1164 template<
typename T, qualifier Q>
1165 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(
const glm::vec<4, T, Q> &v) {
1166 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
1170 template<
typename T, qualifier Q>
1171 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(
const glm::vec<3, T, Q> &v) {
1172 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1175 template<
typename T, qualifier Q>
1176 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(
const glm::vec<4, T, Q> &v) {
1177 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
1181 template<
typename T, qualifier Q>
1182 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzw(
const glm::vec<4, T, Q> &v) {
1183 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
1187 template<
typename T, qualifier Q>
1188 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwx(
const glm::vec<4, T, Q> &v) {
1189 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
1193 template<
typename T, qualifier Q>
1194 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwy(
const glm::vec<4, T, Q> &v) {
1195 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
1199 template<
typename T, qualifier Q>
1200 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwz(
const glm::vec<4, T, Q> &v) {
1201 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
1205 template<
typename T, qualifier Q>
1206 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzww(
const glm::vec<4, T, Q> &v) {
1207 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
1211 template<
typename T, qualifier Q>
1212 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxx(
const glm::vec<4, T, Q> &v) {
1213 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
1217 template<
typename T, qualifier Q>
1218 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxy(
const glm::vec<4, T, Q> &v) {
1219 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
1223 template<
typename T, qualifier Q>
1224 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxz(
const glm::vec<4, T, Q> &v) {
1225 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
1229 template<
typename T, qualifier Q>
1230 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxw(
const glm::vec<4, T, Q> &v) {
1231 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
1235 template<
typename T, qualifier Q>
1236 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyx(
const glm::vec<4, T, Q> &v) {
1237 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
1241 template<
typename T, qualifier Q>
1242 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyy(
const glm::vec<4, T, Q> &v) {
1243 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
1247 template<
typename T, qualifier Q>
1248 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyz(
const glm::vec<4, T, Q> &v) {
1249 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
1253 template<
typename T, qualifier Q>
1254 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyw(
const glm::vec<4, T, Q> &v) {
1255 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
1259 template<
typename T, qualifier Q>
1260 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzx(
const glm::vec<4, T, Q> &v) {
1261 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
1265 template<
typename T, qualifier Q>
1266 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzy(
const glm::vec<4, T, Q> &v) {
1267 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
1271 template<
typename T, qualifier Q>
1272 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzz(
const glm::vec<4, T, Q> &v) {
1273 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
1277 template<
typename T, qualifier Q>
1278 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzw(
const glm::vec<4, T, Q> &v) {
1279 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
1283 template<
typename T, qualifier Q>
1284 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwx(
const glm::vec<4, T, Q> &v) {
1285 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
1289 template<
typename T, qualifier Q>
1290 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwy(
const glm::vec<4, T, Q> &v) {
1291 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
1295 template<
typename T, qualifier Q>
1296 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwz(
const glm::vec<4, T, Q> &v) {
1297 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
1301 template<
typename T, qualifier Q>
1302 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwww(
const glm::vec<4, T, Q> &v) {
1303 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
1307 template<
typename T, qualifier Q>
1308 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(
const glm::vec<2, T, Q> &v) {
1309 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1312 template<
typename T, qualifier Q>
1313 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(
const glm::vec<3, T, Q> &v) {
1314 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1317 template<
typename T, qualifier Q>
1318 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(
const glm::vec<4, T, Q> &v) {
1319 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
1323 template<
typename T, qualifier Q>
1324 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(
const glm::vec<2, T, Q> &v) {
1325 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1328 template<
typename T, qualifier Q>
1329 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(
const glm::vec<3, T, Q> &v) {
1330 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1333 template<
typename T, qualifier Q>
1334 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(
const glm::vec<4, T, Q> &v) {
1335 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
1339 template<
typename T, qualifier Q>
1340 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(
const glm::vec<3, T, Q> &v) {
1341 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1344 template<
typename T, qualifier Q>
1345 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(
const glm::vec<4, T, Q> &v) {
1346 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
1350 template<
typename T, qualifier Q>
1351 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxw(
const glm::vec<4, T, Q> &v) {
1352 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
1356 template<
typename T, qualifier Q>
1357 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(
const glm::vec<2, T, Q> &v) {
1358 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1361 template<
typename T, qualifier Q>
1362 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(
const glm::vec<3, T, Q> &v) {
1363 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1366 template<
typename T, qualifier Q>
1367 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(
const glm::vec<4, T, Q> &v) {
1368 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
1372 template<
typename T, qualifier Q>
1373 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(
const glm::vec<2, T, Q> &v) {
1374 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1377 template<
typename T, qualifier Q>
1378 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(
const glm::vec<3, T, Q> &v) {
1379 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1382 template<
typename T, qualifier Q>
1383 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(
const glm::vec<4, T, Q> &v) {
1384 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
1388 template<
typename T, qualifier Q>
1389 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(
const glm::vec<3, T, Q> &v) {
1390 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1393 template<
typename T, qualifier Q>
1394 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(
const glm::vec<4, T, Q> &v) {
1395 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
1399 template<
typename T, qualifier Q>
1400 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyw(
const glm::vec<4, T, Q> &v) {
1401 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
1405 template<
typename T, qualifier Q>
1406 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(
const glm::vec<3, T, Q> &v) {
1407 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1410 template<
typename T, qualifier Q>
1411 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(
const glm::vec<4, T, Q> &v) {
1412 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
1416 template<
typename T, qualifier Q>
1417 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(
const glm::vec<3, T, Q> &v) {
1418 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1421 template<
typename T, qualifier Q>
1422 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(
const glm::vec<4, T, Q> &v) {
1423 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
1427 template<
typename T, qualifier Q>
1428 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(
const glm::vec<3, T, Q> &v) {
1429 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1432 template<
typename T, qualifier Q>
1433 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(
const glm::vec<4, T, Q> &v) {
1434 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
1438 template<
typename T, qualifier Q>
1439 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzw(
const glm::vec<4, T, Q> &v) {
1440 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
1444 template<
typename T, qualifier Q>
1445 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwx(
const glm::vec<4, T, Q> &v) {
1446 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
1450 template<
typename T, qualifier Q>
1451 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwy(
const glm::vec<4, T, Q> &v) {
1452 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
1456 template<
typename T, qualifier Q>
1457 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwz(
const glm::vec<4, T, Q> &v) {
1458 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
1462 template<
typename T, qualifier Q>
1463 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxww(
const glm::vec<4, T, Q> &v) {
1464 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
1468 template<
typename T, qualifier Q>
1469 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(
const glm::vec<2, T, Q> &v) {
1470 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1473 template<
typename T, qualifier Q>
1474 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(
const glm::vec<3, T, Q> &v) {
1475 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1478 template<
typename T, qualifier Q>
1479 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(
const glm::vec<4, T, Q> &v) {
1480 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
1484 template<
typename T, qualifier Q>
1485 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(
const glm::vec<2, T, Q> &v) {
1486 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1489 template<
typename T, qualifier Q>
1490 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(
const glm::vec<3, T, Q> &v) {
1491 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1494 template<
typename T, qualifier Q>
1495 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(
const glm::vec<4, T, Q> &v) {
1496 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
1500 template<
typename T, qualifier Q>
1501 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(
const glm::vec<3, T, Q> &v) {
1502 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1505 template<
typename T, qualifier Q>
1506 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(
const glm::vec<4, T, Q> &v) {
1507 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
1511 template<
typename T, qualifier Q>
1512 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxw(
const glm::vec<4, T, Q> &v) {
1513 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
1517 template<
typename T, qualifier Q>
1518 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(
const glm::vec<2, T, Q> &v) {
1519 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1522 template<
typename T, qualifier Q>
1523 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(
const glm::vec<3, T, Q> &v) {
1524 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1527 template<
typename T, qualifier Q>
1528 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(
const glm::vec<4, T, Q> &v) {
1529 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
1533 template<
typename T, qualifier Q>
1534 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(
const glm::vec<2, T, Q> &v) {
1535 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1538 template<
typename T, qualifier Q>
1539 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(
const glm::vec<3, T, Q> &v) {
1540 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1543 template<
typename T, qualifier Q>
1544 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(
const glm::vec<4, T, Q> &v) {
1545 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
1549 template<
typename T, qualifier Q>
1550 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(
const glm::vec<3, T, Q> &v) {
1551 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1554 template<
typename T, qualifier Q>
1555 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(
const glm::vec<4, T, Q> &v) {
1556 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
1560 template<
typename T, qualifier Q>
1561 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyw(
const glm::vec<4, T, Q> &v) {
1562 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
1566 template<
typename T, qualifier Q>
1567 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(
const glm::vec<3, T, Q> &v) {
1568 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1571 template<
typename T, qualifier Q>
1572 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(
const glm::vec<4, T, Q> &v) {
1573 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
1577 template<
typename T, qualifier Q>
1578 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(
const glm::vec<3, T, Q> &v) {
1579 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1582 template<
typename T, qualifier Q>
1583 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(
const glm::vec<4, T, Q> &v) {
1584 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
1588 template<
typename T, qualifier Q>
1589 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(
const glm::vec<3, T, Q> &v) {
1590 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1593 template<
typename T, qualifier Q>
1594 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(
const glm::vec<4, T, Q> &v) {
1595 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
1599 template<
typename T, qualifier Q>
1600 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzw(
const glm::vec<4, T, Q> &v) {
1601 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
1605 template<
typename T, qualifier Q>
1606 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywx(
const glm::vec<4, T, Q> &v) {
1607 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
1611 template<
typename T, qualifier Q>
1612 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywy(
const glm::vec<4, T, Q> &v) {
1613 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
1617 template<
typename T, qualifier Q>
1618 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywz(
const glm::vec<4, T, Q> &v) {
1619 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
1623 template<
typename T, qualifier Q>
1624 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyww(
const glm::vec<4, T, Q> &v) {
1625 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
1629 template<
typename T, qualifier Q>
1630 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(
const glm::vec<3, T, Q> &v) {
1631 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1634 template<
typename T, qualifier Q>
1635 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(
const glm::vec<4, T, Q> &v) {
1636 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
1640 template<
typename T, qualifier Q>
1641 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(
const glm::vec<3, T, Q> &v) {
1642 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1645 template<
typename T, qualifier Q>
1646 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(
const glm::vec<4, T, Q> &v) {
1647 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
1651 template<
typename T, qualifier Q>
1652 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(
const glm::vec<3, T, Q> &v) {
1653 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1656 template<
typename T, qualifier Q>
1657 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(
const glm::vec<4, T, Q> &v) {
1658 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
1662 template<
typename T, qualifier Q>
1663 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxw(
const glm::vec<4, T, Q> &v) {
1664 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
1668 template<
typename T, qualifier Q>
1669 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(
const glm::vec<3, T, Q> &v) {
1670 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1673 template<
typename T, qualifier Q>
1674 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(
const glm::vec<4, T, Q> &v) {
1675 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
1679 template<
typename T, qualifier Q>
1680 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(
const glm::vec<3, T, Q> &v) {
1681 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1684 template<
typename T, qualifier Q>
1685 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(
const glm::vec<4, T, Q> &v) {
1686 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
1690 template<
typename T, qualifier Q>
1691 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(
const glm::vec<3, T, Q> &v) {
1692 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1695 template<
typename T, qualifier Q>
1696 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(
const glm::vec<4, T, Q> &v) {
1697 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
1701 template<
typename T, qualifier Q>
1702 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyw(
const glm::vec<4, T, Q> &v) {
1703 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
1707 template<
typename T, qualifier Q>
1708 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(
const glm::vec<3, T, Q> &v) {
1709 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1712 template<
typename T, qualifier Q>
1713 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(
const glm::vec<4, T, Q> &v) {
1714 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
1718 template<
typename T, qualifier Q>
1719 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(
const glm::vec<3, T, Q> &v) {
1720 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1723 template<
typename T, qualifier Q>
1724 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(
const glm::vec<4, T, Q> &v) {
1725 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
1729 template<
typename T, qualifier Q>
1730 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(
const glm::vec<3, T, Q> &v) {
1731 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1734 template<
typename T, qualifier Q>
1735 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(
const glm::vec<4, T, Q> &v) {
1736 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
1740 template<
typename T, qualifier Q>
1741 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzw(
const glm::vec<4, T, Q> &v) {
1742 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
1746 template<
typename T, qualifier Q>
1747 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwx(
const glm::vec<4, T, Q> &v) {
1748 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
1752 template<
typename T, qualifier Q>
1753 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwy(
const glm::vec<4, T, Q> &v) {
1754 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
1758 template<
typename T, qualifier Q>
1759 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwz(
const glm::vec<4, T, Q> &v) {
1760 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
1764 template<
typename T, qualifier Q>
1765 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzww(
const glm::vec<4, T, Q> &v) {
1766 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
1770 template<
typename T, qualifier Q>
1771 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxx(
const glm::vec<4, T, Q> &v) {
1772 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
1776 template<
typename T, qualifier Q>
1777 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxy(
const glm::vec<4, T, Q> &v) {
1778 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
1782 template<
typename T, qualifier Q>
1783 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxz(
const glm::vec<4, T, Q> &v) {
1784 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
1788 template<
typename T, qualifier Q>
1789 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxw(
const glm::vec<4, T, Q> &v) {
1790 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
1794 template<
typename T, qualifier Q>
1795 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyx(
const glm::vec<4, T, Q> &v) {
1796 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
1800 template<
typename T, qualifier Q>
1801 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyy(
const glm::vec<4, T, Q> &v) {
1802 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
1806 template<
typename T, qualifier Q>
1807 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyz(
const glm::vec<4, T, Q> &v) {
1808 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
1812 template<
typename T, qualifier Q>
1813 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyw(
const glm::vec<4, T, Q> &v) {
1814 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
1818 template<
typename T, qualifier Q>
1819 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzx(
const glm::vec<4, T, Q> &v) {
1820 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
1824 template<
typename T, qualifier Q>
1825 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzy(
const glm::vec<4, T, Q> &v) {
1826 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
1830 template<
typename T, qualifier Q>
1831 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzz(
const glm::vec<4, T, Q> &v) {
1832 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
1836 template<
typename T, qualifier Q>
1837 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzw(
const glm::vec<4, T, Q> &v) {
1838 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
1842 template<
typename T, qualifier Q>
1843 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwx(
const glm::vec<4, T, Q> &v) {
1844 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
1848 template<
typename T, qualifier Q>
1849 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwy(
const glm::vec<4, T, Q> &v) {
1850 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
1854 template<
typename T, qualifier Q>
1855 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwz(
const glm::vec<4, T, Q> &v) {
1856 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
1860 template<
typename T, qualifier Q>
1861 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywww(
const glm::vec<4, T, Q> &v) {
1862 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
1866 template<
typename T, qualifier Q>
1867 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(
const glm::vec<3, T, Q> &v) {
1868 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1871 template<
typename T, qualifier Q>
1872 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(
const glm::vec<4, T, Q> &v) {
1873 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
1877 template<
typename T, qualifier Q>
1878 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(
const glm::vec<3, T, Q> &v) {
1879 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1882 template<
typename T, qualifier Q>
1883 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(
const glm::vec<4, T, Q> &v) {
1884 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
1888 template<
typename T, qualifier Q>
1889 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(
const glm::vec<3, T, Q> &v) {
1890 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1893 template<
typename T, qualifier Q>
1894 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(
const glm::vec<4, T, Q> &v) {
1895 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
1899 template<
typename T, qualifier Q>
1900 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxw(
const glm::vec<4, T, Q> &v) {
1901 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
1905 template<
typename T, qualifier Q>
1906 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(
const glm::vec<3, T, Q> &v) {
1907 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1910 template<
typename T, qualifier Q>
1911 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(
const glm::vec<4, T, Q> &v) {
1912 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
1916 template<
typename T, qualifier Q>
1917 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(
const glm::vec<3, T, Q> &v) {
1918 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1921 template<
typename T, qualifier Q>
1922 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(
const glm::vec<4, T, Q> &v) {
1923 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
1927 template<
typename T, qualifier Q>
1928 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(
const glm::vec<3, T, Q> &v) {
1929 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1932 template<
typename T, qualifier Q>
1933 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(
const glm::vec<4, T, Q> &v) {
1934 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
1938 template<
typename T, qualifier Q>
1939 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyw(
const glm::vec<4, T, Q> &v) {
1940 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
1944 template<
typename T, qualifier Q>
1945 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(
const glm::vec<3, T, Q> &v) {
1946 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1949 template<
typename T, qualifier Q>
1950 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(
const glm::vec<4, T, Q> &v) {
1951 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
1955 template<
typename T, qualifier Q>
1956 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(
const glm::vec<3, T, Q> &v) {
1957 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1960 template<
typename T, qualifier Q>
1961 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(
const glm::vec<4, T, Q> &v) {
1962 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
1966 template<
typename T, qualifier Q>
1967 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(
const glm::vec<3, T, Q> &v) {
1968 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1971 template<
typename T, qualifier Q>
1972 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(
const glm::vec<4, T, Q> &v) {
1973 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
1977 template<
typename T, qualifier Q>
1978 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzw(
const glm::vec<4, T, Q> &v) {
1979 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
1983 template<
typename T, qualifier Q>
1984 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwx(
const glm::vec<4, T, Q> &v) {
1985 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
1989 template<
typename T, qualifier Q>
1990 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwy(
const glm::vec<4, T, Q> &v) {
1991 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
1995 template<
typename T, qualifier Q>
1996 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwz(
const glm::vec<4, T, Q> &v) {
1997 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
2001 template<
typename T, qualifier Q>
2002 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxww(
const glm::vec<4, T, Q> &v) {
2003 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
2007 template<
typename T, qualifier Q>
2008 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(
const glm::vec<3, T, Q> &v) {
2009 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2012 template<
typename T, qualifier Q>
2013 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(
const glm::vec<4, T, Q> &v) {
2014 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
2018 template<
typename T, qualifier Q>
2019 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(
const glm::vec<3, T, Q> &v) {
2020 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2023 template<
typename T, qualifier Q>
2024 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(
const glm::vec<4, T, Q> &v) {
2025 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
2029 template<
typename T, qualifier Q>
2030 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(
const glm::vec<3, T, Q> &v) {
2031 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2034 template<
typename T, qualifier Q>
2035 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(
const glm::vec<4, T, Q> &v) {
2036 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
2040 template<
typename T, qualifier Q>
2041 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxw(
const glm::vec<4, T, Q> &v) {
2042 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
2046 template<
typename T, qualifier Q>
2047 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(
const glm::vec<3, T, Q> &v) {
2048 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2051 template<
typename T, qualifier Q>
2052 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(
const glm::vec<4, T, Q> &v) {
2053 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
2057 template<
typename T, qualifier Q>
2058 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(
const glm::vec<3, T, Q> &v) {
2059 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2062 template<
typename T, qualifier Q>
2063 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(
const glm::vec<4, T, Q> &v) {
2064 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
2068 template<
typename T, qualifier Q>
2069 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(
const glm::vec<3, T, Q> &v) {
2070 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2073 template<
typename T, qualifier Q>
2074 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(
const glm::vec<4, T, Q> &v) {
2075 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
2079 template<
typename T, qualifier Q>
2080 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyw(
const glm::vec<4, T, Q> &v) {
2081 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
2085 template<
typename T, qualifier Q>
2086 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(
const glm::vec<3, T, Q> &v) {
2087 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2090 template<
typename T, qualifier Q>
2091 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(
const glm::vec<4, T, Q> &v) {
2092 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
2096 template<
typename T, qualifier Q>
2097 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(
const glm::vec<3, T, Q> &v) {
2098 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2101 template<
typename T, qualifier Q>
2102 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(
const glm::vec<4, T, Q> &v) {
2103 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
2107 template<
typename T, qualifier Q>
2108 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(
const glm::vec<3, T, Q> &v) {
2109 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2112 template<
typename T, qualifier Q>
2113 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(
const glm::vec<4, T, Q> &v) {
2114 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
2118 template<
typename T, qualifier Q>
2119 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzw(
const glm::vec<4, T, Q> &v) {
2120 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
2124 template<
typename T, qualifier Q>
2125 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywx(
const glm::vec<4, T, Q> &v) {
2126 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
2130 template<
typename T, qualifier Q>
2131 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywy(
const glm::vec<4, T, Q> &v) {
2132 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
2136 template<
typename T, qualifier Q>
2137 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywz(
const glm::vec<4, T, Q> &v) {
2138 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
2142 template<
typename T, qualifier Q>
2143 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyww(
const glm::vec<4, T, Q> &v) {
2144 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
2148 template<
typename T, qualifier Q>
2149 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(
const glm::vec<3, T, Q> &v) {
2150 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2153 template<
typename T, qualifier Q>
2154 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(
const glm::vec<4, T, Q> &v) {
2155 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
2159 template<
typename T, qualifier Q>
2160 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(
const glm::vec<3, T, Q> &v) {
2161 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2164 template<
typename T, qualifier Q>
2165 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(
const glm::vec<4, T, Q> &v) {
2166 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
2170 template<
typename T, qualifier Q>
2171 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(
const glm::vec<3, T, Q> &v) {
2172 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2175 template<
typename T, qualifier Q>
2176 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(
const glm::vec<4, T, Q> &v) {
2177 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
2181 template<
typename T, qualifier Q>
2182 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxw(
const glm::vec<4, T, Q> &v) {
2183 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
2187 template<
typename T, qualifier Q>
2188 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(
const glm::vec<3, T, Q> &v) {
2189 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2192 template<
typename T, qualifier Q>
2193 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(
const glm::vec<4, T, Q> &v) {
2194 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
2198 template<
typename T, qualifier Q>
2199 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(
const glm::vec<3, T, Q> &v) {
2200 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2203 template<
typename T, qualifier Q>
2204 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(
const glm::vec<4, T, Q> &v) {
2205 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
2209 template<
typename T, qualifier Q>
2210 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(
const glm::vec<3, T, Q> &v) {
2211 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2214 template<
typename T, qualifier Q>
2215 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(
const glm::vec<4, T, Q> &v) {
2216 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
2220 template<
typename T, qualifier Q>
2221 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyw(
const glm::vec<4, T, Q> &v) {
2222 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
2226 template<
typename T, qualifier Q>
2227 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(
const glm::vec<3, T, Q> &v) {
2228 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2231 template<
typename T, qualifier Q>
2232 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(
const glm::vec<4, T, Q> &v) {
2233 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
2237 template<
typename T, qualifier Q>
2238 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(
const glm::vec<3, T, Q> &v) {
2239 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2242 template<
typename T, qualifier Q>
2243 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(
const glm::vec<4, T, Q> &v) {
2244 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
2248 template<
typename T, qualifier Q>
2249 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(
const glm::vec<3, T, Q> &v) {
2250 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2253 template<
typename T, qualifier Q>
2254 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(
const glm::vec<4, T, Q> &v) {
2255 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
2259 template<
typename T, qualifier Q>
2260 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzw(
const glm::vec<4, T, Q> &v) {
2261 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
2265 template<
typename T, qualifier Q>
2266 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwx(
const glm::vec<4, T, Q> &v) {
2267 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
2271 template<
typename T, qualifier Q>
2272 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwy(
const glm::vec<4, T, Q> &v) {
2273 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
2277 template<
typename T, qualifier Q>
2278 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwz(
const glm::vec<4, T, Q> &v) {
2279 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
2283 template<
typename T, qualifier Q>
2284 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzww(
const glm::vec<4, T, Q> &v) {
2285 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
2289 template<
typename T, qualifier Q>
2290 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxx(
const glm::vec<4, T, Q> &v) {
2291 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
2295 template<
typename T, qualifier Q>
2296 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxy(
const glm::vec<4, T, Q> &v) {
2297 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
2301 template<
typename T, qualifier Q>
2302 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxz(
const glm::vec<4, T, Q> &v) {
2303 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
2307 template<
typename T, qualifier Q>
2308 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxw(
const glm::vec<4, T, Q> &v) {
2309 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
2313 template<
typename T, qualifier Q>
2314 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyx(
const glm::vec<4, T, Q> &v) {
2315 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
2319 template<
typename T, qualifier Q>
2320 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyy(
const glm::vec<4, T, Q> &v) {
2321 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
2325 template<
typename T, qualifier Q>
2326 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyz(
const glm::vec<4, T, Q> &v) {
2327 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
2331 template<
typename T, qualifier Q>
2332 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyw(
const glm::vec<4, T, Q> &v) {
2333 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
2337 template<
typename T, qualifier Q>
2338 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzx(
const glm::vec<4, T, Q> &v) {
2339 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
2343 template<
typename T, qualifier Q>
2344 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzy(
const glm::vec<4, T, Q> &v) {
2345 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
2349 template<
typename T, qualifier Q>
2350 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzz(
const glm::vec<4, T, Q> &v) {
2351 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
2355 template<
typename T, qualifier Q>
2356 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzw(
const glm::vec<4, T, Q> &v) {
2357 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
2361 template<
typename T, qualifier Q>
2362 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwx(
const glm::vec<4, T, Q> &v) {
2363 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
2367 template<
typename T, qualifier Q>
2368 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwy(
const glm::vec<4, T, Q> &v) {
2369 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
2373 template<
typename T, qualifier Q>
2374 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwz(
const glm::vec<4, T, Q> &v) {
2375 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
2379 template<
typename T, qualifier Q>
2380 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwww(
const glm::vec<4, T, Q> &v) {
2381 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
2385 template<
typename T, qualifier Q>
2386 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxx(
const glm::vec<4, T, Q> &v) {
2387 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
2391 template<
typename T, qualifier Q>
2392 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxy(
const glm::vec<4, T, Q> &v) {
2393 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
2397 template<
typename T, qualifier Q>
2398 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxz(
const glm::vec<4, T, Q> &v) {
2399 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
2403 template<
typename T, qualifier Q>
2404 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxw(
const glm::vec<4, T, Q> &v) {
2405 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
2409 template<
typename T, qualifier Q>
2410 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyx(
const glm::vec<4, T, Q> &v) {
2411 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
2415 template<
typename T, qualifier Q>
2416 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyy(
const glm::vec<4, T, Q> &v) {
2417 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
2421 template<
typename T, qualifier Q>
2422 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyz(
const glm::vec<4, T, Q> &v) {
2423 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
2427 template<
typename T, qualifier Q>
2428 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyw(
const glm::vec<4, T, Q> &v) {
2429 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
2433 template<
typename T, qualifier Q>
2434 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzx(
const glm::vec<4, T, Q> &v) {
2435 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
2439 template<
typename T, qualifier Q>
2440 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzy(
const glm::vec<4, T, Q> &v) {
2441 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
2445 template<
typename T, qualifier Q>
2446 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzz(
const glm::vec<4, T, Q> &v) {
2447 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
2451 template<
typename T, qualifier Q>
2452 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzw(
const glm::vec<4, T, Q> &v) {
2453 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
2457 template<
typename T, qualifier Q>
2458 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwx(
const glm::vec<4, T, Q> &v) {
2459 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
2463 template<
typename T, qualifier Q>
2464 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwy(
const glm::vec<4, T, Q> &v) {
2465 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
2469 template<
typename T, qualifier Q>
2470 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwz(
const glm::vec<4, T, Q> &v) {
2471 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
2475 template<
typename T, qualifier Q>
2476 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxww(
const glm::vec<4, T, Q> &v) {
2477 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
2481 template<
typename T, qualifier Q>
2482 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxx(
const glm::vec<4, T, Q> &v) {
2483 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
2487 template<
typename T, qualifier Q>
2488 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxy(
const glm::vec<4, T, Q> &v) {
2489 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
2493 template<
typename T, qualifier Q>
2494 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxz(
const glm::vec<4, T, Q> &v) {
2495 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
2499 template<
typename T, qualifier Q>
2500 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxw(
const glm::vec<4, T, Q> &v) {
2501 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
2505 template<
typename T, qualifier Q>
2506 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyx(
const glm::vec<4, T, Q> &v) {
2507 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
2511 template<
typename T, qualifier Q>
2512 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyy(
const glm::vec<4, T, Q> &v) {
2513 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
2517 template<
typename T, qualifier Q>
2518 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyz(
const glm::vec<4, T, Q> &v) {
2519 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
2523 template<
typename T, qualifier Q>
2524 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyw(
const glm::vec<4, T, Q> &v) {
2525 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
2529 template<
typename T, qualifier Q>
2530 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzx(
const glm::vec<4, T, Q> &v) {
2531 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
2535 template<
typename T, qualifier Q>
2536 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzy(
const glm::vec<4, T, Q> &v) {
2537 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
2541 template<
typename T, qualifier Q>
2542 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzz(
const glm::vec<4, T, Q> &v) {
2543 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
2547 template<
typename T, qualifier Q>
2548 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzw(
const glm::vec<4, T, Q> &v) {
2549 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
2553 template<
typename T, qualifier Q>
2554 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywx(
const glm::vec<4, T, Q> &v) {
2555 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
2559 template<
typename T, qualifier Q>
2560 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywy(
const glm::vec<4, T, Q> &v) {
2561 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
2565 template<
typename T, qualifier Q>
2566 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywz(
const glm::vec<4, T, Q> &v) {
2567 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
2571 template<
typename T, qualifier Q>
2572 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyww(
const glm::vec<4, T, Q> &v) {
2573 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
2577 template<
typename T, qualifier Q>
2578 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxx(
const glm::vec<4, T, Q> &v) {
2579 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
2583 template<
typename T, qualifier Q>
2584 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxy(
const glm::vec<4, T, Q> &v) {
2585 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
2589 template<
typename T, qualifier Q>
2590 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxz(
const glm::vec<4, T, Q> &v) {
2591 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
2595 template<
typename T, qualifier Q>
2596 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxw(
const glm::vec<4, T, Q> &v) {
2597 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
2601 template<
typename T, qualifier Q>
2602 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyx(
const glm::vec<4, T, Q> &v) {
2603 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
2607 template<
typename T, qualifier Q>
2608 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyy(
const glm::vec<4, T, Q> &v) {
2609 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
2613 template<
typename T, qualifier Q>
2614 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyz(
const glm::vec<4, T, Q> &v) {
2615 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
2619 template<
typename T, qualifier Q>
2620 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyw(
const glm::vec<4, T, Q> &v) {
2621 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
2625 template<
typename T, qualifier Q>
2626 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzx(
const glm::vec<4, T, Q> &v) {
2627 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
2631 template<
typename T, qualifier Q>
2632 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzy(
const glm::vec<4, T, Q> &v) {
2633 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
2637 template<
typename T, qualifier Q>
2638 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzz(
const glm::vec<4, T, Q> &v) {
2639 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
2643 template<
typename T, qualifier Q>
2644 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzw(
const glm::vec<4, T, Q> &v) {
2645 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
2649 template<
typename T, qualifier Q>
2650 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwx(
const glm::vec<4, T, Q> &v) {
2651 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
2655 template<
typename T, qualifier Q>
2656 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwy(
const glm::vec<4, T, Q> &v) {
2657 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
2661 template<
typename T, qualifier Q>
2662 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwz(
const glm::vec<4, T, Q> &v) {
2663 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
2667 template<
typename T, qualifier Q>
2668 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzww(
const glm::vec<4, T, Q> &v) {
2669 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
2673 template<
typename T, qualifier Q>
2674 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxx(
const glm::vec<4, T, Q> &v) {
2675 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
2679 template<
typename T, qualifier Q>
2680 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxy(
const glm::vec<4, T, Q> &v) {
2681 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
2685 template<
typename T, qualifier Q>
2686 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxz(
const glm::vec<4, T, Q> &v) {
2687 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
2691 template<
typename T, qualifier Q>
2692 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxw(
const glm::vec<4, T, Q> &v) {
2693 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
2697 template<
typename T, qualifier Q>
2698 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyx(
const glm::vec<4, T, Q> &v) {
2699 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
2703 template<
typename T, qualifier Q>
2704 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyy(
const glm::vec<4, T, Q> &v) {
2705 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
2709 template<
typename T, qualifier Q>
2710 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyz(
const glm::vec<4, T, Q> &v) {
2711 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
2715 template<
typename T, qualifier Q>
2716 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyw(
const glm::vec<4, T, Q> &v) {
2717 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
2721 template<
typename T, qualifier Q>
2722 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzx(
const glm::vec<4, T, Q> &v) {
2723 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
2727 template<
typename T, qualifier Q>
2728 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzy(
const glm::vec<4, T, Q> &v) {
2729 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
2733 template<
typename T, qualifier Q>
2734 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzz(
const glm::vec<4, T, Q> &v) {
2735 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
2739 template<
typename T, qualifier Q>
2740 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzw(
const glm::vec<4, T, Q> &v) {
2741 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
2745 template<
typename T, qualifier Q>
2746 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwx(
const glm::vec<4, T, Q> &v) {
2747 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
2751 template<
typename T, qualifier Q>
2752 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwy(
const glm::vec<4, T, Q> &v) {
2753 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
2757 template<
typename T, qualifier Q>
2758 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwz(
const glm::vec<4, T, Q> &v) {
2759 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
2763 template<
typename T, qualifier Q>
2764 GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwww(
const glm::vec<4, T, Q> &v) {
2765 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);