1 #include <glm/gtc/type_precision.hpp>
2 #include <glm/gtc/quaternion.hpp>
3 #include <vector>
4 #if GLM_HAS_OPENMP
5 # include <omp.h>
6 #endif
7
test_scalar_size()8 static int test_scalar_size()
9 {
10 int Error(0);
11 Error += sizeof(glm::int8) != 1;
12 Error += sizeof(glm::int16) != 2;
13 Error += sizeof(glm::int32) != 4;
14 Error += sizeof(glm::int64) != 8;
15 Error += sizeof(glm::uint8) != 1;
16 Error += sizeof(glm::uint16) != 2;
17 Error += sizeof(glm::uint32) != 4;
18 Error += sizeof(glm::uint64) != 8;
19 Error += sizeof(glm::float32) != 4;
20 Error += sizeof(glm::float64) != 8;
21
22 Error += sizeof(glm::lowp_int8) != 1;
23 Error += sizeof(glm::lowp_int16) != 2;
24 Error += sizeof(glm::lowp_int32) != 4;
25 Error += sizeof(glm::lowp_int64) != 8;
26 Error += sizeof(glm::lowp_uint8) != 1;
27 Error += sizeof(glm::lowp_uint16) != 2;
28 Error += sizeof(glm::lowp_uint32) != 4;
29 Error += sizeof(glm::lowp_uint64) != 8;
30 Error += sizeof(glm::lowp_float32) != 4;
31 Error += sizeof(glm::lowp_float64) != 8;
32
33 Error += sizeof(glm::mediump_int8) != 1;
34 Error += sizeof(glm::mediump_int16) != 2;
35 Error += sizeof(glm::mediump_int32) != 4;
36 Error += sizeof(glm::mediump_int64) != 8;
37 Error += sizeof(glm::mediump_uint8) != 1;
38 Error += sizeof(glm::mediump_uint16) != 2;
39 Error += sizeof(glm::mediump_uint32) != 4;
40 Error += sizeof(glm::mediump_uint64) != 8;
41 Error += sizeof(glm::mediump_float32) != 4;
42 Error += sizeof(glm::mediump_float64) != 8;
43
44 Error += sizeof(glm::highp_int8) != 1;
45 Error += sizeof(glm::highp_int16) != 2;
46 Error += sizeof(glm::highp_int32) != 4;
47 Error += sizeof(glm::highp_int64) != 8;
48 Error += sizeof(glm::highp_uint8) != 1;
49 Error += sizeof(glm::highp_uint16) != 2;
50 Error += sizeof(glm::highp_uint32) != 4;
51 Error += sizeof(glm::highp_uint64) != 8;
52 Error += sizeof(glm::highp_float32) != 4;
53 Error += sizeof(glm::highp_float64) != 8;
54 return Error;
55 }
56
test_fvec_size()57 static int test_fvec_size()
58 {
59 int Error(0);
60 Error += sizeof(glm::f32vec2) != 8;
61 Error += sizeof(glm::f32vec3) != 12;
62 Error += sizeof(glm::f32vec4) != 16;
63 Error += sizeof(glm::f64vec2) != 16;
64 Error += sizeof(glm::f64vec3) != 24;
65 Error += sizeof(glm::f64vec4) != 32;
66
67 Error += sizeof(glm::lowp_f32vec2) != 8;
68 Error += sizeof(glm::lowp_f32vec3) != 12;
69 Error += sizeof(glm::lowp_f32vec4) != 16;
70 Error += sizeof(glm::lowp_f64vec2) != 16;
71 Error += sizeof(glm::lowp_f64vec3) != 24;
72 Error += sizeof(glm::lowp_f64vec4) != 32;
73
74 Error += sizeof(glm::mediump_f32vec2) != 8;
75 Error += sizeof(glm::mediump_f32vec3) != 12;
76 Error += sizeof(glm::mediump_f32vec4) != 16;
77 Error += sizeof(glm::mediump_f64vec2) != 16;
78 Error += sizeof(glm::mediump_f64vec3) != 24;
79 Error += sizeof(glm::mediump_f64vec4) != 32;
80
81 Error += sizeof(glm::highp_f32vec2) != 8;
82 Error += sizeof(glm::highp_f32vec3) != 12;
83 Error += sizeof(glm::highp_f32vec4) != 16;
84 Error += sizeof(glm::highp_f64vec2) != 16;
85 Error += sizeof(glm::highp_f64vec3) != 24;
86 Error += sizeof(glm::highp_f64vec4) != 32;
87 return Error;
88 }
89
test_fvec_precision()90 static int test_fvec_precision()
91 {
92 int Error(0);
93 /*
94 {
95 glm::f32vec2 v1;
96 glm::lowp_f32vec2 v2((glm::f32vec2(v1)));
97 glm::mediump_f32vec2 v3((glm::f32vec2(v1)));
98 glm::highp_f32vec2 v4((glm::f32vec2(v1)));
99
100 Error += glm::all(glm::equal(v1, v2)) ? 0 : 1;
101 Error += glm::all(glm::equal(v1, v3)) ? 0 : 1;
102 Error += glm::all(glm::equal(v1, v4)) ? 0 : 1;
103 }
104 */
105 {
106 glm::f32vec2 v1;
107 glm::lowp_f32vec2 v2(v1);
108 glm::mediump_f32vec2 v3(v1);
109 glm::highp_f32vec2 v4(v1);
110
111 Error += glm::all(glm::equal(v1, glm::f32vec2(v2))) ? 0 : 1;
112 Error += glm::all(glm::equal(v1, glm::f32vec2(v3))) ? 0 : 1;
113 Error += glm::all(glm::equal(v1, glm::f32vec2(v4))) ? 0 : 1;
114 }
115
116 {
117 glm::f32vec3 v1;
118 glm::lowp_f32vec3 v2(v1);
119 glm::mediump_f32vec3 v3(v1);
120 glm::highp_f32vec3 v4(v1);
121
122 Error += glm::all(glm::equal(v1, glm::f32vec3(v2))) ? 0 : 1;
123 Error += glm::all(glm::equal(v1, glm::f32vec3(v3))) ? 0 : 1;
124 Error += glm::all(glm::equal(v1, glm::f32vec3(v4))) ? 0 : 1;
125 }
126
127 {
128 glm::f32vec4 v1;
129 glm::lowp_f32vec4 v2(v1);
130 glm::mediump_f32vec4 v3(v1);
131 glm::highp_f32vec4 v4(v1);
132
133 Error += glm::all(glm::equal(v1, glm::f32vec4(v2))) ? 0 : 1;
134 Error += glm::all(glm::equal(v1, glm::f32vec4(v3))) ? 0 : 1;
135 Error += glm::all(glm::equal(v1, glm::f32vec4(v4))) ? 0 : 1;
136 }
137
138 return Error;
139 }
140
test_dvec_precision()141 static int test_dvec_precision()
142 {
143 int Error(0);
144
145 {
146 glm::f64vec2 v1;
147 glm::lowp_f64vec2 v2(v1);
148 glm::mediump_f64vec2 v3(v1);
149 glm::highp_f64vec2 v4(v1);
150
151 Error += glm::all(glm::equal(v1, glm::f64vec2(v2))) ? 0 : 1;
152 Error += glm::all(glm::equal(v1, glm::f64vec2(v3))) ? 0 : 1;
153 Error += glm::all(glm::equal(v1, glm::f64vec2(v4))) ? 0 : 1;
154 }
155
156 {
157 glm::f64vec3 v1;
158 glm::lowp_f64vec3 v2(v1);
159 glm::mediump_f64vec3 v3(v1);
160 glm::highp_f64vec3 v4(v1);
161
162 Error += glm::all(glm::equal(v1, glm::f64vec3(v2))) ? 0 : 1;
163 Error += glm::all(glm::equal(v1, glm::f64vec3(v3))) ? 0 : 1;
164 Error += glm::all(glm::equal(v1, glm::f64vec3(v4))) ? 0 : 1;
165 }
166
167 {
168 glm::f64vec4 v1;
169 glm::lowp_f64vec4 v2(v1);
170 glm::mediump_f64vec4 v3(v1);
171 glm::highp_f64vec4 v4(v1);
172
173 Error += glm::all(glm::equal(v1, glm::f64vec4(v2))) ? 0 : 1;
174 Error += glm::all(glm::equal(v1, glm::f64vec4(v3))) ? 0 : 1;
175 Error += glm::all(glm::equal(v1, glm::f64vec4(v4))) ? 0 : 1;
176 }
177
178 return Error;
179 }
180
test_ivec_size()181 static int test_ivec_size()
182 {
183 int Error(0);
184 Error += sizeof(glm::i8vec2) != 2;
185 Error += sizeof(glm::i8vec3) != 3;
186 Error += sizeof(glm::i8vec4) != 4;
187 Error += sizeof(glm::i16vec2) != 4;
188 Error += sizeof(glm::i16vec3) != 6;
189 Error += sizeof(glm::i16vec4) != 8;
190 Error += sizeof(glm::i32vec2) != 8;
191 Error += sizeof(glm::i32vec3) != 12;
192 Error += sizeof(glm::i32vec4) != 16;
193 Error += sizeof(glm::i64vec2) != 16;
194 Error += sizeof(glm::i64vec3) != 24;
195 Error += sizeof(glm::i64vec4) != 32;
196
197 Error += sizeof(glm::lowp_i8vec2) != 2;
198 Error += sizeof(glm::lowp_i8vec3) != 3;
199 Error += sizeof(glm::lowp_i8vec4) != 4;
200 Error += sizeof(glm::lowp_i16vec2) != 4;
201 Error += sizeof(glm::lowp_i16vec3) != 6;
202 Error += sizeof(glm::lowp_i16vec4) != 8;
203 Error += sizeof(glm::lowp_i32vec2) != 8;
204 Error += sizeof(glm::lowp_i32vec3) != 12;
205 Error += sizeof(glm::lowp_i32vec4) != 16;
206 Error += sizeof(glm::lowp_i64vec2) != 16;
207 Error += sizeof(glm::lowp_i64vec3) != 24;
208 Error += sizeof(glm::lowp_i64vec4) != 32;
209
210 Error += sizeof(glm::mediump_i8vec2) != 2;
211 Error += sizeof(glm::mediump_i8vec3) != 3;
212 Error += sizeof(glm::mediump_i8vec4) != 4;
213 Error += sizeof(glm::mediump_i16vec2) != 4;
214 Error += sizeof(glm::mediump_i16vec3) != 6;
215 Error += sizeof(glm::mediump_i16vec4) != 8;
216 Error += sizeof(glm::mediump_i32vec2) != 8;
217 Error += sizeof(glm::mediump_i32vec3) != 12;
218 Error += sizeof(glm::mediump_i32vec4) != 16;
219 Error += sizeof(glm::mediump_i64vec2) != 16;
220 Error += sizeof(glm::mediump_i64vec3) != 24;
221 Error += sizeof(glm::mediump_i64vec4) != 32;
222
223 Error += sizeof(glm::highp_i8vec2) != 2;
224 Error += sizeof(glm::highp_i8vec3) != 3;
225 Error += sizeof(glm::highp_i8vec4) != 4;
226 Error += sizeof(glm::highp_i16vec2) != 4;
227 Error += sizeof(glm::highp_i16vec3) != 6;
228 Error += sizeof(glm::highp_i16vec4) != 8;
229 Error += sizeof(glm::highp_i32vec2) != 8;
230 Error += sizeof(glm::highp_i32vec3) != 12;
231 Error += sizeof(glm::highp_i32vec4) != 16;
232 Error += sizeof(glm::highp_i64vec2) != 16;
233 Error += sizeof(glm::highp_i64vec3) != 24;
234 Error += sizeof(glm::highp_i64vec4) != 32;
235 return Error;
236 }
237
test_ivec_precision()238 static int test_ivec_precision()
239 {
240 int Error(0);
241
242 {
243 glm::i8vec2 v1;
244 glm::lowp_i8vec2 v2(v1);
245 glm::mediump_i8vec2 v3(v1);
246 glm::highp_i8vec2 v4(v1);
247
248 Error += glm::all(glm::equal(v1, glm::i8vec2(v2))) ? 0 : 1;
249 Error += glm::all(glm::equal(v1, glm::i8vec2(v3))) ? 0 : 1;
250 Error += glm::all(glm::equal(v1, glm::i8vec2(v4))) ? 0 : 1;
251 }
252
253 {
254 glm::i8vec3 v1;
255 glm::lowp_i8vec3 v2(v1);
256 glm::mediump_i8vec3 v3(v1);
257 glm::highp_i8vec3 v4(v1);
258
259 Error += glm::all(glm::equal(v1, glm::i8vec3(v2))) ? 0 : 1;
260 Error += glm::all(glm::equal(v1, glm::i8vec3(v3))) ? 0 : 1;
261 Error += glm::all(glm::equal(v1, glm::i8vec3(v4))) ? 0 : 1;
262 }
263
264 {
265 glm::i8vec4 v1;
266 glm::lowp_i8vec4 v2(v1);
267 glm::mediump_i8vec4 v3(v1);
268 glm::highp_i8vec4 v4(v1);
269
270 Error += glm::all(glm::equal(v1, glm::i8vec4(v2))) ? 0 : 1;
271 Error += glm::all(glm::equal(v1, glm::i8vec4(v3))) ? 0 : 1;
272 Error += glm::all(glm::equal(v1, glm::i8vec4(v4))) ? 0 : 1;
273 }
274
275 {
276 glm::i16vec2 v1;
277 glm::lowp_i16vec2 v2(v1);
278 glm::mediump_i16vec2 v3(v1);
279 glm::highp_i16vec2 v4(v1);
280
281 Error += glm::all(glm::equal(v1, glm::i16vec2(v2))) ? 0 : 1;
282 Error += glm::all(glm::equal(v1, glm::i16vec2(v3))) ? 0 : 1;
283 Error += glm::all(glm::equal(v1, glm::i16vec2(v4))) ? 0 : 1;
284 }
285
286 {
287 glm::i16vec3 v1;
288 glm::lowp_i16vec3 v2(v1);
289 glm::mediump_i16vec3 v3(v1);
290 glm::highp_i16vec3 v4(v1);
291
292 Error += glm::all(glm::equal(v1, glm::i16vec3(v2))) ? 0 : 1;
293 Error += glm::all(glm::equal(v1, glm::i16vec3(v3))) ? 0 : 1;
294 Error += glm::all(glm::equal(v1, glm::i16vec3(v4))) ? 0 : 1;
295 }
296
297 {
298 glm::i16vec4 v1;
299 glm::lowp_i16vec4 v2(v1);
300 glm::mediump_i16vec4 v3(v1);
301 glm::highp_i16vec4 v4(v1);
302
303 Error += glm::all(glm::equal(v1, glm::i16vec4(v2))) ? 0 : 1;
304 Error += glm::all(glm::equal(v1, glm::i16vec4(v3))) ? 0 : 1;
305 Error += glm::all(glm::equal(v1, glm::i16vec4(v4))) ? 0 : 1;
306 }
307
308 {
309 glm::i32vec2 v1;
310 glm::lowp_i32vec2 v2(v1);
311 glm::mediump_i32vec2 v3(v1);
312 glm::highp_i32vec2 v4(v1);
313
314 Error += glm::all(glm::equal(v1, glm::i32vec2(v2))) ? 0 : 1;
315 Error += glm::all(glm::equal(v1, glm::i32vec2(v3))) ? 0 : 1;
316 Error += glm::all(glm::equal(v1, glm::i32vec2(v4))) ? 0 : 1;
317 }
318
319 {
320 glm::i32vec3 v1;
321 glm::lowp_i32vec3 v2(v1);
322 glm::mediump_i32vec3 v3(v1);
323 glm::highp_i32vec3 v4(v1);
324
325 Error += glm::all(glm::equal(v1, glm::i32vec3(v2))) ? 0 : 1;
326 Error += glm::all(glm::equal(v1, glm::i32vec3(v3))) ? 0 : 1;
327 Error += glm::all(glm::equal(v1, glm::i32vec3(v4))) ? 0 : 1;
328 }
329
330 {
331 glm::i32vec4 v1;
332 glm::lowp_i32vec4 v2(v1);
333 glm::mediump_i32vec4 v3(v1);
334 glm::highp_i32vec4 v4(v1);
335
336 Error += glm::all(glm::equal(v1, glm::i32vec4(v2))) ? 0 : 1;
337 Error += glm::all(glm::equal(v1, glm::i32vec4(v3))) ? 0 : 1;
338 Error += glm::all(glm::equal(v1, glm::i32vec4(v4))) ? 0 : 1;
339 }
340
341 {
342 glm::i64vec2 v1;
343 glm::lowp_i64vec2 v2(v1);
344 glm::mediump_i64vec2 v3(v1);
345 glm::highp_i64vec2 v4(v1);
346
347 Error += glm::all(glm::equal(v1, glm::i64vec2(v2))) ? 0 : 1;
348 Error += glm::all(glm::equal(v1, glm::i64vec2(v3))) ? 0 : 1;
349 Error += glm::all(glm::equal(v1, glm::i64vec2(v4))) ? 0 : 1;
350 }
351
352 {
353 glm::i64vec3 v1;
354 glm::lowp_i64vec3 v2(v1);
355 glm::mediump_i64vec3 v3(v1);
356 glm::highp_i64vec3 v4(v1);
357
358 Error += glm::all(glm::equal(v1, glm::i64vec3(v2))) ? 0 : 1;
359 Error += glm::all(glm::equal(v1, glm::i64vec3(v3))) ? 0 : 1;
360 Error += glm::all(glm::equal(v1, glm::i64vec3(v4))) ? 0 : 1;
361 }
362
363 {
364 glm::i64vec4 v1;
365 glm::lowp_i64vec4 v2(v1);
366 glm::mediump_i64vec4 v3(v1);
367 glm::highp_i64vec4 v4(v1);
368
369 Error += glm::all(glm::equal(v1, glm::i64vec4(v2))) ? 0 : 1;
370 Error += glm::all(glm::equal(v1, glm::i64vec4(v3))) ? 0 : 1;
371 Error += glm::all(glm::equal(v1, glm::i64vec4(v4))) ? 0 : 1;
372 }
373
374 return Error;
375 }
376
test_uvec_size()377 static int test_uvec_size()
378 {
379 int Error(0);
380 Error += sizeof(glm::u8vec2) != 2;
381 Error += sizeof(glm::u8vec3) != 3;
382 Error += sizeof(glm::u8vec4) != 4;
383 Error += sizeof(glm::u16vec2) != 4;
384 Error += sizeof(glm::u16vec3) != 6;
385 Error += sizeof(glm::u16vec4) != 8;
386 Error += sizeof(glm::u32vec2) != 8;
387 Error += sizeof(glm::u32vec3) != 12;
388 Error += sizeof(glm::u32vec4) != 16;
389 Error += sizeof(glm::u64vec2) != 16;
390 Error += sizeof(glm::u64vec3) != 24;
391 Error += sizeof(glm::u64vec4) != 32;
392
393 Error += sizeof(glm::lowp_u8vec2) != 2;
394 Error += sizeof(glm::lowp_u8vec3) != 3;
395 Error += sizeof(glm::lowp_u8vec4) != 4;
396 Error += sizeof(glm::lowp_u16vec2) != 4;
397 Error += sizeof(glm::lowp_u16vec3) != 6;
398 Error += sizeof(glm::lowp_u16vec4) != 8;
399 Error += sizeof(glm::lowp_u32vec2) != 8;
400 Error += sizeof(glm::lowp_u32vec3) != 12;
401 Error += sizeof(glm::lowp_u32vec4) != 16;
402 Error += sizeof(glm::lowp_u64vec2) != 16;
403 Error += sizeof(glm::lowp_u64vec3) != 24;
404 Error += sizeof(glm::lowp_u64vec4) != 32;
405
406 Error += sizeof(glm::mediump_u8vec2) != 2;
407 Error += sizeof(glm::mediump_u8vec3) != 3;
408 Error += sizeof(glm::mediump_u8vec4) != 4;
409 Error += sizeof(glm::mediump_u16vec2) != 4;
410 Error += sizeof(glm::mediump_u16vec3) != 6;
411 Error += sizeof(glm::mediump_u16vec4) != 8;
412 Error += sizeof(glm::mediump_u32vec2) != 8;
413 Error += sizeof(glm::mediump_u32vec3) != 12;
414 Error += sizeof(glm::mediump_u32vec4) != 16;
415 Error += sizeof(glm::mediump_u64vec2) != 16;
416 Error += sizeof(glm::mediump_u64vec3) != 24;
417 Error += sizeof(glm::mediump_u64vec4) != 32;
418
419 Error += sizeof(glm::highp_u8vec2) != 2;
420 Error += sizeof(glm::highp_u8vec3) != 3;
421 Error += sizeof(glm::highp_u8vec4) != 4;
422 Error += sizeof(glm::highp_u16vec2) != 4;
423 Error += sizeof(glm::highp_u16vec3) != 6;
424 Error += sizeof(glm::highp_u16vec4) != 8;
425 Error += sizeof(glm::highp_u32vec2) != 8;
426 Error += sizeof(glm::highp_u32vec3) != 12;
427 Error += sizeof(glm::highp_u32vec4) != 16;
428 Error += sizeof(glm::highp_u64vec2) != 16;
429 Error += sizeof(glm::highp_u64vec3) != 24;
430 Error += sizeof(glm::highp_u64vec4) != 32;
431 return Error;
432 }
433
test_uvec_precision()434 static int test_uvec_precision()
435 {
436 int Error(0);
437
438 {
439 glm::u8vec2 v1;
440 glm::lowp_u8vec2 v2(v1);
441 glm::mediump_u8vec2 v3(v1);
442 glm::highp_u8vec2 v4(v1);
443
444 Error += glm::all(glm::equal(v1, glm::u8vec2(v2))) ? 0 : 1;
445 Error += glm::all(glm::equal(v1, glm::u8vec2(v3))) ? 0 : 1;
446 Error += glm::all(glm::equal(v1, glm::u8vec2(v4))) ? 0 : 1;
447 }
448
449 {
450 glm::u8vec3 v1;
451 glm::lowp_u8vec3 v2(v1);
452 glm::mediump_u8vec3 v3(v1);
453 glm::highp_u8vec3 v4(v1);
454
455 Error += glm::all(glm::equal(v1, glm::u8vec3(v2))) ? 0 : 1;
456 Error += glm::all(glm::equal(v1, glm::u8vec3(v3))) ? 0 : 1;
457 Error += glm::all(glm::equal(v1, glm::u8vec3(v4))) ? 0 : 1;
458 }
459
460 {
461 glm::u8vec4 v1;
462 glm::lowp_u8vec4 v2(v1);
463 glm::mediump_u8vec4 v3(v1);
464 glm::highp_u8vec4 v4(v1);
465
466 Error += glm::all(glm::equal(v1, glm::u8vec4(v2))) ? 0 : 1;
467 Error += glm::all(glm::equal(v1, glm::u8vec4(v3))) ? 0 : 1;
468 Error += glm::all(glm::equal(v1, glm::u8vec4(v4))) ? 0 : 1;
469 }
470
471 {
472 glm::u16vec2 v1;
473 glm::lowp_u16vec2 v2(v1);
474 glm::mediump_u16vec2 v3(v1);
475 glm::highp_u16vec2 v4(v1);
476
477 Error += glm::all(glm::equal(v1, glm::u16vec2(v2))) ? 0 : 1;
478 Error += glm::all(glm::equal(v1, glm::u16vec2(v3))) ? 0 : 1;
479 Error += glm::all(glm::equal(v1, glm::u16vec2(v4))) ? 0 : 1;
480 }
481
482 {
483 glm::u16vec3 v1;
484 glm::lowp_u16vec3 v2(v1);
485 glm::mediump_u16vec3 v3(v1);
486 glm::highp_u16vec3 v4(v1);
487
488 Error += glm::all(glm::equal(v1, glm::u16vec3(v2))) ? 0 : 1;
489 Error += glm::all(glm::equal(v1, glm::u16vec3(v3))) ? 0 : 1;
490 Error += glm::all(glm::equal(v1, glm::u16vec3(v4))) ? 0 : 1;
491 }
492
493 {
494 glm::u16vec4 v1;
495 glm::lowp_u16vec4 v2(v1);
496 glm::mediump_u16vec4 v3(v1);
497 glm::highp_u16vec4 v4(v1);
498
499 Error += glm::all(glm::equal(v1, glm::u16vec4(v2))) ? 0 : 1;
500 Error += glm::all(glm::equal(v1, glm::u16vec4(v3))) ? 0 : 1;
501 Error += glm::all(glm::equal(v1, glm::u16vec4(v4))) ? 0 : 1;
502 }
503
504 {
505 glm::u32vec2 v1;
506 glm::lowp_u32vec2 v2(v1);
507 glm::mediump_u32vec2 v3(v1);
508 glm::highp_u32vec2 v4(v1);
509
510 Error += glm::all(glm::equal(v1, glm::u32vec2(v2))) ? 0 : 1;
511 Error += glm::all(glm::equal(v1, glm::u32vec2(v3))) ? 0 : 1;
512 Error += glm::all(glm::equal(v1, glm::u32vec2(v4))) ? 0 : 1;
513 }
514
515 {
516 glm::u32vec3 v1;
517 glm::lowp_u32vec3 v2(v1);
518 glm::mediump_u32vec3 v3(v1);
519 glm::highp_u32vec3 v4(v1);
520
521 Error += glm::all(glm::equal(v1, glm::u32vec3(v2))) ? 0 : 1;
522 Error += glm::all(glm::equal(v1, glm::u32vec3(v3))) ? 0 : 1;
523 Error += glm::all(glm::equal(v1, glm::u32vec3(v4))) ? 0 : 1;
524 }
525
526 {
527 glm::u32vec4 v1;
528 glm::lowp_u32vec4 v2(v1);
529 glm::mediump_u32vec4 v3(v1);
530 glm::highp_u32vec4 v4(v1);
531
532 Error += glm::all(glm::equal(v1, glm::u32vec4(v2))) ? 0 : 1;
533 Error += glm::all(glm::equal(v1, glm::u32vec4(v3))) ? 0 : 1;
534 Error += glm::all(glm::equal(v1, glm::u32vec4(v4))) ? 0 : 1;
535 }
536
537 {
538 glm::u64vec2 v1;
539 glm::lowp_u64vec2 v2(v1);
540 glm::mediump_u64vec2 v3(v1);
541 glm::highp_u64vec2 v4(v1);
542
543 Error += glm::all(glm::equal(v1, glm::u64vec2(v2))) ? 0 : 1;
544 Error += glm::all(glm::equal(v1, glm::u64vec2(v3))) ? 0 : 1;
545 Error += glm::all(glm::equal(v1, glm::u64vec2(v4))) ? 0 : 1;
546 }
547
548 {
549 glm::u64vec3 v1;
550 glm::lowp_u64vec3 v2(v1);
551 glm::mediump_u64vec3 v3(v1);
552 glm::highp_u64vec3 v4(v1);
553
554 Error += glm::all(glm::equal(v1, glm::u64vec3(v2))) ? 0 : 1;
555 Error += glm::all(glm::equal(v1, glm::u64vec3(v3))) ? 0 : 1;
556 Error += glm::all(glm::equal(v1, glm::u64vec3(v4))) ? 0 : 1;
557 }
558
559 {
560 glm::u64vec4 v1;
561 glm::lowp_u64vec4 v2(v1);
562 glm::mediump_u64vec4 v3(v1);
563 glm::highp_u64vec4 v4(v1);
564
565 Error += glm::all(glm::equal(v1, glm::u64vec4(v2))) ? 0 : 1;
566 Error += glm::all(glm::equal(v1, glm::u64vec4(v3))) ? 0 : 1;
567 Error += glm::all(glm::equal(v1, glm::u64vec4(v4))) ? 0 : 1;
568 }
569
570 return Error;
571 }
572
test_fmat_size()573 static int test_fmat_size()
574 {
575 int Error(0);
576 Error += sizeof(glm::mat2) != 16;
577 Error += sizeof(glm::mat3) != 36;
578 Error += sizeof(glm::mat4) != 64;
579 Error += sizeof(glm::mat2x2) != 16;
580 Error += sizeof(glm::mat2x3) != 24;
581 Error += sizeof(glm::mat2x4) != 32;
582 Error += sizeof(glm::mat3x2) != 24;
583 Error += sizeof(glm::mat3x3) != 36;
584 Error += sizeof(glm::mat3x4) != 48;
585 Error += sizeof(glm::mat4x2) != 32;
586 Error += sizeof(glm::mat4x3) != 48;
587 Error += sizeof(glm::mat4x4) != 64;
588
589 Error += sizeof(glm::fmat2) != 16;
590 Error += sizeof(glm::fmat3) != 36;
591 Error += sizeof(glm::fmat4) != 64;
592 Error += sizeof(glm::fmat2x2) != 16;
593 Error += sizeof(glm::fmat2x3) != 24;
594 Error += sizeof(glm::fmat2x4) != 32;
595 Error += sizeof(glm::fmat3x2) != 24;
596 Error += sizeof(glm::fmat3x3) != 36;
597 Error += sizeof(glm::fmat3x4) != 48;
598 Error += sizeof(glm::fmat4x2) != 32;
599 Error += sizeof(glm::fmat4x3) != 48;
600 Error += sizeof(glm::fmat4x4) != 64;
601
602 Error += sizeof(glm::f32mat2) != 16;
603 Error += sizeof(glm::f32mat3) != 36;
604 Error += sizeof(glm::f32mat4) != 64;
605 Error += sizeof(glm::f32mat2x2) != 16;
606 Error += sizeof(glm::f32mat2x3) != 24;
607 Error += sizeof(glm::f32mat2x4) != 32;
608 Error += sizeof(glm::f32mat3x2) != 24;
609 Error += sizeof(glm::f32mat3x3) != 36;
610 Error += sizeof(glm::f32mat3x4) != 48;
611 Error += sizeof(glm::f32mat4x2) != 32;
612 Error += sizeof(glm::f32mat4x3) != 48;
613 Error += sizeof(glm::f32mat4x4) != 64;
614
615
616 Error += sizeof(glm::lowp_mat2) != 16;
617 Error += sizeof(glm::lowp_mat3) != 36;
618 Error += sizeof(glm::lowp_mat4) != 64;
619 Error += sizeof(glm::lowp_mat2x2) != 16;
620 Error += sizeof(glm::lowp_mat2x3) != 24;
621 Error += sizeof(glm::lowp_mat2x4) != 32;
622 Error += sizeof(glm::lowp_mat3x2) != 24;
623 Error += sizeof(glm::lowp_mat3x3) != 36;
624 Error += sizeof(glm::lowp_mat3x4) != 48;
625 Error += sizeof(glm::lowp_mat4x2) != 32;
626 Error += sizeof(glm::lowp_mat4x3) != 48;
627 Error += sizeof(glm::lowp_mat4x4) != 64;
628
629 Error += sizeof(glm::lowp_fmat2) != 16;
630 Error += sizeof(glm::lowp_fmat3) != 36;
631 Error += sizeof(glm::lowp_fmat4) != 64;
632 Error += sizeof(glm::lowp_fmat2x2) != 16;
633 Error += sizeof(glm::lowp_fmat2x3) != 24;
634 Error += sizeof(glm::lowp_fmat2x4) != 32;
635 Error += sizeof(glm::lowp_fmat3x2) != 24;
636 Error += sizeof(glm::lowp_fmat3x3) != 36;
637 Error += sizeof(glm::lowp_fmat3x4) != 48;
638 Error += sizeof(glm::lowp_fmat4x2) != 32;
639 Error += sizeof(glm::lowp_fmat4x3) != 48;
640 Error += sizeof(glm::lowp_fmat4x4) != 64;
641
642 Error += sizeof(glm::lowp_f32mat2) != 16;
643 Error += sizeof(glm::lowp_f32mat3) != 36;
644 Error += sizeof(glm::lowp_f32mat4) != 64;
645 Error += sizeof(glm::lowp_f32mat2x2) != 16;
646 Error += sizeof(glm::lowp_f32mat2x3) != 24;
647 Error += sizeof(glm::lowp_f32mat2x4) != 32;
648 Error += sizeof(glm::lowp_f32mat3x2) != 24;
649 Error += sizeof(glm::lowp_f32mat3x3) != 36;
650 Error += sizeof(glm::lowp_f32mat3x4) != 48;
651 Error += sizeof(glm::lowp_f32mat4x2) != 32;
652 Error += sizeof(glm::lowp_f32mat4x3) != 48;
653 Error += sizeof(glm::lowp_f32mat4x4) != 64;
654
655
656 Error += sizeof(glm::mediump_mat2) != 16;
657 Error += sizeof(glm::mediump_mat3) != 36;
658 Error += sizeof(glm::mediump_mat4) != 64;
659 Error += sizeof(glm::mediump_mat2x2) != 16;
660 Error += sizeof(glm::mediump_mat2x3) != 24;
661 Error += sizeof(glm::mediump_mat2x4) != 32;
662 Error += sizeof(glm::mediump_mat3x2) != 24;
663 Error += sizeof(glm::mediump_mat3x3) != 36;
664 Error += sizeof(glm::mediump_mat3x4) != 48;
665 Error += sizeof(glm::mediump_mat4x2) != 32;
666 Error += sizeof(glm::mediump_mat4x3) != 48;
667 Error += sizeof(glm::mediump_mat4x4) != 64;
668
669 Error += sizeof(glm::mediump_fmat2) != 16;
670 Error += sizeof(glm::mediump_fmat3) != 36;
671 Error += sizeof(glm::mediump_fmat4) != 64;
672 Error += sizeof(glm::mediump_fmat2x2) != 16;
673 Error += sizeof(glm::mediump_fmat2x3) != 24;
674 Error += sizeof(glm::mediump_fmat2x4) != 32;
675 Error += sizeof(glm::mediump_fmat3x2) != 24;
676 Error += sizeof(glm::mediump_fmat3x3) != 36;
677 Error += sizeof(glm::mediump_fmat3x4) != 48;
678 Error += sizeof(glm::mediump_fmat4x2) != 32;
679 Error += sizeof(glm::mediump_fmat4x3) != 48;
680 Error += sizeof(glm::mediump_fmat4x4) != 64;
681
682 Error += sizeof(glm::mediump_f32mat2) != 16;
683 Error += sizeof(glm::mediump_f32mat3) != 36;
684 Error += sizeof(glm::mediump_f32mat4) != 64;
685 Error += sizeof(glm::mediump_f32mat2x2) != 16;
686 Error += sizeof(glm::mediump_f32mat2x3) != 24;
687 Error += sizeof(glm::mediump_f32mat2x4) != 32;
688 Error += sizeof(glm::mediump_f32mat3x2) != 24;
689 Error += sizeof(glm::mediump_f32mat3x3) != 36;
690 Error += sizeof(glm::mediump_f32mat3x4) != 48;
691 Error += sizeof(glm::mediump_f32mat4x2) != 32;
692 Error += sizeof(glm::mediump_f32mat4x3) != 48;
693 Error += sizeof(glm::mediump_f32mat4x4) != 64;
694
695
696 Error += sizeof(glm::highp_mat2) != 16;
697 Error += sizeof(glm::highp_mat3) != 36;
698 Error += sizeof(glm::highp_mat4) != 64;
699 Error += sizeof(glm::highp_mat2x2) != 16;
700 Error += sizeof(glm::highp_mat2x3) != 24;
701 Error += sizeof(glm::highp_mat2x4) != 32;
702 Error += sizeof(glm::highp_mat3x2) != 24;
703 Error += sizeof(glm::highp_mat3x3) != 36;
704 Error += sizeof(glm::highp_mat3x4) != 48;
705 Error += sizeof(glm::highp_mat4x2) != 32;
706 Error += sizeof(glm::highp_mat4x3) != 48;
707 Error += sizeof(glm::highp_mat4x4) != 64;
708
709 Error += sizeof(glm::highp_fmat2) != 16;
710 Error += sizeof(glm::highp_fmat3) != 36;
711 Error += sizeof(glm::highp_fmat4) != 64;
712 Error += sizeof(glm::highp_fmat2x2) != 16;
713 Error += sizeof(glm::highp_fmat2x3) != 24;
714 Error += sizeof(glm::highp_fmat2x4) != 32;
715 Error += sizeof(glm::highp_fmat3x2) != 24;
716 Error += sizeof(glm::highp_fmat3x3) != 36;
717 Error += sizeof(glm::highp_fmat3x4) != 48;
718 Error += sizeof(glm::highp_fmat4x2) != 32;
719 Error += sizeof(glm::highp_fmat4x3) != 48;
720 Error += sizeof(glm::highp_fmat4x4) != 64;
721
722 Error += sizeof(glm::highp_f32mat2) != 16;
723 Error += sizeof(glm::highp_f32mat3) != 36;
724 Error += sizeof(glm::highp_f32mat4) != 64;
725 Error += sizeof(glm::highp_f32mat2x2) != 16;
726 Error += sizeof(glm::highp_f32mat2x3) != 24;
727 Error += sizeof(glm::highp_f32mat2x4) != 32;
728 Error += sizeof(glm::highp_f32mat3x2) != 24;
729 Error += sizeof(glm::highp_f32mat3x3) != 36;
730 Error += sizeof(glm::highp_f32mat3x4) != 48;
731 Error += sizeof(glm::highp_f32mat4x2) != 32;
732 Error += sizeof(glm::highp_f32mat4x3) != 48;
733 Error += sizeof(glm::highp_f32mat4x4) != 64;
734 return Error;
735 }
736
test_dmat_size()737 static int test_dmat_size()
738 {
739 int Error(0);
740 Error += sizeof(glm::f64mat2) != 32;
741 Error += sizeof(glm::f64mat3) != 72;
742 Error += sizeof(glm::f64mat4) != 128;
743 Error += sizeof(glm::f64mat2x2) != 32;
744 Error += sizeof(glm::f64mat2x3) != 48;
745 Error += sizeof(glm::f64mat2x4) != 64;
746 Error += sizeof(glm::f64mat3x2) != 48;
747 Error += sizeof(glm::f64mat3x3) != 72;
748 Error += sizeof(glm::f64mat3x4) != 96;
749 Error += sizeof(glm::f64mat4x2) != 64;
750 Error += sizeof(glm::f64mat4x3) != 96;
751 Error += sizeof(glm::f64mat4x4) != 128;
752
753 Error += sizeof(glm::lowp_f64mat2) != 32;
754 Error += sizeof(glm::lowp_f64mat3) != 72;
755 Error += sizeof(glm::lowp_f64mat4) != 128;
756 Error += sizeof(glm::lowp_f64mat2x2) != 32;
757 Error += sizeof(glm::lowp_f64mat2x3) != 48;
758 Error += sizeof(glm::lowp_f64mat2x4) != 64;
759 Error += sizeof(glm::lowp_f64mat3x2) != 48;
760 Error += sizeof(glm::lowp_f64mat3x3) != 72;
761 Error += sizeof(glm::lowp_f64mat3x4) != 96;
762 Error += sizeof(glm::lowp_f64mat4x2) != 64;
763 Error += sizeof(glm::lowp_f64mat4x3) != 96;
764 Error += sizeof(glm::lowp_f64mat4x4) != 128;
765
766 Error += sizeof(glm::mediump_f64mat2) != 32;
767 Error += sizeof(glm::mediump_f64mat3) != 72;
768 Error += sizeof(glm::mediump_f64mat4) != 128;
769 Error += sizeof(glm::mediump_f64mat2x2) != 32;
770 Error += sizeof(glm::mediump_f64mat2x3) != 48;
771 Error += sizeof(glm::mediump_f64mat2x4) != 64;
772 Error += sizeof(glm::mediump_f64mat3x2) != 48;
773 Error += sizeof(glm::mediump_f64mat3x3) != 72;
774 Error += sizeof(glm::mediump_f64mat3x4) != 96;
775 Error += sizeof(glm::mediump_f64mat4x2) != 64;
776 Error += sizeof(glm::mediump_f64mat4x3) != 96;
777 Error += sizeof(glm::mediump_f64mat4x4) != 128;
778
779 Error += sizeof(glm::highp_f64mat2) != 32;
780 Error += sizeof(glm::highp_f64mat3) != 72;
781 Error += sizeof(glm::highp_f64mat4) != 128;
782 Error += sizeof(glm::highp_f64mat2x2) != 32;
783 Error += sizeof(glm::highp_f64mat2x3) != 48;
784 Error += sizeof(glm::highp_f64mat2x4) != 64;
785 Error += sizeof(glm::highp_f64mat3x2) != 48;
786 Error += sizeof(glm::highp_f64mat3x3) != 72;
787 Error += sizeof(glm::highp_f64mat3x4) != 96;
788 Error += sizeof(glm::highp_f64mat4x2) != 64;
789 Error += sizeof(glm::highp_f64mat4x3) != 96;
790 Error += sizeof(glm::highp_f64mat4x4) != 128;
791
792 return Error;
793 }
794
test_quat_size()795 static int test_quat_size()
796 {
797 int Error = 0;
798 Error += sizeof(glm::f32quat) != 16;
799 Error += sizeof(glm::f64quat) != 32;
800
801 Error += sizeof(glm::lowp_f32quat) != 16;
802 Error += sizeof(glm::lowp_f64quat) != 32;
803
804 Error += sizeof(glm::mediump_f32quat) != 16;
805 Error += sizeof(glm::mediump_f64quat) != 32;
806
807 Error += sizeof(glm::highp_f32quat) != 16;
808 Error += sizeof(glm::highp_f64quat) != 32;
809 return Error;
810 }
811
test_quat_precision()812 static int test_quat_precision()
813 {
814 int Error(0);
815
816 {
817 glm::f32quat q1;
818 glm::lowp_f32quat qA(q1);
819 glm::mediump_f32quat qB(q1);
820 glm::highp_f32quat qC(q1);
821 glm::f32quat q2(qA);
822 glm::f32quat q3(qB);
823 glm::f32quat q4(qC);
824
825 Error += glm::all(glm::equal(q1, q2)) ? 0 : 1;
826 Error += glm::all(glm::equal(q1, q3)) ? 0 : 1;
827 Error += glm::all(glm::equal(q1, q4)) ? 0 : 1;
828 }
829
830 return Error;
831 }
832
test_fvec_conversion()833 static int test_fvec_conversion()
834 {
835 int Error(0);
836
837 {
838 glm::highp_vec4 a = glm::vec4(1, 2, 3, 4);
839 glm::mediump_vec4 b = glm::vec4(1, 2, 3, 4);
840 glm::lowp_vec4 c = b;
841 glm::mediump_vec4 d = c;
842 glm::lowp_ivec4 e = glm::ivec4(d);
843 glm::lowp_ivec3 f = glm::ivec3(e);
844
845 Error += glm::all(glm::equal(b, d)) ? 0 : 1;
846 }
847
848 return Error;
849 }
850
test_openmp()851 static int test_openmp()
852 {
853 std::vector<glm::u8vec3> VectorA(1000);
854 std::vector<glm::u8vec3> VectorB(1000);
855 std::vector<glm::u8vec3> VectorC(1000);
856
857 for (std::size_t i = 0; i < VectorA.size(); ++i)
858 {
859 VectorA[i] = glm::u8vec3(1, 1, 1);
860 VectorB[i] = glm::u8vec3(1, 1, 1);
861 }
862
863 #pragma omp parallel for default(none) shared(VectorA, VectorB, VectorC)
864 for (int i = 0; i < VectorC.size(); ++i)
865 {
866 VectorC[i] = VectorA[i] + VectorB[i];
867 }
868
869 return 0;
870 }
871
main()872 int main()
873 {
874 int Error(0);
875 Error += test_openmp();
876 Error += test_scalar_size();
877 Error += test_fvec_size();
878 Error += test_fvec_precision();
879 Error += test_fvec_conversion();
880 Error += test_dvec_precision();
881 Error += test_ivec_size();
882 Error += test_ivec_precision();
883 Error += test_uvec_size();
884 Error += test_uvec_precision();
885 Error += test_fmat_size();
886 Error += test_dmat_size();
887 Error += test_quat_size();
888 Error += test_quat_precision();
889 return Error;
890 }
891