From 6a45579dbbf991c0e12ce59958e3b533d19fc9d4 Mon Sep 17 00:00:00 2001 From: jjesswan Date: Tue, 7 May 2024 06:02:29 -0400 Subject: rotating skyboxgit add -A --- glm-master/doc/api/a00187_source.html | 2871 +++++++++++++++++++++++++++++++++ 1 file changed, 2871 insertions(+) create mode 100644 glm-master/doc/api/a00187_source.html (limited to 'glm-master/doc/api/a00187_source.html') diff --git a/glm-master/doc/api/a00187_source.html b/glm-master/doc/api/a00187_source.html new file mode 100644 index 0000000..4760447 --- /dev/null +++ b/glm-master/doc/api/a00187_source.html @@ -0,0 +1,2871 @@ + + + + + + +0.9.9 API documentation: vec_swizzle.hpp Source File + + + + + + + + + + +
+
+ + + + + + + +
+
0.9.9 API documentation +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec_swizzle.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../glm.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # pragma message("GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
+
20 # else
+
21 # pragma message("GLM: GLM_GTX_vec_swizzle extension included")
+
22 # endif
+
23 #endif
+
24 
+
25 namespace glm {
+
26  // xx
+
27  template<typename T, qualifier Q>
+
28  GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<1, T, Q> &v) {
+
29  return glm::vec<2, T, Q>(v.x, v.x);
+
30  }
+
31 
+
32  template<typename T, qualifier Q>
+
33  GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<2, T, Q> &v) {
+
34  return glm::vec<2, T, Q>(v.x, v.x);
+
35  }
+
36 
+
37  template<typename T, qualifier Q>
+
38  GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<3, T, Q> &v) {
+
39  return glm::vec<2, T, Q>(v.x, v.x);
+
40  }
+
41 
+
42  template<typename T, qualifier Q>
+
43  GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<4, T, Q> &v) {
+
44  return glm::vec<2, T, Q>(v.x, v.x);
+
45  }
+
46 
+
47  // xy
+
48  template<typename T, qualifier Q>
+
49  GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<2, T, Q> &v) {
+
50  return glm::vec<2, T, Q>(v.x, v.y);
+
51  }
+
52 
+
53  template<typename T, qualifier Q>
+
54  GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<3, T, Q> &v) {
+
55  return glm::vec<2, T, Q>(v.x, v.y);
+
56  }
+
57 
+
58  template<typename T, qualifier Q>
+
59  GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<4, T, Q> &v) {
+
60  return glm::vec<2, T, Q>(v.x, v.y);
+
61  }
+
62 
+
63  // xz
+
64  template<typename T, qualifier Q>
+
65  GLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<3, T, Q> &v) {
+
66  return glm::vec<2, T, Q>(v.x, v.z);
+
67  }
+
68 
+
69  template<typename T, qualifier Q>
+
70  GLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<4, T, Q> &v) {
+
71  return glm::vec<2, T, Q>(v.x, v.z);
+
72  }
+
73 
+
74  // xw
+
75  template<typename T, qualifier Q>
+
76  GLM_INLINE glm::vec<2, T, Q> xw(const glm::vec<4, T, Q> &v) {
+
77  return glm::vec<2, T, Q>(v.x, v.w);
+
78  }
+
79 
+
80  // yx
+
81  template<typename T, qualifier Q>
+
82  GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<2, T, Q> &v) {
+
83  return glm::vec<2, T, Q>(v.y, v.x);
+
84  }
+
85 
+
86  template<typename T, qualifier Q>
+
87  GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<3, T, Q> &v) {
+
88  return glm::vec<2, T, Q>(v.y, v.x);
+
89  }
+
90 
+
91  template<typename T, qualifier Q>
+
92  GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<4, T, Q> &v) {
+
93  return glm::vec<2, T, Q>(v.y, v.x);
+
94  }
+
95 
+
96  // yy
+
97  template<typename T, qualifier Q>
+
98  GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<2, T, Q> &v) {
+
99  return glm::vec<2, T, Q>(v.y, v.y);
+
100  }
+
101 
+
102  template<typename T, qualifier Q>
+
103  GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<3, T, Q> &v) {
+
104  return glm::vec<2, T, Q>(v.y, v.y);
+
105  }
+
106 
+
107  template<typename T, qualifier Q>
+
108  GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<4, T, Q> &v) {
+
109  return glm::vec<2, T, Q>(v.y, v.y);
+
110  }
+
111 
+
112  // yz
+
113  template<typename T, qualifier Q>
+
114  GLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<3, T, Q> &v) {
+
115  return glm::vec<2, T, Q>(v.y, v.z);
+
116  }
+
117 
+
118  template<typename T, qualifier Q>
+
119  GLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<4, T, Q> &v) {
+
120  return glm::vec<2, T, Q>(v.y, v.z);
+
121  }
+
122 
+
123  // yw
+
124  template<typename T, qualifier Q>
+
125  GLM_INLINE glm::vec<2, T, Q> yw(const glm::vec<4, T, Q> &v) {
+
126  return glm::vec<2, T, Q>(v.y, v.w);
+
127  }
+
128 
+
129  // zx
+
130  template<typename T, qualifier Q>
+
131  GLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<3, T, Q> &v) {
+
132  return glm::vec<2, T, Q>(v.z, v.x);
+
133  }
+
134 
+
135  template<typename T, qualifier Q>
+
136  GLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<4, T, Q> &v) {
+
137  return glm::vec<2, T, Q>(v.z, v.x);
+
138  }
+
139 
+
140  // zy
+
141  template<typename T, qualifier Q>
+
142  GLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<3, T, Q> &v) {
+
143  return glm::vec<2, T, Q>(v.z, v.y);
+
144  }
+
145 
+
146  template<typename T, qualifier Q>
+
147  GLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<4, T, Q> &v) {
+
148  return glm::vec<2, T, Q>(v.z, v.y);
+
149  }
+
150 
+
151  // zz
+
152  template<typename T, qualifier Q>
+
153  GLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<3, T, Q> &v) {
+
154  return glm::vec<2, T, Q>(v.z, v.z);
+
155  }
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<4, T, Q> &v) {
+
159  return glm::vec<2, T, Q>(v.z, v.z);
+
160  }
+
161 
+
162  // zw
+
163  template<typename T, qualifier Q>
+
164  GLM_INLINE glm::vec<2, T, Q> zw(const glm::vec<4, T, Q> &v) {
+
165  return glm::vec<2, T, Q>(v.z, v.w);
+
166  }
+
167 
+
168  // wx
+
169  template<typename T, qualifier Q>
+
170  GLM_INLINE glm::vec<2, T, Q> wx(const glm::vec<4, T, Q> &v) {
+
171  return glm::vec<2, T, Q>(v.w, v.x);
+
172  }
+
173 
+
174  // wy
+
175  template<typename T, qualifier Q>
+
176  GLM_INLINE glm::vec<2, T, Q> wy(const glm::vec<4, T, Q> &v) {
+
177  return glm::vec<2, T, Q>(v.w, v.y);
+
178  }
+
179 
+
180  // wz
+
181  template<typename T, qualifier Q>
+
182  GLM_INLINE glm::vec<2, T, Q> wz(const glm::vec<4, T, Q> &v) {
+
183  return glm::vec<2, T, Q>(v.w, v.z);
+
184  }
+
185 
+
186  // ww
+
187  template<typename T, qualifier Q>
+
188  GLM_INLINE glm::vec<2, T, Q> ww(const glm::vec<4, T, Q> &v) {
+
189  return glm::vec<2, T, Q>(v.w, v.w);
+
190  }
+
191 
+
192  // xxx
+
193  template<typename T, qualifier Q>
+
194  GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<1, T, Q> &v) {
+
195  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
196  }
+
197 
+
198  template<typename T, qualifier Q>
+
199  GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<2, T, Q> &v) {
+
200  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
201  }
+
202 
+
203  template<typename T, qualifier Q>
+
204  GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<3, T, Q> &v) {
+
205  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
206  }
+
207 
+
208  template<typename T, qualifier Q>
+
209  GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<4, T, Q> &v) {
+
210  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
211  }
+
212 
+
213  // xxy
+
214  template<typename T, qualifier Q>
+
215  GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<2, T, Q> &v) {
+
216  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
217  }
+
218 
+
219  template<typename T, qualifier Q>
+
220  GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<3, T, Q> &v) {
+
221  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
222  }
+
223 
+
224  template<typename T, qualifier Q>
+
225  GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<4, T, Q> &v) {
+
226  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
227  }
+
228 
+
229  // xxz
+
230  template<typename T, qualifier Q>
+
231  GLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<3, T, Q> &v) {
+
232  return glm::vec<3, T, Q>(v.x, v.x, v.z);
+
233  }
+
234 
+
235  template<typename T, qualifier Q>
+
236  GLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<4, T, Q> &v) {
+
237  return glm::vec<3, T, Q>(v.x, v.x, v.z);
+
238  }
+
239 
+
240  // xxw
+
241  template<typename T, qualifier Q>
+
242  GLM_INLINE glm::vec<3, T, Q> xxw(const glm::vec<4, T, Q> &v) {
+
243  return glm::vec<3, T, Q>(v.x, v.x, v.w);
+
244  }
+
245 
+
246  // xyx
+
247  template<typename T, qualifier Q>
+
248  GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<2, T, Q> &v) {
+
249  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
250  }
+
251 
+
252  template<typename T, qualifier Q>
+
253  GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<3, T, Q> &v) {
+
254  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
255  }
+
256 
+
257  template<typename T, qualifier Q>
+
258  GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<4, T, Q> &v) {
+
259  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
260  }
+
261 
+
262  // xyy
+
263  template<typename T, qualifier Q>
+
264  GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<2, T, Q> &v) {
+
265  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
266  }
+
267 
+
268  template<typename T, qualifier Q>
+
269  GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<3, T, Q> &v) {
+
270  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
271  }
+
272 
+
273  template<typename T, qualifier Q>
+
274  GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<4, T, Q> &v) {
+
275  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
276  }
+
277 
+
278  // xyz
+
279  template<typename T, qualifier Q>
+
280  GLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<3, T, Q> &v) {
+
281  return glm::vec<3, T, Q>(v.x, v.y, v.z);
+
282  }
+
283 
+
284  template<typename T, qualifier Q>
+
285  GLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<4, T, Q> &v) {
+
286  return glm::vec<3, T, Q>(v.x, v.y, v.z);
+
287  }
+
288 
+
289  // xyw
+
290  template<typename T, qualifier Q>
+
291  GLM_INLINE glm::vec<3, T, Q> xyw(const glm::vec<4, T, Q> &v) {
+
292  return glm::vec<3, T, Q>(v.x, v.y, v.w);
+
293  }
+
294 
+
295  // xzx
+
296  template<typename T, qualifier Q>
+
297  GLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<3, T, Q> &v) {
+
298  return glm::vec<3, T, Q>(v.x, v.z, v.x);
+
299  }
+
300 
+
301  template<typename T, qualifier Q>
+
302  GLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<4, T, Q> &v) {
+
303  return glm::vec<3, T, Q>(v.x, v.z, v.x);
+
304  }
+
305 
+
306  // xzy
+
307  template<typename T, qualifier Q>
+
308  GLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<3, T, Q> &v) {
+
309  return glm::vec<3, T, Q>(v.x, v.z, v.y);
+
310  }
+
311 
+
312  template<typename T, qualifier Q>
+
313  GLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<4, T, Q> &v) {
+
314  return glm::vec<3, T, Q>(v.x, v.z, v.y);
+
315  }
+
316 
+
317  // xzz
+
318  template<typename T, qualifier Q>
+
319  GLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<3, T, Q> &v) {
+
320  return glm::vec<3, T, Q>(v.x, v.z, v.z);
+
321  }
+
322 
+
323  template<typename T, qualifier Q>
+
324  GLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<4, T, Q> &v) {
+
325  return glm::vec<3, T, Q>(v.x, v.z, v.z);
+
326  }
+
327 
+
328  // xzw
+
329  template<typename T, qualifier Q>
+
330  GLM_INLINE glm::vec<3, T, Q> xzw(const glm::vec<4, T, Q> &v) {
+
331  return glm::vec<3, T, Q>(v.x, v.z, v.w);
+
332  }
+
333 
+
334  // xwx
+
335  template<typename T, qualifier Q>
+
336  GLM_INLINE glm::vec<3, T, Q> xwx(const glm::vec<4, T, Q> &v) {
+
337  return glm::vec<3, T, Q>(v.x, v.w, v.x);
+
338  }
+
339 
+
340  // xwy
+
341  template<typename T, qualifier Q>
+
342  GLM_INLINE glm::vec<3, T, Q> xwy(const glm::vec<4, T, Q> &v) {
+
343  return glm::vec<3, T, Q>(v.x, v.w, v.y);
+
344  }
+
345 
+
346  // xwz
+
347  template<typename T, qualifier Q>
+
348  GLM_INLINE glm::vec<3, T, Q> xwz(const glm::vec<4, T, Q> &v) {
+
349  return glm::vec<3, T, Q>(v.x, v.w, v.z);
+
350  }
+
351 
+
352  // xww
+
353  template<typename T, qualifier Q>
+
354  GLM_INLINE glm::vec<3, T, Q> xww(const glm::vec<4, T, Q> &v) {
+
355  return glm::vec<3, T, Q>(v.x, v.w, v.w);
+
356  }
+
357 
+
358  // yxx
+
359  template<typename T, qualifier Q>
+
360  GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<2, T, Q> &v) {
+
361  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
362  }
+
363 
+
364  template<typename T, qualifier Q>
+
365  GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<3, T, Q> &v) {
+
366  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
367  }
+
368 
+
369  template<typename T, qualifier Q>
+
370  GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<4, T, Q> &v) {
+
371  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
372  }
+
373 
+
374  // yxy
+
375  template<typename T, qualifier Q>
+
376  GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<2, T, Q> &v) {
+
377  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
378  }
+
379 
+
380  template<typename T, qualifier Q>
+
381  GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<3, T, Q> &v) {
+
382  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
383  }
+
384 
+
385  template<typename T, qualifier Q>
+
386  GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<4, T, Q> &v) {
+
387  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
388  }
+
389 
+
390  // yxz
+
391  template<typename T, qualifier Q>
+
392  GLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<3, T, Q> &v) {
+
393  return glm::vec<3, T, Q>(v.y, v.x, v.z);
+
394  }
+
395 
+
396  template<typename T, qualifier Q>
+
397  GLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<4, T, Q> &v) {
+
398  return glm::vec<3, T, Q>(v.y, v.x, v.z);
+
399  }
+
400 
+
401  // yxw
+
402  template<typename T, qualifier Q>
+
403  GLM_INLINE glm::vec<3, T, Q> yxw(const glm::vec<4, T, Q> &v) {
+
404  return glm::vec<3, T, Q>(v.y, v.x, v.w);
+
405  }
+
406 
+
407  // yyx
+
408  template<typename T, qualifier Q>
+
409  GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<2, T, Q> &v) {
+
410  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
411  }
+
412 
+
413  template<typename T, qualifier Q>
+
414  GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<3, T, Q> &v) {
+
415  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
416  }
+
417 
+
418  template<typename T, qualifier Q>
+
419  GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<4, T, Q> &v) {
+
420  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
421  }
+
422 
+
423  // yyy
+
424  template<typename T, qualifier Q>
+
425  GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<2, T, Q> &v) {
+
426  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
427  }
+
428 
+
429  template<typename T, qualifier Q>
+
430  GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<3, T, Q> &v) {
+
431  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
432  }
+
433 
+
434  template<typename T, qualifier Q>
+
435  GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<4, T, Q> &v) {
+
436  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
437  }
+
438 
+
439  // yyz
+
440  template<typename T, qualifier Q>
+
441  GLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<3, T, Q> &v) {
+
442  return glm::vec<3, T, Q>(v.y, v.y, v.z);
+
443  }
+
444 
+
445  template<typename T, qualifier Q>
+
446  GLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<4, T, Q> &v) {
+
447  return glm::vec<3, T, Q>(v.y, v.y, v.z);
+
448  }
+
449 
+
450  // yyw
+
451  template<typename T, qualifier Q>
+
452  GLM_INLINE glm::vec<3, T, Q> yyw(const glm::vec<4, T, Q> &v) {
+
453  return glm::vec<3, T, Q>(v.y, v.y, v.w);
+
454  }
+
455 
+
456  // yzx
+
457  template<typename T, qualifier Q>
+
458  GLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<3, T, Q> &v) {
+
459  return glm::vec<3, T, Q>(v.y, v.z, v.x);
+
460  }
+
461 
+
462  template<typename T, qualifier Q>
+
463  GLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<4, T, Q> &v) {
+
464  return glm::vec<3, T, Q>(v.y, v.z, v.x);
+
465  }
+
466 
+
467  // yzy
+
468  template<typename T, qualifier Q>
+
469  GLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<3, T, Q> &v) {
+
470  return glm::vec<3, T, Q>(v.y, v.z, v.y);
+
471  }
+
472 
+
473  template<typename T, qualifier Q>
+
474  GLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<4, T, Q> &v) {
+
475  return glm::vec<3, T, Q>(v.y, v.z, v.y);
+
476  }
+
477 
+
478  // yzz
+
479  template<typename T, qualifier Q>
+
480  GLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<3, T, Q> &v) {
+
481  return glm::vec<3, T, Q>(v.y, v.z, v.z);
+
482  }
+
483 
+
484  template<typename T, qualifier Q>
+
485  GLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<4, T, Q> &v) {
+
486  return glm::vec<3, T, Q>(v.y, v.z, v.z);
+
487  }
+
488 
+
489  // yzw
+
490  template<typename T, qualifier Q>
+
491  GLM_INLINE glm::vec<3, T, Q> yzw(const glm::vec<4, T, Q> &v) {
+
492  return glm::vec<3, T, Q>(v.y, v.z, v.w);
+
493  }
+
494 
+
495  // ywx
+
496  template<typename T, qualifier Q>
+
497  GLM_INLINE glm::vec<3, T, Q> ywx(const glm::vec<4, T, Q> &v) {
+
498  return glm::vec<3, T, Q>(v.y, v.w, v.x);
+
499  }
+
500 
+
501  // ywy
+
502  template<typename T, qualifier Q>
+
503  GLM_INLINE glm::vec<3, T, Q> ywy(const glm::vec<4, T, Q> &v) {
+
504  return glm::vec<3, T, Q>(v.y, v.w, v.y);
+
505  }
+
506 
+
507  // ywz
+
508  template<typename T, qualifier Q>
+
509  GLM_INLINE glm::vec<3, T, Q> ywz(const glm::vec<4, T, Q> &v) {
+
510  return glm::vec<3, T, Q>(v.y, v.w, v.z);
+
511  }
+
512 
+
513  // yww
+
514  template<typename T, qualifier Q>
+
515  GLM_INLINE glm::vec<3, T, Q> yww(const glm::vec<4, T, Q> &v) {
+
516  return glm::vec<3, T, Q>(v.y, v.w, v.w);
+
517  }
+
518 
+
519  // zxx
+
520  template<typename T, qualifier Q>
+
521  GLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<3, T, Q> &v) {
+
522  return glm::vec<3, T, Q>(v.z, v.x, v.x);
+
523  }
+
524 
+
525  template<typename T, qualifier Q>
+
526  GLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<4, T, Q> &v) {
+
527  return glm::vec<3, T, Q>(v.z, v.x, v.x);
+
528  }
+
529 
+
530  // zxy
+
531  template<typename T, qualifier Q>
+
532  GLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<3, T, Q> &v) {
+
533  return glm::vec<3, T, Q>(v.z, v.x, v.y);
+
534  }
+
535 
+
536  template<typename T, qualifier Q>
+
537  GLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<4, T, Q> &v) {
+
538  return glm::vec<3, T, Q>(v.z, v.x, v.y);
+
539  }
+
540 
+
541  // zxz
+
542  template<typename T, qualifier Q>
+
543  GLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<3, T, Q> &v) {
+
544  return glm::vec<3, T, Q>(v.z, v.x, v.z);
+
545  }
+
546 
+
547  template<typename T, qualifier Q>
+
548  GLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<4, T, Q> &v) {
+
549  return glm::vec<3, T, Q>(v.z, v.x, v.z);
+
550  }
+
551 
+
552  // zxw
+
553  template<typename T, qualifier Q>
+
554  GLM_INLINE glm::vec<3, T, Q> zxw(const glm::vec<4, T, Q> &v) {
+
555  return glm::vec<3, T, Q>(v.z, v.x, v.w);
+
556  }
+
557 
+
558  // zyx
+
559  template<typename T, qualifier Q>
+
560  GLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<3, T, Q> &v) {
+
561  return glm::vec<3, T, Q>(v.z, v.y, v.x);
+
562  }
+
563 
+
564  template<typename T, qualifier Q>
+
565  GLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<4, T, Q> &v) {
+
566  return glm::vec<3, T, Q>(v.z, v.y, v.x);
+
567  }
+
568 
+
569  // zyy
+
570  template<typename T, qualifier Q>
+
571  GLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<3, T, Q> &v) {
+
572  return glm::vec<3, T, Q>(v.z, v.y, v.y);
+
573  }
+
574 
+
575  template<typename T, qualifier Q>
+
576  GLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<4, T, Q> &v) {
+
577  return glm::vec<3, T, Q>(v.z, v.y, v.y);
+
578  }
+
579 
+
580  // zyz
+
581  template<typename T, qualifier Q>
+
582  GLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<3, T, Q> &v) {
+
583  return glm::vec<3, T, Q>(v.z, v.y, v.z);
+
584  }
+
585 
+
586  template<typename T, qualifier Q>
+
587  GLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<4, T, Q> &v) {
+
588  return glm::vec<3, T, Q>(v.z, v.y, v.z);
+
589  }
+
590 
+
591  // zyw
+
592  template<typename T, qualifier Q>
+
593  GLM_INLINE glm::vec<3, T, Q> zyw(const glm::vec<4, T, Q> &v) {
+
594  return glm::vec<3, T, Q>(v.z, v.y, v.w);
+
595  }
+
596 
+
597  // zzx
+
598  template<typename T, qualifier Q>
+
599  GLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<3, T, Q> &v) {
+
600  return glm::vec<3, T, Q>(v.z, v.z, v.x);
+
601  }
+
602 
+
603  template<typename T, qualifier Q>
+
604  GLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<4, T, Q> &v) {
+
605  return glm::vec<3, T, Q>(v.z, v.z, v.x);
+
606  }
+
607 
+
608  // zzy
+
609  template<typename T, qualifier Q>
+
610  GLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<3, T, Q> &v) {
+
611  return glm::vec<3, T, Q>(v.z, v.z, v.y);
+
612  }
+
613 
+
614  template<typename T, qualifier Q>
+
615  GLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<4, T, Q> &v) {
+
616  return glm::vec<3, T, Q>(v.z, v.z, v.y);
+
617  }
+
618 
+
619  // zzz
+
620  template<typename T, qualifier Q>
+
621  GLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<3, T, Q> &v) {
+
622  return glm::vec<3, T, Q>(v.z, v.z, v.z);
+
623  }
+
624 
+
625  template<typename T, qualifier Q>
+
626  GLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<4, T, Q> &v) {
+
627  return glm::vec<3, T, Q>(v.z, v.z, v.z);
+
628  }
+
629 
+
630  // zzw
+
631  template<typename T, qualifier Q>
+
632  GLM_INLINE glm::vec<3, T, Q> zzw(const glm::vec<4, T, Q> &v) {
+
633  return glm::vec<3, T, Q>(v.z, v.z, v.w);
+
634  }
+
635 
+
636  // zwx
+
637  template<typename T, qualifier Q>
+
638  GLM_INLINE glm::vec<3, T, Q> zwx(const glm::vec<4, T, Q> &v) {
+
639  return glm::vec<3, T, Q>(v.z, v.w, v.x);
+
640  }
+
641 
+
642  // zwy
+
643  template<typename T, qualifier Q>
+
644  GLM_INLINE glm::vec<3, T, Q> zwy(const glm::vec<4, T, Q> &v) {
+
645  return glm::vec<3, T, Q>(v.z, v.w, v.y);
+
646  }
+
647 
+
648  // zwz
+
649  template<typename T, qualifier Q>
+
650  GLM_INLINE glm::vec<3, T, Q> zwz(const glm::vec<4, T, Q> &v) {
+
651  return glm::vec<3, T, Q>(v.z, v.w, v.z);
+
652  }
+
653 
+
654  // zww
+
655  template<typename T, qualifier Q>
+
656  GLM_INLINE glm::vec<3, T, Q> zww(const glm::vec<4, T, Q> &v) {
+
657  return glm::vec<3, T, Q>(v.z, v.w, v.w);
+
658  }
+
659 
+
660  // wxx
+
661  template<typename T, qualifier Q>
+
662  GLM_INLINE glm::vec<3, T, Q> wxx(const glm::vec<4, T, Q> &v) {
+
663  return glm::vec<3, T, Q>(v.w, v.x, v.x);
+
664  }
+
665 
+
666  // wxy
+
667  template<typename T, qualifier Q>
+
668  GLM_INLINE glm::vec<3, T, Q> wxy(const glm::vec<4, T, Q> &v) {
+
669  return glm::vec<3, T, Q>(v.w, v.x, v.y);
+
670  }
+
671 
+
672  // wxz
+
673  template<typename T, qualifier Q>
+
674  GLM_INLINE glm::vec<3, T, Q> wxz(const glm::vec<4, T, Q> &v) {
+
675  return glm::vec<3, T, Q>(v.w, v.x, v.z);
+
676  }
+
677 
+
678  // wxw
+
679  template<typename T, qualifier Q>
+
680  GLM_INLINE glm::vec<3, T, Q> wxw(const glm::vec<4, T, Q> &v) {
+
681  return glm::vec<3, T, Q>(v.w, v.x, v.w);
+
682  }
+
683 
+
684  // wyx
+
685  template<typename T, qualifier Q>
+
686  GLM_INLINE glm::vec<3, T, Q> wyx(const glm::vec<4, T, Q> &v) {
+
687  return glm::vec<3, T, Q>(v.w, v.y, v.x);
+
688  }
+
689 
+
690  // wyy
+
691  template<typename T, qualifier Q>
+
692  GLM_INLINE glm::vec<3, T, Q> wyy(const glm::vec<4, T, Q> &v) {
+
693  return glm::vec<3, T, Q>(v.w, v.y, v.y);
+
694  }
+
695 
+
696  // wyz
+
697  template<typename T, qualifier Q>
+
698  GLM_INLINE glm::vec<3, T, Q> wyz(const glm::vec<4, T, Q> &v) {
+
699  return glm::vec<3, T, Q>(v.w, v.y, v.z);
+
700  }
+
701 
+
702  // wyw
+
703  template<typename T, qualifier Q>
+
704  GLM_INLINE glm::vec<3, T, Q> wyw(const glm::vec<4, T, Q> &v) {
+
705  return glm::vec<3, T, Q>(v.w, v.y, v.w);
+
706  }
+
707 
+
708  // wzx
+
709  template<typename T, qualifier Q>
+
710  GLM_INLINE glm::vec<3, T, Q> wzx(const glm::vec<4, T, Q> &v) {
+
711  return glm::vec<3, T, Q>(v.w, v.z, v.x);
+
712  }
+
713 
+
714  // wzy
+
715  template<typename T, qualifier Q>
+
716  GLM_INLINE glm::vec<3, T, Q> wzy(const glm::vec<4, T, Q> &v) {
+
717  return glm::vec<3, T, Q>(v.w, v.z, v.y);
+
718  }
+
719 
+
720  // wzz
+
721  template<typename T, qualifier Q>
+
722  GLM_INLINE glm::vec<3, T, Q> wzz(const glm::vec<4, T, Q> &v) {
+
723  return glm::vec<3, T, Q>(v.w, v.z, v.z);
+
724  }
+
725 
+
726  // wzw
+
727  template<typename T, qualifier Q>
+
728  GLM_INLINE glm::vec<3, T, Q> wzw(const glm::vec<4, T, Q> &v) {
+
729  return glm::vec<3, T, Q>(v.w, v.z, v.w);
+
730  }
+
731 
+
732  // wwx
+
733  template<typename T, qualifier Q>
+
734  GLM_INLINE glm::vec<3, T, Q> wwx(const glm::vec<4, T, Q> &v) {
+
735  return glm::vec<3, T, Q>(v.w, v.w, v.x);
+
736  }
+
737 
+
738  // wwy
+
739  template<typename T, qualifier Q>
+
740  GLM_INLINE glm::vec<3, T, Q> wwy(const glm::vec<4, T, Q> &v) {
+
741  return glm::vec<3, T, Q>(v.w, v.w, v.y);
+
742  }
+
743 
+
744  // wwz
+
745  template<typename T, qualifier Q>
+
746  GLM_INLINE glm::vec<3, T, Q> wwz(const glm::vec<4, T, Q> &v) {
+
747  return glm::vec<3, T, Q>(v.w, v.w, v.z);
+
748  }
+
749 
+
750  // www
+
751  template<typename T, qualifier Q>
+
752  GLM_INLINE glm::vec<3, T, Q> www(const glm::vec<4, T, Q> &v) {
+
753  return glm::vec<3, T, Q>(v.w, v.w, v.w);
+
754  }
+
755 
+
756  // xxxx
+
757  template<typename T, qualifier Q>
+
758  GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<1, T, Q> &v) {
+
759  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
760  }
+
761 
+
762  template<typename T, qualifier Q>
+
763  GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<2, T, Q> &v) {
+
764  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
765  }
+
766 
+
767  template<typename T, qualifier Q>
+
768  GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<3, T, Q> &v) {
+
769  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
770  }
+
771 
+
772  template<typename T, qualifier Q>
+
773  GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<4, T, Q> &v) {
+
774  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
775  }
+
776 
+
777  // xxxy
+
778  template<typename T, qualifier Q>
+
779  GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<2, T, Q> &v) {
+
780  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
781  }
+
782 
+
783  template<typename T, qualifier Q>
+
784  GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<3, T, Q> &v) {
+
785  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
786  }
+
787 
+
788  template<typename T, qualifier Q>
+
789  GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<4, T, Q> &v) {
+
790  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
791  }
+
792 
+
793  // xxxz
+
794  template<typename T, qualifier Q>
+
795  GLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<3, T, Q> &v) {
+
796  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
+
797  }
+
798 
+
799  template<typename T, qualifier Q>
+
800  GLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<4, T, Q> &v) {
+
801  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
+
802  }
+
803 
+
804  // xxxw
+
805  template<typename T, qualifier Q>
+
806  GLM_INLINE glm::vec<4, T, Q> xxxw(const glm::vec<4, T, Q> &v) {
+
807  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
+
808  }
+
809 
+
810  // xxyx
+
811  template<typename T, qualifier Q>
+
812  GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<2, T, Q> &v) {
+
813  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
814  }
+
815 
+
816  template<typename T, qualifier Q>
+
817  GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<3, T, Q> &v) {
+
818  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
819  }
+
820 
+
821  template<typename T, qualifier Q>
+
822  GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<4, T, Q> &v) {
+
823  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
824  }
+
825 
+
826  // xxyy
+
827  template<typename T, qualifier Q>
+
828  GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<2, T, Q> &v) {
+
829  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
830  }
+
831 
+
832  template<typename T, qualifier Q>
+
833  GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<3, T, Q> &v) {
+
834  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
835  }
+
836 
+
837  template<typename T, qualifier Q>
+
838  GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<4, T, Q> &v) {
+
839  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
840  }
+
841 
+
842  // xxyz
+
843  template<typename T, qualifier Q>
+
844  GLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<3, T, Q> &v) {
+
845  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
+
846  }
+
847 
+
848  template<typename T, qualifier Q>
+
849  GLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<4, T, Q> &v) {
+
850  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
+
851  }
+
852 
+
853  // xxyw
+
854  template<typename T, qualifier Q>
+
855  GLM_INLINE glm::vec<4, T, Q> xxyw(const glm::vec<4, T, Q> &v) {
+
856  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
+
857  }
+
858 
+
859  // xxzx
+
860  template<typename T, qualifier Q>
+
861  GLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<3, T, Q> &v) {
+
862  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
+
863  }
+
864 
+
865  template<typename T, qualifier Q>
+
866  GLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<4, T, Q> &v) {
+
867  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
+
868  }
+
869 
+
870  // xxzy
+
871  template<typename T, qualifier Q>
+
872  GLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<3, T, Q> &v) {
+
873  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
+
874  }
+
875 
+
876  template<typename T, qualifier Q>
+
877  GLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<4, T, Q> &v) {
+
878  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
+
879  }
+
880 
+
881  // xxzz
+
882  template<typename T, qualifier Q>
+
883  GLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<3, T, Q> &v) {
+
884  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
+
885  }
+
886 
+
887  template<typename T, qualifier Q>
+
888  GLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<4, T, Q> &v) {
+
889  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
+
890  }
+
891 
+
892  // xxzw
+
893  template<typename T, qualifier Q>
+
894  GLM_INLINE glm::vec<4, T, Q> xxzw(const glm::vec<4, T, Q> &v) {
+
895  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
+
896  }
+
897 
+
898  // xxwx
+
899  template<typename T, qualifier Q>
+
900  GLM_INLINE glm::vec<4, T, Q> xxwx(const glm::vec<4, T, Q> &v) {
+
901  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
+
902  }
+
903 
+
904  // xxwy
+
905  template<typename T, qualifier Q>
+
906  GLM_INLINE glm::vec<4, T, Q> xxwy(const glm::vec<4, T, Q> &v) {
+
907  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
+
908  }
+
909 
+
910  // xxwz
+
911  template<typename T, qualifier Q>
+
912  GLM_INLINE glm::vec<4, T, Q> xxwz(const glm::vec<4, T, Q> &v) {
+
913  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
+
914  }
+
915 
+
916  // xxww
+
917  template<typename T, qualifier Q>
+
918  GLM_INLINE glm::vec<4, T, Q> xxww(const glm::vec<4, T, Q> &v) {
+
919  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
+
920  }
+
921 
+
922  // xyxx
+
923  template<typename T, qualifier Q>
+
924  GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<2, T, Q> &v) {
+
925  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
926  }
+
927 
+
928  template<typename T, qualifier Q>
+
929  GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<3, T, Q> &v) {
+
930  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
931  }
+
932 
+
933  template<typename T, qualifier Q>
+
934  GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<4, T, Q> &v) {
+
935  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
936  }
+
937 
+
938  // xyxy
+
939  template<typename T, qualifier Q>
+
940  GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<2, T, Q> &v) {
+
941  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
942  }
+
943 
+
944  template<typename T, qualifier Q>
+
945  GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<3, T, Q> &v) {
+
946  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
947  }
+
948 
+
949  template<typename T, qualifier Q>
+
950  GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<4, T, Q> &v) {
+
951  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
952  }
+
953 
+
954  // xyxz
+
955  template<typename T, qualifier Q>
+
956  GLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<3, T, Q> &v) {
+
957  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
+
958  }
+
959 
+
960  template<typename T, qualifier Q>
+
961  GLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<4, T, Q> &v) {
+
962  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
+
963  }
+
964 
+
965  // xyxw
+
966  template<typename T, qualifier Q>
+
967  GLM_INLINE glm::vec<4, T, Q> xyxw(const glm::vec<4, T, Q> &v) {
+
968  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
+
969  }
+
970 
+
971  // xyyx
+
972  template<typename T, qualifier Q>
+
973  GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<2, T, Q> &v) {
+
974  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
975  }
+
976 
+
977  template<typename T, qualifier Q>
+
978  GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<3, T, Q> &v) {
+
979  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
980  }
+
981 
+
982  template<typename T, qualifier Q>
+
983  GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<4, T, Q> &v) {
+
984  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
985  }
+
986 
+
987  // xyyy
+
988  template<typename T, qualifier Q>
+
989  GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<2, T, Q> &v) {
+
990  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
991  }
+
992 
+
993  template<typename T, qualifier Q>
+
994  GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<3, T, Q> &v) {
+
995  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
996  }
+
997 
+
998  template<typename T, qualifier Q>
+
999  GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<4, T, Q> &v) {
+
1000  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
1001  }
+
1002 
+
1003  // xyyz
+
1004  template<typename T, qualifier Q>
+
1005  GLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<3, T, Q> &v) {
+
1006  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
+
1007  }
+
1008 
+
1009  template<typename T, qualifier Q>
+
1010  GLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<4, T, Q> &v) {
+
1011  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
+
1012  }
+
1013 
+
1014  // xyyw
+
1015  template<typename T, qualifier Q>
+
1016  GLM_INLINE glm::vec<4, T, Q> xyyw(const glm::vec<4, T, Q> &v) {
+
1017  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
+
1018  }
+
1019 
+
1020  // xyzx
+
1021  template<typename T, qualifier Q>
+
1022  GLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<3, T, Q> &v) {
+
1023  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
+
1024  }
+
1025 
+
1026  template<typename T, qualifier Q>
+
1027  GLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<4, T, Q> &v) {
+
1028  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
+
1029  }
+
1030 
+
1031  // xyzy
+
1032  template<typename T, qualifier Q>
+
1033  GLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<3, T, Q> &v) {
+
1034  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
+
1035  }
+
1036 
+
1037  template<typename T, qualifier Q>
+
1038  GLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<4, T, Q> &v) {
+
1039  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
+
1040  }
+
1041 
+
1042  // xyzz
+
1043  template<typename T, qualifier Q>
+
1044  GLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<3, T, Q> &v) {
+
1045  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
+
1046  }
+
1047 
+
1048  template<typename T, qualifier Q>
+
1049  GLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<4, T, Q> &v) {
+
1050  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
+
1051  }
+
1052 
+
1053  // xyzw
+
1054  template<typename T, qualifier Q>
+
1055  GLM_INLINE glm::vec<4, T, Q> xyzw(const glm::vec<4, T, Q> &v) {
+
1056  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
+
1057  }
+
1058 
+
1059  // xywx
+
1060  template<typename T, qualifier Q>
+
1061  GLM_INLINE glm::vec<4, T, Q> xywx(const glm::vec<4, T, Q> &v) {
+
1062  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
+
1063  }
+
1064 
+
1065  // xywy
+
1066  template<typename T, qualifier Q>
+
1067  GLM_INLINE glm::vec<4, T, Q> xywy(const glm::vec<4, T, Q> &v) {
+
1068  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
+
1069  }
+
1070 
+
1071  // xywz
+
1072  template<typename T, qualifier Q>
+
1073  GLM_INLINE glm::vec<4, T, Q> xywz(const glm::vec<4, T, Q> &v) {
+
1074  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
+
1075  }
+
1076 
+
1077  // xyww
+
1078  template<typename T, qualifier Q>
+
1079  GLM_INLINE glm::vec<4, T, Q> xyww(const glm::vec<4, T, Q> &v) {
+
1080  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
+
1081  }
+
1082 
+
1083  // xzxx
+
1084  template<typename T, qualifier Q>
+
1085  GLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<3, T, Q> &v) {
+
1086  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
+
1087  }
+
1088 
+
1089  template<typename T, qualifier Q>
+
1090  GLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<4, T, Q> &v) {
+
1091  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
+
1092  }
+
1093 
+
1094  // xzxy
+
1095  template<typename T, qualifier Q>
+
1096  GLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<3, T, Q> &v) {
+
1097  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
+
1098  }
+
1099 
+
1100  template<typename T, qualifier Q>
+
1101  GLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<4, T, Q> &v) {
+
1102  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
+
1103  }
+
1104 
+
1105  // xzxz
+
1106  template<typename T, qualifier Q>
+
1107  GLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<3, T, Q> &v) {
+
1108  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
+
1109  }
+
1110 
+
1111  template<typename T, qualifier Q>
+
1112  GLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<4, T, Q> &v) {
+
1113  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
+
1114  }
+
1115 
+
1116  // xzxw
+
1117  template<typename T, qualifier Q>
+
1118  GLM_INLINE glm::vec<4, T, Q> xzxw(const glm::vec<4, T, Q> &v) {
+
1119  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
+
1120  }
+
1121 
+
1122  // xzyx
+
1123  template<typename T, qualifier Q>
+
1124  GLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<3, T, Q> &v) {
+
1125  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
+
1126  }
+
1127 
+
1128  template<typename T, qualifier Q>
+
1129  GLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<4, T, Q> &v) {
+
1130  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
+
1131  }
+
1132 
+
1133  // xzyy
+
1134  template<typename T, qualifier Q>
+
1135  GLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<3, T, Q> &v) {
+
1136  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
+
1137  }
+
1138 
+
1139  template<typename T, qualifier Q>
+
1140  GLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<4, T, Q> &v) {
+
1141  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
+
1142  }
+
1143 
+
1144  // xzyz
+
1145  template<typename T, qualifier Q>
+
1146  GLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<3, T, Q> &v) {
+
1147  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
+
1148  }
+
1149 
+
1150  template<typename T, qualifier Q>
+
1151  GLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<4, T, Q> &v) {
+
1152  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
+
1153  }
+
1154 
+
1155  // xzyw
+
1156  template<typename T, qualifier Q>
+
1157  GLM_INLINE glm::vec<4, T, Q> xzyw(const glm::vec<4, T, Q> &v) {
+
1158  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
+
1159  }
+
1160 
+
1161  // xzzx
+
1162  template<typename T, qualifier Q>
+
1163  GLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<3, T, Q> &v) {
+
1164  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
+
1165  }
+
1166 
+
1167  template<typename T, qualifier Q>
+
1168  GLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<4, T, Q> &v) {
+
1169  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
+
1170  }
+
1171 
+
1172  // xzzy
+
1173  template<typename T, qualifier Q>
+
1174  GLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<3, T, Q> &v) {
+
1175  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
+
1176  }
+
1177 
+
1178  template<typename T, qualifier Q>
+
1179  GLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<4, T, Q> &v) {
+
1180  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
+
1181  }
+
1182 
+
1183  // xzzz
+
1184  template<typename T, qualifier Q>
+
1185  GLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<3, T, Q> &v) {
+
1186  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
+
1187  }
+
1188 
+
1189  template<typename T, qualifier Q>
+
1190  GLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<4, T, Q> &v) {
+
1191  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
+
1192  }
+
1193 
+
1194  // xzzw
+
1195  template<typename T, qualifier Q>
+
1196  GLM_INLINE glm::vec<4, T, Q> xzzw(const glm::vec<4, T, Q> &v) {
+
1197  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
+
1198  }
+
1199 
+
1200  // xzwx
+
1201  template<typename T, qualifier Q>
+
1202  GLM_INLINE glm::vec<4, T, Q> xzwx(const glm::vec<4, T, Q> &v) {
+
1203  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
+
1204  }
+
1205 
+
1206  // xzwy
+
1207  template<typename T, qualifier Q>
+
1208  GLM_INLINE glm::vec<4, T, Q> xzwy(const glm::vec<4, T, Q> &v) {
+
1209  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
+
1210  }
+
1211 
+
1212  // xzwz
+
1213  template<typename T, qualifier Q>
+
1214  GLM_INLINE glm::vec<4, T, Q> xzwz(const glm::vec<4, T, Q> &v) {
+
1215  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
+
1216  }
+
1217 
+
1218  // xzww
+
1219  template<typename T, qualifier Q>
+
1220  GLM_INLINE glm::vec<4, T, Q> xzww(const glm::vec<4, T, Q> &v) {
+
1221  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
+
1222  }
+
1223 
+
1224  // xwxx
+
1225  template<typename T, qualifier Q>
+
1226  GLM_INLINE glm::vec<4, T, Q> xwxx(const glm::vec<4, T, Q> &v) {
+
1227  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
+
1228  }
+
1229 
+
1230  // xwxy
+
1231  template<typename T, qualifier Q>
+
1232  GLM_INLINE glm::vec<4, T, Q> xwxy(const glm::vec<4, T, Q> &v) {
+
1233  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
+
1234  }
+
1235 
+
1236  // xwxz
+
1237  template<typename T, qualifier Q>
+
1238  GLM_INLINE glm::vec<4, T, Q> xwxz(const glm::vec<4, T, Q> &v) {
+
1239  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
+
1240  }
+
1241 
+
1242  // xwxw
+
1243  template<typename T, qualifier Q>
+
1244  GLM_INLINE glm::vec<4, T, Q> xwxw(const glm::vec<4, T, Q> &v) {
+
1245  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
+
1246  }
+
1247 
+
1248  // xwyx
+
1249  template<typename T, qualifier Q>
+
1250  GLM_INLINE glm::vec<4, T, Q> xwyx(const glm::vec<4, T, Q> &v) {
+
1251  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
+
1252  }
+
1253 
+
1254  // xwyy
+
1255  template<typename T, qualifier Q>
+
1256  GLM_INLINE glm::vec<4, T, Q> xwyy(const glm::vec<4, T, Q> &v) {
+
1257  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
+
1258  }
+
1259 
+
1260  // xwyz
+
1261  template<typename T, qualifier Q>
+
1262  GLM_INLINE glm::vec<4, T, Q> xwyz(const glm::vec<4, T, Q> &v) {
+
1263  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
+
1264  }
+
1265 
+
1266  // xwyw
+
1267  template<typename T, qualifier Q>
+
1268  GLM_INLINE glm::vec<4, T, Q> xwyw(const glm::vec<4, T, Q> &v) {
+
1269  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
+
1270  }
+
1271 
+
1272  // xwzx
+
1273  template<typename T, qualifier Q>
+
1274  GLM_INLINE glm::vec<4, T, Q> xwzx(const glm::vec<4, T, Q> &v) {
+
1275  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
+
1276  }
+
1277 
+
1278  // xwzy
+
1279  template<typename T, qualifier Q>
+
1280  GLM_INLINE glm::vec<4, T, Q> xwzy(const glm::vec<4, T, Q> &v) {
+
1281  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
+
1282  }
+
1283 
+
1284  // xwzz
+
1285  template<typename T, qualifier Q>
+
1286  GLM_INLINE glm::vec<4, T, Q> xwzz(const glm::vec<4, T, Q> &v) {
+
1287  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
+
1288  }
+
1289 
+
1290  // xwzw
+
1291  template<typename T, qualifier Q>
+
1292  GLM_INLINE glm::vec<4, T, Q> xwzw(const glm::vec<4, T, Q> &v) {
+
1293  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
+
1294  }
+
1295 
+
1296  // xwwx
+
1297  template<typename T, qualifier Q>
+
1298  GLM_INLINE glm::vec<4, T, Q> xwwx(const glm::vec<4, T, Q> &v) {
+
1299  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
+
1300  }
+
1301 
+
1302  // xwwy
+
1303  template<typename T, qualifier Q>
+
1304  GLM_INLINE glm::vec<4, T, Q> xwwy(const glm::vec<4, T, Q> &v) {
+
1305  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
+
1306  }
+
1307 
+
1308  // xwwz
+
1309  template<typename T, qualifier Q>
+
1310  GLM_INLINE glm::vec<4, T, Q> xwwz(const glm::vec<4, T, Q> &v) {
+
1311  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
+
1312  }
+
1313 
+
1314  // xwww
+
1315  template<typename T, qualifier Q>
+
1316  GLM_INLINE glm::vec<4, T, Q> xwww(const glm::vec<4, T, Q> &v) {
+
1317  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
+
1318  }
+
1319 
+
1320  // yxxx
+
1321  template<typename T, qualifier Q>
+
1322  GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<2, T, Q> &v) {
+
1323  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1324  }
+
1325 
+
1326  template<typename T, qualifier Q>
+
1327  GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<3, T, Q> &v) {
+
1328  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1329  }
+
1330 
+
1331  template<typename T, qualifier Q>
+
1332  GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<4, T, Q> &v) {
+
1333  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1334  }
+
1335 
+
1336  // yxxy
+
1337  template<typename T, qualifier Q>
+
1338  GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<2, T, Q> &v) {
+
1339  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1340  }
+
1341 
+
1342  template<typename T, qualifier Q>
+
1343  GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<3, T, Q> &v) {
+
1344  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1345  }
+
1346 
+
1347  template<typename T, qualifier Q>
+
1348  GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<4, T, Q> &v) {
+
1349  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1350  }
+
1351 
+
1352  // yxxz
+
1353  template<typename T, qualifier Q>
+
1354  GLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<3, T, Q> &v) {
+
1355  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
+
1356  }
+
1357 
+
1358  template<typename T, qualifier Q>
+
1359  GLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<4, T, Q> &v) {
+
1360  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
+
1361  }
+
1362 
+
1363  // yxxw
+
1364  template<typename T, qualifier Q>
+
1365  GLM_INLINE glm::vec<4, T, Q> yxxw(const glm::vec<4, T, Q> &v) {
+
1366  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
+
1367  }
+
1368 
+
1369  // yxyx
+
1370  template<typename T, qualifier Q>
+
1371  GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<2, T, Q> &v) {
+
1372  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1373  }
+
1374 
+
1375  template<typename T, qualifier Q>
+
1376  GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<3, T, Q> &v) {
+
1377  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1378  }
+
1379 
+
1380  template<typename T, qualifier Q>
+
1381  GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<4, T, Q> &v) {
+
1382  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1383  }
+
1384 
+
1385  // yxyy
+
1386  template<typename T, qualifier Q>
+
1387  GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<2, T, Q> &v) {
+
1388  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1389  }
+
1390 
+
1391  template<typename T, qualifier Q>
+
1392  GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<3, T, Q> &v) {
+
1393  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1394  }
+
1395 
+
1396  template<typename T, qualifier Q>
+
1397  GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<4, T, Q> &v) {
+
1398  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1399  }
+
1400 
+
1401  // yxyz
+
1402  template<typename T, qualifier Q>
+
1403  GLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<3, T, Q> &v) {
+
1404  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
+
1405  }
+
1406 
+
1407  template<typename T, qualifier Q>
+
1408  GLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<4, T, Q> &v) {
+
1409  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
+
1410  }
+
1411 
+
1412  // yxyw
+
1413  template<typename T, qualifier Q>
+
1414  GLM_INLINE glm::vec<4, T, Q> yxyw(const glm::vec<4, T, Q> &v) {
+
1415  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
+
1416  }
+
1417 
+
1418  // yxzx
+
1419  template<typename T, qualifier Q>
+
1420  GLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<3, T, Q> &v) {
+
1421  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
+
1422  }
+
1423 
+
1424  template<typename T, qualifier Q>
+
1425  GLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<4, T, Q> &v) {
+
1426  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
+
1427  }
+
1428 
+
1429  // yxzy
+
1430  template<typename T, qualifier Q>
+
1431  GLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<3, T, Q> &v) {
+
1432  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
+
1433  }
+
1434 
+
1435  template<typename T, qualifier Q>
+
1436  GLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<4, T, Q> &v) {
+
1437  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
+
1438  }
+
1439 
+
1440  // yxzz
+
1441  template<typename T, qualifier Q>
+
1442  GLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<3, T, Q> &v) {
+
1443  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
+
1444  }
+
1445 
+
1446  template<typename T, qualifier Q>
+
1447  GLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<4, T, Q> &v) {
+
1448  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
+
1449  }
+
1450 
+
1451  // yxzw
+
1452  template<typename T, qualifier Q>
+
1453  GLM_INLINE glm::vec<4, T, Q> yxzw(const glm::vec<4, T, Q> &v) {
+
1454  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
+
1455  }
+
1456 
+
1457  // yxwx
+
1458  template<typename T, qualifier Q>
+
1459  GLM_INLINE glm::vec<4, T, Q> yxwx(const glm::vec<4, T, Q> &v) {
+
1460  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
+
1461  }
+
1462 
+
1463  // yxwy
+
1464  template<typename T, qualifier Q>
+
1465  GLM_INLINE glm::vec<4, T, Q> yxwy(const glm::vec<4, T, Q> &v) {
+
1466  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
+
1467  }
+
1468 
+
1469  // yxwz
+
1470  template<typename T, qualifier Q>
+
1471  GLM_INLINE glm::vec<4, T, Q> yxwz(const glm::vec<4, T, Q> &v) {
+
1472  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
+
1473  }
+
1474 
+
1475  // yxww
+
1476  template<typename T, qualifier Q>
+
1477  GLM_INLINE glm::vec<4, T, Q> yxww(const glm::vec<4, T, Q> &v) {
+
1478  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
+
1479  }
+
1480 
+
1481  // yyxx
+
1482  template<typename T, qualifier Q>
+
1483  GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<2, T, Q> &v) {
+
1484  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1485  }
+
1486 
+
1487  template<typename T, qualifier Q>
+
1488  GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<3, T, Q> &v) {
+
1489  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1490  }
+
1491 
+
1492  template<typename T, qualifier Q>
+
1493  GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<4, T, Q> &v) {
+
1494  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1495  }
+
1496 
+
1497  // yyxy
+
1498  template<typename T, qualifier Q>
+
1499  GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<2, T, Q> &v) {
+
1500  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1501  }
+
1502 
+
1503  template<typename T, qualifier Q>
+
1504  GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<3, T, Q> &v) {
+
1505  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1506  }
+
1507 
+
1508  template<typename T, qualifier Q>
+
1509  GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<4, T, Q> &v) {
+
1510  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1511  }
+
1512 
+
1513  // yyxz
+
1514  template<typename T, qualifier Q>
+
1515  GLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<3, T, Q> &v) {
+
1516  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
+
1517  }
+
1518 
+
1519  template<typename T, qualifier Q>
+
1520  GLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<4, T, Q> &v) {
+
1521  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
+
1522  }
+
1523 
+
1524  // yyxw
+
1525  template<typename T, qualifier Q>
+
1526  GLM_INLINE glm::vec<4, T, Q> yyxw(const glm::vec<4, T, Q> &v) {
+
1527  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
+
1528  }
+
1529 
+
1530  // yyyx
+
1531  template<typename T, qualifier Q>
+
1532  GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<2, T, Q> &v) {
+
1533  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1534  }
+
1535 
+
1536  template<typename T, qualifier Q>
+
1537  GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<3, T, Q> &v) {
+
1538  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1539  }
+
1540 
+
1541  template<typename T, qualifier Q>
+
1542  GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<4, T, Q> &v) {
+
1543  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1544  }
+
1545 
+
1546  // yyyy
+
1547  template<typename T, qualifier Q>
+
1548  GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<2, T, Q> &v) {
+
1549  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1550  }
+
1551 
+
1552  template<typename T, qualifier Q>
+
1553  GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<3, T, Q> &v) {
+
1554  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1555  }
+
1556 
+
1557  template<typename T, qualifier Q>
+
1558  GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<4, T, Q> &v) {
+
1559  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1560  }
+
1561 
+
1562  // yyyz
+
1563  template<typename T, qualifier Q>
+
1564  GLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<3, T, Q> &v) {
+
1565  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
+
1566  }
+
1567 
+
1568  template<typename T, qualifier Q>
+
1569  GLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<4, T, Q> &v) {
+
1570  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
+
1571  }
+
1572 
+
1573  // yyyw
+
1574  template<typename T, qualifier Q>
+
1575  GLM_INLINE glm::vec<4, T, Q> yyyw(const glm::vec<4, T, Q> &v) {
+
1576  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
+
1577  }
+
1578 
+
1579  // yyzx
+
1580  template<typename T, qualifier Q>
+
1581  GLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<3, T, Q> &v) {
+
1582  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
+
1583  }
+
1584 
+
1585  template<typename T, qualifier Q>
+
1586  GLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<4, T, Q> &v) {
+
1587  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
+
1588  }
+
1589 
+
1590  // yyzy
+
1591  template<typename T, qualifier Q>
+
1592  GLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<3, T, Q> &v) {
+
1593  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
+
1594  }
+
1595 
+
1596  template<typename T, qualifier Q>
+
1597  GLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<4, T, Q> &v) {
+
1598  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
+
1599  }
+
1600 
+
1601  // yyzz
+
1602  template<typename T, qualifier Q>
+
1603  GLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<3, T, Q> &v) {
+
1604  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
+
1605  }
+
1606 
+
1607  template<typename T, qualifier Q>
+
1608  GLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<4, T, Q> &v) {
+
1609  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
+
1610  }
+
1611 
+
1612  // yyzw
+
1613  template<typename T, qualifier Q>
+
1614  GLM_INLINE glm::vec<4, T, Q> yyzw(const glm::vec<4, T, Q> &v) {
+
1615  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
+
1616  }
+
1617 
+
1618  // yywx
+
1619  template<typename T, qualifier Q>
+
1620  GLM_INLINE glm::vec<4, T, Q> yywx(const glm::vec<4, T, Q> &v) {
+
1621  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
+
1622  }
+
1623 
+
1624  // yywy
+
1625  template<typename T, qualifier Q>
+
1626  GLM_INLINE glm::vec<4, T, Q> yywy(const glm::vec<4, T, Q> &v) {
+
1627  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
+
1628  }
+
1629 
+
1630  // yywz
+
1631  template<typename T, qualifier Q>
+
1632  GLM_INLINE glm::vec<4, T, Q> yywz(const glm::vec<4, T, Q> &v) {
+
1633  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
+
1634  }
+
1635 
+
1636  // yyww
+
1637  template<typename T, qualifier Q>
+
1638  GLM_INLINE glm::vec<4, T, Q> yyww(const glm::vec<4, T, Q> &v) {
+
1639  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
+
1640  }
+
1641 
+
1642  // yzxx
+
1643  template<typename T, qualifier Q>
+
1644  GLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<3, T, Q> &v) {
+
1645  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
+
1646  }
+
1647 
+
1648  template<typename T, qualifier Q>
+
1649  GLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<4, T, Q> &v) {
+
1650  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
+
1651  }
+
1652 
+
1653  // yzxy
+
1654  template<typename T, qualifier Q>
+
1655  GLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<3, T, Q> &v) {
+
1656  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
+
1657  }
+
1658 
+
1659  template<typename T, qualifier Q>
+
1660  GLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<4, T, Q> &v) {
+
1661  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
+
1662  }
+
1663 
+
1664  // yzxz
+
1665  template<typename T, qualifier Q>
+
1666  GLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<3, T, Q> &v) {
+
1667  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
+
1668  }
+
1669 
+
1670  template<typename T, qualifier Q>
+
1671  GLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<4, T, Q> &v) {
+
1672  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
+
1673  }
+
1674 
+
1675  // yzxw
+
1676  template<typename T, qualifier Q>
+
1677  GLM_INLINE glm::vec<4, T, Q> yzxw(const glm::vec<4, T, Q> &v) {
+
1678  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
+
1679  }
+
1680 
+
1681  // yzyx
+
1682  template<typename T, qualifier Q>
+
1683  GLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<3, T, Q> &v) {
+
1684  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
+
1685  }
+
1686 
+
1687  template<typename T, qualifier Q>
+
1688  GLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<4, T, Q> &v) {
+
1689  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
+
1690  }
+
1691 
+
1692  // yzyy
+
1693  template<typename T, qualifier Q>
+
1694  GLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<3, T, Q> &v) {
+
1695  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
+
1696  }
+
1697 
+
1698  template<typename T, qualifier Q>
+
1699  GLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<4, T, Q> &v) {
+
1700  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
+
1701  }
+
1702 
+
1703  // yzyz
+
1704  template<typename T, qualifier Q>
+
1705  GLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<3, T, Q> &v) {
+
1706  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
+
1707  }
+
1708 
+
1709  template<typename T, qualifier Q>
+
1710  GLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<4, T, Q> &v) {
+
1711  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
+
1712  }
+
1713 
+
1714  // yzyw
+
1715  template<typename T, qualifier Q>
+
1716  GLM_INLINE glm::vec<4, T, Q> yzyw(const glm::vec<4, T, Q> &v) {
+
1717  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
+
1718  }
+
1719 
+
1720  // yzzx
+
1721  template<typename T, qualifier Q>
+
1722  GLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<3, T, Q> &v) {
+
1723  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
+
1724  }
+
1725 
+
1726  template<typename T, qualifier Q>
+
1727  GLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<4, T, Q> &v) {
+
1728  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
+
1729  }
+
1730 
+
1731  // yzzy
+
1732  template<typename T, qualifier Q>
+
1733  GLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<3, T, Q> &v) {
+
1734  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
+
1735  }
+
1736 
+
1737  template<typename T, qualifier Q>
+
1738  GLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<4, T, Q> &v) {
+
1739  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
+
1740  }
+
1741 
+
1742  // yzzz
+
1743  template<typename T, qualifier Q>
+
1744  GLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<3, T, Q> &v) {
+
1745  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
+
1746  }
+
1747 
+
1748  template<typename T, qualifier Q>
+
1749  GLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<4, T, Q> &v) {
+
1750  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
+
1751  }
+
1752 
+
1753  // yzzw
+
1754  template<typename T, qualifier Q>
+
1755  GLM_INLINE glm::vec<4, T, Q> yzzw(const glm::vec<4, T, Q> &v) {
+
1756  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
+
1757  }
+
1758 
+
1759  // yzwx
+
1760  template<typename T, qualifier Q>
+
1761  GLM_INLINE glm::vec<4, T, Q> yzwx(const glm::vec<4, T, Q> &v) {
+
1762  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
+
1763  }
+
1764 
+
1765  // yzwy
+
1766  template<typename T, qualifier Q>
+
1767  GLM_INLINE glm::vec<4, T, Q> yzwy(const glm::vec<4, T, Q> &v) {
+
1768  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
+
1769  }
+
1770 
+
1771  // yzwz
+
1772  template<typename T, qualifier Q>
+
1773  GLM_INLINE glm::vec<4, T, Q> yzwz(const glm::vec<4, T, Q> &v) {
+
1774  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
+
1775  }
+
1776 
+
1777  // yzww
+
1778  template<typename T, qualifier Q>
+
1779  GLM_INLINE glm::vec<4, T, Q> yzww(const glm::vec<4, T, Q> &v) {
+
1780  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
+
1781  }
+
1782 
+
1783  // ywxx
+
1784  template<typename T, qualifier Q>
+
1785  GLM_INLINE glm::vec<4, T, Q> ywxx(const glm::vec<4, T, Q> &v) {
+
1786  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
+
1787  }
+
1788 
+
1789  // ywxy
+
1790  template<typename T, qualifier Q>
+
1791  GLM_INLINE glm::vec<4, T, Q> ywxy(const glm::vec<4, T, Q> &v) {
+
1792  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
+
1793  }
+
1794 
+
1795  // ywxz
+
1796  template<typename T, qualifier Q>
+
1797  GLM_INLINE glm::vec<4, T, Q> ywxz(const glm::vec<4, T, Q> &v) {
+
1798  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
+
1799  }
+
1800 
+
1801  // ywxw
+
1802  template<typename T, qualifier Q>
+
1803  GLM_INLINE glm::vec<4, T, Q> ywxw(const glm::vec<4, T, Q> &v) {
+
1804  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
+
1805  }
+
1806 
+
1807  // ywyx
+
1808  template<typename T, qualifier Q>
+
1809  GLM_INLINE glm::vec<4, T, Q> ywyx(const glm::vec<4, T, Q> &v) {
+
1810  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
+
1811  }
+
1812 
+
1813  // ywyy
+
1814  template<typename T, qualifier Q>
+
1815  GLM_INLINE glm::vec<4, T, Q> ywyy(const glm::vec<4, T, Q> &v) {
+
1816  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
+
1817  }
+
1818 
+
1819  // ywyz
+
1820  template<typename T, qualifier Q>
+
1821  GLM_INLINE glm::vec<4, T, Q> ywyz(const glm::vec<4, T, Q> &v) {
+
1822  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
+
1823  }
+
1824 
+
1825  // ywyw
+
1826  template<typename T, qualifier Q>
+
1827  GLM_INLINE glm::vec<4, T, Q> ywyw(const glm::vec<4, T, Q> &v) {
+
1828  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
+
1829  }
+
1830 
+
1831  // ywzx
+
1832  template<typename T, qualifier Q>
+
1833  GLM_INLINE glm::vec<4, T, Q> ywzx(const glm::vec<4, T, Q> &v) {
+
1834  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
+
1835  }
+
1836 
+
1837  // ywzy
+
1838  template<typename T, qualifier Q>
+
1839  GLM_INLINE glm::vec<4, T, Q> ywzy(const glm::vec<4, T, Q> &v) {
+
1840  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
+
1841  }
+
1842 
+
1843  // ywzz
+
1844  template<typename T, qualifier Q>
+
1845  GLM_INLINE glm::vec<4, T, Q> ywzz(const glm::vec<4, T, Q> &v) {
+
1846  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
+
1847  }
+
1848 
+
1849  // ywzw
+
1850  template<typename T, qualifier Q>
+
1851  GLM_INLINE glm::vec<4, T, Q> ywzw(const glm::vec<4, T, Q> &v) {
+
1852  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
+
1853  }
+
1854 
+
1855  // ywwx
+
1856  template<typename T, qualifier Q>
+
1857  GLM_INLINE glm::vec<4, T, Q> ywwx(const glm::vec<4, T, Q> &v) {
+
1858  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
+
1859  }
+
1860 
+
1861  // ywwy
+
1862  template<typename T, qualifier Q>
+
1863  GLM_INLINE glm::vec<4, T, Q> ywwy(const glm::vec<4, T, Q> &v) {
+
1864  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
+
1865  }
+
1866 
+
1867  // ywwz
+
1868  template<typename T, qualifier Q>
+
1869  GLM_INLINE glm::vec<4, T, Q> ywwz(const glm::vec<4, T, Q> &v) {
+
1870  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
+
1871  }
+
1872 
+
1873  // ywww
+
1874  template<typename T, qualifier Q>
+
1875  GLM_INLINE glm::vec<4, T, Q> ywww(const glm::vec<4, T, Q> &v) {
+
1876  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
+
1877  }
+
1878 
+
1879  // zxxx
+
1880  template<typename T, qualifier Q>
+
1881  GLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<3, T, Q> &v) {
+
1882  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
+
1883  }
+
1884 
+
1885  template<typename T, qualifier Q>
+
1886  GLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<4, T, Q> &v) {
+
1887  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
+
1888  }
+
1889 
+
1890  // zxxy
+
1891  template<typename T, qualifier Q>
+
1892  GLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<3, T, Q> &v) {
+
1893  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
+
1894  }
+
1895 
+
1896  template<typename T, qualifier Q>
+
1897  GLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<4, T, Q> &v) {
+
1898  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
+
1899  }
+
1900 
+
1901  // zxxz
+
1902  template<typename T, qualifier Q>
+
1903  GLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<3, T, Q> &v) {
+
1904  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
+
1905  }
+
1906 
+
1907  template<typename T, qualifier Q>
+
1908  GLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<4, T, Q> &v) {
+
1909  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
+
1910  }
+
1911 
+
1912  // zxxw
+
1913  template<typename T, qualifier Q>
+
1914  GLM_INLINE glm::vec<4, T, Q> zxxw(const glm::vec<4, T, Q> &v) {
+
1915  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
+
1916  }
+
1917 
+
1918  // zxyx
+
1919  template<typename T, qualifier Q>
+
1920  GLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<3, T, Q> &v) {
+
1921  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
+
1922  }
+
1923 
+
1924  template<typename T, qualifier Q>
+
1925  GLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<4, T, Q> &v) {
+
1926  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
+
1927  }
+
1928 
+
1929  // zxyy
+
1930  template<typename T, qualifier Q>
+
1931  GLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<3, T, Q> &v) {
+
1932  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
+
1933  }
+
1934 
+
1935  template<typename T, qualifier Q>
+
1936  GLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<4, T, Q> &v) {
+
1937  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
+
1938  }
+
1939 
+
1940  // zxyz
+
1941  template<typename T, qualifier Q>
+
1942  GLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<3, T, Q> &v) {
+
1943  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
+
1944  }
+
1945 
+
1946  template<typename T, qualifier Q>
+
1947  GLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<4, T, Q> &v) {
+
1948  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
+
1949  }
+
1950 
+
1951  // zxyw
+
1952  template<typename T, qualifier Q>
+
1953  GLM_INLINE glm::vec<4, T, Q> zxyw(const glm::vec<4, T, Q> &v) {
+
1954  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
+
1955  }
+
1956 
+
1957  // zxzx
+
1958  template<typename T, qualifier Q>
+
1959  GLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<3, T, Q> &v) {
+
1960  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
+
1961  }
+
1962 
+
1963  template<typename T, qualifier Q>
+
1964  GLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<4, T, Q> &v) {
+
1965  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
+
1966  }
+
1967 
+
1968  // zxzy
+
1969  template<typename T, qualifier Q>
+
1970  GLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<3, T, Q> &v) {
+
1971  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
+
1972  }
+
1973 
+
1974  template<typename T, qualifier Q>
+
1975  GLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<4, T, Q> &v) {
+
1976  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
+
1977  }
+
1978 
+
1979  // zxzz
+
1980  template<typename T, qualifier Q>
+
1981  GLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<3, T, Q> &v) {
+
1982  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
+
1983  }
+
1984 
+
1985  template<typename T, qualifier Q>
+
1986  GLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<4, T, Q> &v) {
+
1987  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
+
1988  }
+
1989 
+
1990  // zxzw
+
1991  template<typename T, qualifier Q>
+
1992  GLM_INLINE glm::vec<4, T, Q> zxzw(const glm::vec<4, T, Q> &v) {
+
1993  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
+
1994  }
+
1995 
+
1996  // zxwx
+
1997  template<typename T, qualifier Q>
+
1998  GLM_INLINE glm::vec<4, T, Q> zxwx(const glm::vec<4, T, Q> &v) {
+
1999  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
+
2000  }
+
2001 
+
2002  // zxwy
+
2003  template<typename T, qualifier Q>
+
2004  GLM_INLINE glm::vec<4, T, Q> zxwy(const glm::vec<4, T, Q> &v) {
+
2005  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
+
2006  }
+
2007 
+
2008  // zxwz
+
2009  template<typename T, qualifier Q>
+
2010  GLM_INLINE glm::vec<4, T, Q> zxwz(const glm::vec<4, T, Q> &v) {
+
2011  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
+
2012  }
+
2013 
+
2014  // zxww
+
2015  template<typename T, qualifier Q>
+
2016  GLM_INLINE glm::vec<4, T, Q> zxww(const glm::vec<4, T, Q> &v) {
+
2017  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
+
2018  }
+
2019 
+
2020  // zyxx
+
2021  template<typename T, qualifier Q>
+
2022  GLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<3, T, Q> &v) {
+
2023  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
+
2024  }
+
2025 
+
2026  template<typename T, qualifier Q>
+
2027  GLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<4, T, Q> &v) {
+
2028  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
+
2029  }
+
2030 
+
2031  // zyxy
+
2032  template<typename T, qualifier Q>
+
2033  GLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<3, T, Q> &v) {
+
2034  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
+
2035  }
+
2036 
+
2037  template<typename T, qualifier Q>
+
2038  GLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<4, T, Q> &v) {
+
2039  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
+
2040  }
+
2041 
+
2042  // zyxz
+
2043  template<typename T, qualifier Q>
+
2044  GLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<3, T, Q> &v) {
+
2045  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
+
2046  }
+
2047 
+
2048  template<typename T, qualifier Q>
+
2049  GLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<4, T, Q> &v) {
+
2050  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
+
2051  }
+
2052 
+
2053  // zyxw
+
2054  template<typename T, qualifier Q>
+
2055  GLM_INLINE glm::vec<4, T, Q> zyxw(const glm::vec<4, T, Q> &v) {
+
2056  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
+
2057  }
+
2058 
+
2059  // zyyx
+
2060  template<typename T, qualifier Q>
+
2061  GLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<3, T, Q> &v) {
+
2062  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
+
2063  }
+
2064 
+
2065  template<typename T, qualifier Q>
+
2066  GLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<4, T, Q> &v) {
+
2067  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
+
2068  }
+
2069 
+
2070  // zyyy
+
2071  template<typename T, qualifier Q>
+
2072  GLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<3, T, Q> &v) {
+
2073  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
+
2074  }
+
2075 
+
2076  template<typename T, qualifier Q>
+
2077  GLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<4, T, Q> &v) {
+
2078  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
+
2079  }
+
2080 
+
2081  // zyyz
+
2082  template<typename T, qualifier Q>
+
2083  GLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<3, T, Q> &v) {
+
2084  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
+
2085  }
+
2086 
+
2087  template<typename T, qualifier Q>
+
2088  GLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<4, T, Q> &v) {
+
2089  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
+
2090  }
+
2091 
+
2092  // zyyw
+
2093  template<typename T, qualifier Q>
+
2094  GLM_INLINE glm::vec<4, T, Q> zyyw(const glm::vec<4, T, Q> &v) {
+
2095  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
+
2096  }
+
2097 
+
2098  // zyzx
+
2099  template<typename T, qualifier Q>
+
2100  GLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<3, T, Q> &v) {
+
2101  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
+
2102  }
+
2103 
+
2104  template<typename T, qualifier Q>
+
2105  GLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<4, T, Q> &v) {
+
2106  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
+
2107  }
+
2108 
+
2109  // zyzy
+
2110  template<typename T, qualifier Q>
+
2111  GLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<3, T, Q> &v) {
+
2112  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
+
2113  }
+
2114 
+
2115  template<typename T, qualifier Q>
+
2116  GLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<4, T, Q> &v) {
+
2117  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
+
2118  }
+
2119 
+
2120  // zyzz
+
2121  template<typename T, qualifier Q>
+
2122  GLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<3, T, Q> &v) {
+
2123  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
+
2124  }
+
2125 
+
2126  template<typename T, qualifier Q>
+
2127  GLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<4, T, Q> &v) {
+
2128  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
+
2129  }
+
2130 
+
2131  // zyzw
+
2132  template<typename T, qualifier Q>
+
2133  GLM_INLINE glm::vec<4, T, Q> zyzw(const glm::vec<4, T, Q> &v) {
+
2134  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
+
2135  }
+
2136 
+
2137  // zywx
+
2138  template<typename T, qualifier Q>
+
2139  GLM_INLINE glm::vec<4, T, Q> zywx(const glm::vec<4, T, Q> &v) {
+
2140  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
+
2141  }
+
2142 
+
2143  // zywy
+
2144  template<typename T, qualifier Q>
+
2145  GLM_INLINE glm::vec<4, T, Q> zywy(const glm::vec<4, T, Q> &v) {
+
2146  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
+
2147  }
+
2148 
+
2149  // zywz
+
2150  template<typename T, qualifier Q>
+
2151  GLM_INLINE glm::vec<4, T, Q> zywz(const glm::vec<4, T, Q> &v) {
+
2152  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
+
2153  }
+
2154 
+
2155  // zyww
+
2156  template<typename T, qualifier Q>
+
2157  GLM_INLINE glm::vec<4, T, Q> zyww(const glm::vec<4, T, Q> &v) {
+
2158  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
+
2159  }
+
2160 
+
2161  // zzxx
+
2162  template<typename T, qualifier Q>
+
2163  GLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<3, T, Q> &v) {
+
2164  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
+
2165  }
+
2166 
+
2167  template<typename T, qualifier Q>
+
2168  GLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<4, T, Q> &v) {
+
2169  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
+
2170  }
+
2171 
+
2172  // zzxy
+
2173  template<typename T, qualifier Q>
+
2174  GLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<3, T, Q> &v) {
+
2175  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
+
2176  }
+
2177 
+
2178  template<typename T, qualifier Q>
+
2179  GLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<4, T, Q> &v) {
+
2180  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
+
2181  }
+
2182 
+
2183  // zzxz
+
2184  template<typename T, qualifier Q>
+
2185  GLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<3, T, Q> &v) {
+
2186  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
+
2187  }
+
2188 
+
2189  template<typename T, qualifier Q>
+
2190  GLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<4, T, Q> &v) {
+
2191  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
+
2192  }
+
2193 
+
2194  // zzxw
+
2195  template<typename T, qualifier Q>
+
2196  GLM_INLINE glm::vec<4, T, Q> zzxw(const glm::vec<4, T, Q> &v) {
+
2197  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
+
2198  }
+
2199 
+
2200  // zzyx
+
2201  template<typename T, qualifier Q>
+
2202  GLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<3, T, Q> &v) {
+
2203  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
+
2204  }
+
2205 
+
2206  template<typename T, qualifier Q>
+
2207  GLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<4, T, Q> &v) {
+
2208  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
+
2209  }
+
2210 
+
2211  // zzyy
+
2212  template<typename T, qualifier Q>
+
2213  GLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<3, T, Q> &v) {
+
2214  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
+
2215  }
+
2216 
+
2217  template<typename T, qualifier Q>
+
2218  GLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<4, T, Q> &v) {
+
2219  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
+
2220  }
+
2221 
+
2222  // zzyz
+
2223  template<typename T, qualifier Q>
+
2224  GLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<3, T, Q> &v) {
+
2225  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
+
2226  }
+
2227 
+
2228  template<typename T, qualifier Q>
+
2229  GLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<4, T, Q> &v) {
+
2230  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
+
2231  }
+
2232 
+
2233  // zzyw
+
2234  template<typename T, qualifier Q>
+
2235  GLM_INLINE glm::vec<4, T, Q> zzyw(const glm::vec<4, T, Q> &v) {
+
2236  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
+
2237  }
+
2238 
+
2239  // zzzx
+
2240  template<typename T, qualifier Q>
+
2241  GLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<3, T, Q> &v) {
+
2242  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
+
2243  }
+
2244 
+
2245  template<typename T, qualifier Q>
+
2246  GLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<4, T, Q> &v) {
+
2247  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
+
2248  }
+
2249 
+
2250  // zzzy
+
2251  template<typename T, qualifier Q>
+
2252  GLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<3, T, Q> &v) {
+
2253  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
+
2254  }
+
2255 
+
2256  template<typename T, qualifier Q>
+
2257  GLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<4, T, Q> &v) {
+
2258  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
+
2259  }
+
2260 
+
2261  // zzzz
+
2262  template<typename T, qualifier Q>
+
2263  GLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<3, T, Q> &v) {
+
2264  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
+
2265  }
+
2266 
+
2267  template<typename T, qualifier Q>
+
2268  GLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<4, T, Q> &v) {
+
2269  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
+
2270  }
+
2271 
+
2272  // zzzw
+
2273  template<typename T, qualifier Q>
+
2274  GLM_INLINE glm::vec<4, T, Q> zzzw(const glm::vec<4, T, Q> &v) {
+
2275  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
+
2276  }
+
2277 
+
2278  // zzwx
+
2279  template<typename T, qualifier Q>
+
2280  GLM_INLINE glm::vec<4, T, Q> zzwx(const glm::vec<4, T, Q> &v) {
+
2281  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
+
2282  }
+
2283 
+
2284  // zzwy
+
2285  template<typename T, qualifier Q>
+
2286  GLM_INLINE glm::vec<4, T, Q> zzwy(const glm::vec<4, T, Q> &v) {
+
2287  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
+
2288  }
+
2289 
+
2290  // zzwz
+
2291  template<typename T, qualifier Q>
+
2292  GLM_INLINE glm::vec<4, T, Q> zzwz(const glm::vec<4, T, Q> &v) {
+
2293  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
+
2294  }
+
2295 
+
2296  // zzww
+
2297  template<typename T, qualifier Q>
+
2298  GLM_INLINE glm::vec<4, T, Q> zzww(const glm::vec<4, T, Q> &v) {
+
2299  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
+
2300  }
+
2301 
+
2302  // zwxx
+
2303  template<typename T, qualifier Q>
+
2304  GLM_INLINE glm::vec<4, T, Q> zwxx(const glm::vec<4, T, Q> &v) {
+
2305  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
+
2306  }
+
2307 
+
2308  // zwxy
+
2309  template<typename T, qualifier Q>
+
2310  GLM_INLINE glm::vec<4, T, Q> zwxy(const glm::vec<4, T, Q> &v) {
+
2311  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
+
2312  }
+
2313 
+
2314  // zwxz
+
2315  template<typename T, qualifier Q>
+
2316  GLM_INLINE glm::vec<4, T, Q> zwxz(const glm::vec<4, T, Q> &v) {
+
2317  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
+
2318  }
+
2319 
+
2320  // zwxw
+
2321  template<typename T, qualifier Q>
+
2322  GLM_INLINE glm::vec<4, T, Q> zwxw(const glm::vec<4, T, Q> &v) {
+
2323  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
+
2324  }
+
2325 
+
2326  // zwyx
+
2327  template<typename T, qualifier Q>
+
2328  GLM_INLINE glm::vec<4, T, Q> zwyx(const glm::vec<4, T, Q> &v) {
+
2329  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
+
2330  }
+
2331 
+
2332  // zwyy
+
2333  template<typename T, qualifier Q>
+
2334  GLM_INLINE glm::vec<4, T, Q> zwyy(const glm::vec<4, T, Q> &v) {
+
2335  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
+
2336  }
+
2337 
+
2338  // zwyz
+
2339  template<typename T, qualifier Q>
+
2340  GLM_INLINE glm::vec<4, T, Q> zwyz(const glm::vec<4, T, Q> &v) {
+
2341  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
+
2342  }
+
2343 
+
2344  // zwyw
+
2345  template<typename T, qualifier Q>
+
2346  GLM_INLINE glm::vec<4, T, Q> zwyw(const glm::vec<4, T, Q> &v) {
+
2347  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
+
2348  }
+
2349 
+
2350  // zwzx
+
2351  template<typename T, qualifier Q>
+
2352  GLM_INLINE glm::vec<4, T, Q> zwzx(const glm::vec<4, T, Q> &v) {
+
2353  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
+
2354  }
+
2355 
+
2356  // zwzy
+
2357  template<typename T, qualifier Q>
+
2358  GLM_INLINE glm::vec<4, T, Q> zwzy(const glm::vec<4, T, Q> &v) {
+
2359  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
+
2360  }
+
2361 
+
2362  // zwzz
+
2363  template<typename T, qualifier Q>
+
2364  GLM_INLINE glm::vec<4, T, Q> zwzz(const glm::vec<4, T, Q> &v) {
+
2365  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
+
2366  }
+
2367 
+
2368  // zwzw
+
2369  template<typename T, qualifier Q>
+
2370  GLM_INLINE glm::vec<4, T, Q> zwzw(const glm::vec<4, T, Q> &v) {
+
2371  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
+
2372  }
+
2373 
+
2374  // zwwx
+
2375  template<typename T, qualifier Q>
+
2376  GLM_INLINE glm::vec<4, T, Q> zwwx(const glm::vec<4, T, Q> &v) {
+
2377  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
+
2378  }
+
2379 
+
2380  // zwwy
+
2381  template<typename T, qualifier Q>
+
2382  GLM_INLINE glm::vec<4, T, Q> zwwy(const glm::vec<4, T, Q> &v) {
+
2383  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
+
2384  }
+
2385 
+
2386  // zwwz
+
2387  template<typename T, qualifier Q>
+
2388  GLM_INLINE glm::vec<4, T, Q> zwwz(const glm::vec<4, T, Q> &v) {
+
2389  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
+
2390  }
+
2391 
+
2392  // zwww
+
2393  template<typename T, qualifier Q>
+
2394  GLM_INLINE glm::vec<4, T, Q> zwww(const glm::vec<4, T, Q> &v) {
+
2395  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
+
2396  }
+
2397 
+
2398  // wxxx
+
2399  template<typename T, qualifier Q>
+
2400  GLM_INLINE glm::vec<4, T, Q> wxxx(const glm::vec<4, T, Q> &v) {
+
2401  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
+
2402  }
+
2403 
+
2404  // wxxy
+
2405  template<typename T, qualifier Q>
+
2406  GLM_INLINE glm::vec<4, T, Q> wxxy(const glm::vec<4, T, Q> &v) {
+
2407  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
+
2408  }
+
2409 
+
2410  // wxxz
+
2411  template<typename T, qualifier Q>
+
2412  GLM_INLINE glm::vec<4, T, Q> wxxz(const glm::vec<4, T, Q> &v) {
+
2413  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
+
2414  }
+
2415 
+
2416  // wxxw
+
2417  template<typename T, qualifier Q>
+
2418  GLM_INLINE glm::vec<4, T, Q> wxxw(const glm::vec<4, T, Q> &v) {
+
2419  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
+
2420  }
+
2421 
+
2422  // wxyx
+
2423  template<typename T, qualifier Q>
+
2424  GLM_INLINE glm::vec<4, T, Q> wxyx(const glm::vec<4, T, Q> &v) {
+
2425  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
+
2426  }
+
2427 
+
2428  // wxyy
+
2429  template<typename T, qualifier Q>
+
2430  GLM_INLINE glm::vec<4, T, Q> wxyy(const glm::vec<4, T, Q> &v) {
+
2431  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
+
2432  }
+
2433 
+
2434  // wxyz
+
2435  template<typename T, qualifier Q>
+
2436  GLM_INLINE glm::vec<4, T, Q> wxyz(const glm::vec<4, T, Q> &v) {
+
2437  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
+
2438  }
+
2439 
+
2440  // wxyw
+
2441  template<typename T, qualifier Q>
+
2442  GLM_INLINE glm::vec<4, T, Q> wxyw(const glm::vec<4, T, Q> &v) {
+
2443  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
+
2444  }
+
2445 
+
2446  // wxzx
+
2447  template<typename T, qualifier Q>
+
2448  GLM_INLINE glm::vec<4, T, Q> wxzx(const glm::vec<4, T, Q> &v) {
+
2449  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
+
2450  }
+
2451 
+
2452  // wxzy
+
2453  template<typename T, qualifier Q>
+
2454  GLM_INLINE glm::vec<4, T, Q> wxzy(const glm::vec<4, T, Q> &v) {
+
2455  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
+
2456  }
+
2457 
+
2458  // wxzz
+
2459  template<typename T, qualifier Q>
+
2460  GLM_INLINE glm::vec<4, T, Q> wxzz(const glm::vec<4, T, Q> &v) {
+
2461  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
+
2462  }
+
2463 
+
2464  // wxzw
+
2465  template<typename T, qualifier Q>
+
2466  GLM_INLINE glm::vec<4, T, Q> wxzw(const glm::vec<4, T, Q> &v) {
+
2467  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
+
2468  }
+
2469 
+
2470  // wxwx
+
2471  template<typename T, qualifier Q>
+
2472  GLM_INLINE glm::vec<4, T, Q> wxwx(const glm::vec<4, T, Q> &v) {
+
2473  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
+
2474  }
+
2475 
+
2476  // wxwy
+
2477  template<typename T, qualifier Q>
+
2478  GLM_INLINE glm::vec<4, T, Q> wxwy(const glm::vec<4, T, Q> &v) {
+
2479  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
+
2480  }
+
2481 
+
2482  // wxwz
+
2483  template<typename T, qualifier Q>
+
2484  GLM_INLINE glm::vec<4, T, Q> wxwz(const glm::vec<4, T, Q> &v) {
+
2485  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
+
2486  }
+
2487 
+
2488  // wxww
+
2489  template<typename T, qualifier Q>
+
2490  GLM_INLINE glm::vec<4, T, Q> wxww(const glm::vec<4, T, Q> &v) {
+
2491  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
+
2492  }
+
2493 
+
2494  // wyxx
+
2495  template<typename T, qualifier Q>
+
2496  GLM_INLINE glm::vec<4, T, Q> wyxx(const glm::vec<4, T, Q> &v) {
+
2497  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
+
2498  }
+
2499 
+
2500  // wyxy
+
2501  template<typename T, qualifier Q>
+
2502  GLM_INLINE glm::vec<4, T, Q> wyxy(const glm::vec<4, T, Q> &v) {
+
2503  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
+
2504  }
+
2505 
+
2506  // wyxz
+
2507  template<typename T, qualifier Q>
+
2508  GLM_INLINE glm::vec<4, T, Q> wyxz(const glm::vec<4, T, Q> &v) {
+
2509  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
+
2510  }
+
2511 
+
2512  // wyxw
+
2513  template<typename T, qualifier Q>
+
2514  GLM_INLINE glm::vec<4, T, Q> wyxw(const glm::vec<4, T, Q> &v) {
+
2515  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
+
2516  }
+
2517 
+
2518  // wyyx
+
2519  template<typename T, qualifier Q>
+
2520  GLM_INLINE glm::vec<4, T, Q> wyyx(const glm::vec<4, T, Q> &v) {
+
2521  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
+
2522  }
+
2523 
+
2524  // wyyy
+
2525  template<typename T, qualifier Q>
+
2526  GLM_INLINE glm::vec<4, T, Q> wyyy(const glm::vec<4, T, Q> &v) {
+
2527  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
+
2528  }
+
2529 
+
2530  // wyyz
+
2531  template<typename T, qualifier Q>
+
2532  GLM_INLINE glm::vec<4, T, Q> wyyz(const glm::vec<4, T, Q> &v) {
+
2533  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
+
2534  }
+
2535 
+
2536  // wyyw
+
2537  template<typename T, qualifier Q>
+
2538  GLM_INLINE glm::vec<4, T, Q> wyyw(const glm::vec<4, T, Q> &v) {
+
2539  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
+
2540  }
+
2541 
+
2542  // wyzx
+
2543  template<typename T, qualifier Q>
+
2544  GLM_INLINE glm::vec<4, T, Q> wyzx(const glm::vec<4, T, Q> &v) {
+
2545  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
+
2546  }
+
2547 
+
2548  // wyzy
+
2549  template<typename T, qualifier Q>
+
2550  GLM_INLINE glm::vec<4, T, Q> wyzy(const glm::vec<4, T, Q> &v) {
+
2551  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
+
2552  }
+
2553 
+
2554  // wyzz
+
2555  template<typename T, qualifier Q>
+
2556  GLM_INLINE glm::vec<4, T, Q> wyzz(const glm::vec<4, T, Q> &v) {
+
2557  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
+
2558  }
+
2559 
+
2560  // wyzw
+
2561  template<typename T, qualifier Q>
+
2562  GLM_INLINE glm::vec<4, T, Q> wyzw(const glm::vec<4, T, Q> &v) {
+
2563  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
+
2564  }
+
2565 
+
2566  // wywx
+
2567  template<typename T, qualifier Q>
+
2568  GLM_INLINE glm::vec<4, T, Q> wywx(const glm::vec<4, T, Q> &v) {
+
2569  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
+
2570  }
+
2571 
+
2572  // wywy
+
2573  template<typename T, qualifier Q>
+
2574  GLM_INLINE glm::vec<4, T, Q> wywy(const glm::vec<4, T, Q> &v) {
+
2575  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
+
2576  }
+
2577 
+
2578  // wywz
+
2579  template<typename T, qualifier Q>
+
2580  GLM_INLINE glm::vec<4, T, Q> wywz(const glm::vec<4, T, Q> &v) {
+
2581  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
+
2582  }
+
2583 
+
2584  // wyww
+
2585  template<typename T, qualifier Q>
+
2586  GLM_INLINE glm::vec<4, T, Q> wyww(const glm::vec<4, T, Q> &v) {
+
2587  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
+
2588  }
+
2589 
+
2590  // wzxx
+
2591  template<typename T, qualifier Q>
+
2592  GLM_INLINE glm::vec<4, T, Q> wzxx(const glm::vec<4, T, Q> &v) {
+
2593  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
+
2594  }
+
2595 
+
2596  // wzxy
+
2597  template<typename T, qualifier Q>
+
2598  GLM_INLINE glm::vec<4, T, Q> wzxy(const glm::vec<4, T, Q> &v) {
+
2599  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
+
2600  }
+
2601 
+
2602  // wzxz
+
2603  template<typename T, qualifier Q>
+
2604  GLM_INLINE glm::vec<4, T, Q> wzxz(const glm::vec<4, T, Q> &v) {
+
2605  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
+
2606  }
+
2607 
+
2608  // wzxw
+
2609  template<typename T, qualifier Q>
+
2610  GLM_INLINE glm::vec<4, T, Q> wzxw(const glm::vec<4, T, Q> &v) {
+
2611  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
+
2612  }
+
2613 
+
2614  // wzyx
+
2615  template<typename T, qualifier Q>
+
2616  GLM_INLINE glm::vec<4, T, Q> wzyx(const glm::vec<4, T, Q> &v) {
+
2617  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
+
2618  }
+
2619 
+
2620  // wzyy
+
2621  template<typename T, qualifier Q>
+
2622  GLM_INLINE glm::vec<4, T, Q> wzyy(const glm::vec<4, T, Q> &v) {
+
2623  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
+
2624  }
+
2625 
+
2626  // wzyz
+
2627  template<typename T, qualifier Q>
+
2628  GLM_INLINE glm::vec<4, T, Q> wzyz(const glm::vec<4, T, Q> &v) {
+
2629  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
+
2630  }
+
2631 
+
2632  // wzyw
+
2633  template<typename T, qualifier Q>
+
2634  GLM_INLINE glm::vec<4, T, Q> wzyw(const glm::vec<4, T, Q> &v) {
+
2635  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
+
2636  }
+
2637 
+
2638  // wzzx
+
2639  template<typename T, qualifier Q>
+
2640  GLM_INLINE glm::vec<4, T, Q> wzzx(const glm::vec<4, T, Q> &v) {
+
2641  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
+
2642  }
+
2643 
+
2644  // wzzy
+
2645  template<typename T, qualifier Q>
+
2646  GLM_INLINE glm::vec<4, T, Q> wzzy(const glm::vec<4, T, Q> &v) {
+
2647  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
+
2648  }
+
2649 
+
2650  // wzzz
+
2651  template<typename T, qualifier Q>
+
2652  GLM_INLINE glm::vec<4, T, Q> wzzz(const glm::vec<4, T, Q> &v) {
+
2653  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
+
2654  }
+
2655 
+
2656  // wzzw
+
2657  template<typename T, qualifier Q>
+
2658  GLM_INLINE glm::vec<4, T, Q> wzzw(const glm::vec<4, T, Q> &v) {
+
2659  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
+
2660  }
+
2661 
+
2662  // wzwx
+
2663  template<typename T, qualifier Q>
+
2664  GLM_INLINE glm::vec<4, T, Q> wzwx(const glm::vec<4, T, Q> &v) {
+
2665  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
+
2666  }
+
2667 
+
2668  // wzwy
+
2669  template<typename T, qualifier Q>
+
2670  GLM_INLINE glm::vec<4, T, Q> wzwy(const glm::vec<4, T, Q> &v) {
+
2671  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
+
2672  }
+
2673 
+
2674  // wzwz
+
2675  template<typename T, qualifier Q>
+
2676  GLM_INLINE glm::vec<4, T, Q> wzwz(const glm::vec<4, T, Q> &v) {
+
2677  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
+
2678  }
+
2679 
+
2680  // wzww
+
2681  template<typename T, qualifier Q>
+
2682  GLM_INLINE glm::vec<4, T, Q> wzww(const glm::vec<4, T, Q> &v) {
+
2683  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
+
2684  }
+
2685 
+
2686  // wwxx
+
2687  template<typename T, qualifier Q>
+
2688  GLM_INLINE glm::vec<4, T, Q> wwxx(const glm::vec<4, T, Q> &v) {
+
2689  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
+
2690  }
+
2691 
+
2692  // wwxy
+
2693  template<typename T, qualifier Q>
+
2694  GLM_INLINE glm::vec<4, T, Q> wwxy(const glm::vec<4, T, Q> &v) {
+
2695  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
+
2696  }
+
2697 
+
2698  // wwxz
+
2699  template<typename T, qualifier Q>
+
2700  GLM_INLINE glm::vec<4, T, Q> wwxz(const glm::vec<4, T, Q> &v) {
+
2701  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
+
2702  }
+
2703 
+
2704  // wwxw
+
2705  template<typename T, qualifier Q>
+
2706  GLM_INLINE glm::vec<4, T, Q> wwxw(const glm::vec<4, T, Q> &v) {
+
2707  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
+
2708  }
+
2709 
+
2710  // wwyx
+
2711  template<typename T, qualifier Q>
+
2712  GLM_INLINE glm::vec<4, T, Q> wwyx(const glm::vec<4, T, Q> &v) {
+
2713  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
+
2714  }
+
2715 
+
2716  // wwyy
+
2717  template<typename T, qualifier Q>
+
2718  GLM_INLINE glm::vec<4, T, Q> wwyy(const glm::vec<4, T, Q> &v) {
+
2719  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
+
2720  }
+
2721 
+
2722  // wwyz
+
2723  template<typename T, qualifier Q>
+
2724  GLM_INLINE glm::vec<4, T, Q> wwyz(const glm::vec<4, T, Q> &v) {
+
2725  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
+
2726  }
+
2727 
+
2728  // wwyw
+
2729  template<typename T, qualifier Q>
+
2730  GLM_INLINE glm::vec<4, T, Q> wwyw(const glm::vec<4, T, Q> &v) {
+
2731  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
+
2732  }
+
2733 
+
2734  // wwzx
+
2735  template<typename T, qualifier Q>
+
2736  GLM_INLINE glm::vec<4, T, Q> wwzx(const glm::vec<4, T, Q> &v) {
+
2737  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
+
2738  }
+
2739 
+
2740  // wwzy
+
2741  template<typename T, qualifier Q>
+
2742  GLM_INLINE glm::vec<4, T, Q> wwzy(const glm::vec<4, T, Q> &v) {
+
2743  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
+
2744  }
+
2745 
+
2746  // wwzz
+
2747  template<typename T, qualifier Q>
+
2748  GLM_INLINE glm::vec<4, T, Q> wwzz(const glm::vec<4, T, Q> &v) {
+
2749  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
+
2750  }
+
2751 
+
2752  // wwzw
+
2753  template<typename T, qualifier Q>
+
2754  GLM_INLINE glm::vec<4, T, Q> wwzw(const glm::vec<4, T, Q> &v) {
+
2755  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
+
2756  }
+
2757 
+
2758  // wwwx
+
2759  template<typename T, qualifier Q>
+
2760  GLM_INLINE glm::vec<4, T, Q> wwwx(const glm::vec<4, T, Q> &v) {
+
2761  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
+
2762  }
+
2763 
+
2764  // wwwy
+
2765  template<typename T, qualifier Q>
+
2766  GLM_INLINE glm::vec<4, T, Q> wwwy(const glm::vec<4, T, Q> &v) {
+
2767  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
+
2768  }
+
2769 
+
2770  // wwwz
+
2771  template<typename T, qualifier Q>
+
2772  GLM_INLINE glm::vec<4, T, Q> wwwz(const glm::vec<4, T, Q> &v) {
+
2773  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
+
2774  }
+
2775 
+
2776  // wwww
+
2777  template<typename T, qualifier Q>
+
2778  GLM_INLINE glm::vec<4, T, Q> wwww(const glm::vec<4, T, Q> &v) {
+
2779  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);
+
2780  }
+
2781 
+
2782 }
+
Definition: common.hpp:20
+
+ + + + -- cgit v1.2.3-70-g09d2