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