Merge "Add triangle edge guardband for Tex2D lookup diff" am: da231f19ab
[platform/upstream/VK-GL-CTS.git] / data / gles2 / shaders / conversions.test
1 # WARNING: This file is auto-generated. Do NOT modify it manually, but rather
2 # modify the generating script file. Otherwise changes will be lost!
3
4 group scalar_to_scalar "Scalar to Scalar Conversions"
5
6         case float_to_float
7                 values
8                 {
9                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
10                         output float out0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
11                 }
12
13                 both ""
14                         precision mediump float;
15                         precision mediump int;
16
17                         ${DECLARATIONS}
18
19                         void main()
20                         {
21                                 ${SETUP}
22                                 out0 = float(in0);
23                                 ${OUTPUT}
24                         }
25                 ""
26         end
27
28         case float_to_int
29                 values
30                 {
31                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
32                         output int out0 = [ 0 | 1 | 2 | 3 | 0 | -8 | -20 | 36 ];
33                 }
34
35                 both ""
36                         precision mediump float;
37                         precision mediump int;
38
39                         ${DECLARATIONS}
40
41                         void main()
42                         {
43                                 ${SETUP}
44                                 out0 = int(in0);
45                                 ${OUTPUT}
46                         }
47                 ""
48         end
49
50         case float_to_bool
51                 values
52                 {
53                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
54                         output bool out0 = [ false | true | true | true | true | true | true | true ];
55                 }
56
57                 both ""
58                         precision mediump float;
59                         precision mediump int;
60
61                         ${DECLARATIONS}
62
63                         void main()
64                         {
65                                 ${SETUP}
66                                 out0 = bool(in0);
67                                 ${OUTPUT}
68                         }
69                 ""
70         end
71
72         case int_to_float
73                 values
74                 {
75                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
76                         output float out0 = [ 0.0 | 1.0 | 2.0 | 5.0 | 8.0 | 11.0 | -12.0 | -66.0 | -192.0 | 255.0 ];
77                 }
78
79                 both ""
80                         precision mediump float;
81                         precision mediump int;
82
83                         ${DECLARATIONS}
84
85                         void main()
86                         {
87                                 ${SETUP}
88                                 out0 = float(in0);
89                                 ${OUTPUT}
90                         }
91                 ""
92         end
93
94         case int_to_int
95                 values
96                 {
97                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
98                         output int out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
99                 }
100
101                 both ""
102                         precision mediump float;
103                         precision mediump int;
104
105                         ${DECLARATIONS}
106
107                         void main()
108                         {
109                                 ${SETUP}
110                                 out0 = int(in0);
111                                 ${OUTPUT}
112                         }
113                 ""
114         end
115
116         case int_to_bool
117                 values
118                 {
119                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
120                         output bool out0 = [ false | true | true | true | true | true | true | true | true | true ];
121                 }
122
123                 both ""
124                         precision mediump float;
125                         precision mediump int;
126
127                         ${DECLARATIONS}
128
129                         void main()
130                         {
131                                 ${SETUP}
132                                 out0 = bool(in0);
133                                 ${OUTPUT}
134                         }
135                 ""
136         end
137
138         case bool_to_float
139                 values
140                 {
141                         input bool in0 = [ true | false ];
142                         output float out0 = [ 1.0 | 0.0 ];
143                 }
144
145                 both ""
146                         precision mediump float;
147                         precision mediump int;
148
149                         ${DECLARATIONS}
150
151                         void main()
152                         {
153                                 ${SETUP}
154                                 out0 = float(in0);
155                                 ${OUTPUT}
156                         }
157                 ""
158         end
159
160         case bool_to_int
161                 values
162                 {
163                         input bool in0 = [ true | false ];
164                         output int out0 = [ 1 | 0 ];
165                 }
166
167                 both ""
168                         precision mediump float;
169                         precision mediump int;
170
171                         ${DECLARATIONS}
172
173                         void main()
174                         {
175                                 ${SETUP}
176                                 out0 = int(in0);
177                                 ${OUTPUT}
178                         }
179                 ""
180         end
181
182         case bool_to_bool
183                 values
184                 {
185                         input bool in0 = [ true | false ];
186                         output bool out0 = [ true | false ];
187                 }
188
189                 both ""
190                         precision mediump float;
191                         precision mediump int;
192
193                         ${DECLARATIONS}
194
195                         void main()
196                         {
197                                 ${SETUP}
198                                 out0 = bool(in0);
199                                 ${OUTPUT}
200                         }
201                 ""
202         end
203
204
205 end # scalar_to_scalar
206 group scalar_to_vector "Scalar to Vector Conversions"
207
208         case float_to_vec2
209                 values
210                 {
211                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
212                         output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(3.5, 3.5) | vec2(-0.5, -0.5) | vec2(-8.25, -8.25) | vec2(-20.125, -20.125) | vec2(36.8125, 36.8125) ];
213                 }
214
215                 both ""
216                         precision mediump float;
217                         precision mediump int;
218
219                         ${DECLARATIONS}
220
221                         void main()
222                         {
223                                 ${SETUP}
224                                 out0 = vec2(in0);
225                                 ${OUTPUT}
226                         }
227                 ""
228         end
229
230         case float_to_vec3
231                 values
232                 {
233                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
234                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(3.5, 3.5, 3.5) | vec3(-0.5, -0.5, -0.5) | vec3(-8.25, -8.25, -8.25) | vec3(-20.125, -20.125, -20.125) | vec3(36.8125, 36.8125, 36.8125) ];
235                 }
236
237                 both ""
238                         precision mediump float;
239                         precision mediump int;
240
241                         ${DECLARATIONS}
242
243                         void main()
244                         {
245                                 ${SETUP}
246                                 out0 = vec3(in0);
247                                 ${OUTPUT}
248                         }
249                 ""
250         end
251
252         case float_to_vec4
253                 values
254                 {
255                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
256                         output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.5, 3.5, 3.5, 3.5) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-8.25, -8.25, -8.25, -8.25) | vec4(-20.125, -20.125, -20.125, -20.125) | vec4(36.8125, 36.8125, 36.8125, 36.8125) ];
257                 }
258
259                 both ""
260                         precision mediump float;
261                         precision mediump int;
262
263                         ${DECLARATIONS}
264
265                         void main()
266                         {
267                                 ${SETUP}
268                                 out0 = vec4(in0);
269                                 ${OUTPUT}
270                         }
271                 ""
272         end
273
274         case float_to_ivec2
275                 values
276                 {
277                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
278                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(3, 3) | ivec2(0, 0) | ivec2(-8, -8) | ivec2(-20, -20) | ivec2(36, 36) ];
279                 }
280
281                 both ""
282                         precision mediump float;
283                         precision mediump int;
284
285                         ${DECLARATIONS}
286
287                         void main()
288                         {
289                                 ${SETUP}
290                                 out0 = ivec2(in0);
291                                 ${OUTPUT}
292                         }
293                 ""
294         end
295
296         case float_to_ivec3
297                 values
298                 {
299                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
300                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(0, 0, 0) | ivec3(-8, -8, -8) | ivec3(-20, -20, -20) | ivec3(36, 36, 36) ];
301                 }
302
303                 both ""
304                         precision mediump float;
305                         precision mediump int;
306
307                         ${DECLARATIONS}
308
309                         void main()
310                         {
311                                 ${SETUP}
312                                 out0 = ivec3(in0);
313                                 ${OUTPUT}
314                         }
315                 ""
316         end
317
318         case float_to_ivec4
319                 values
320                 {
321                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
322                         output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(0, 0, 0, 0) | ivec4(-8, -8, -8, -8) | ivec4(-20, -20, -20, -20) | ivec4(36, 36, 36, 36) ];
323                 }
324
325                 both ""
326                         precision mediump float;
327                         precision mediump int;
328
329                         ${DECLARATIONS}
330
331                         void main()
332                         {
333                                 ${SETUP}
334                                 out0 = ivec4(in0);
335                                 ${OUTPUT}
336                         }
337                 ""
338         end
339
340         case float_to_bvec2
341                 values
342                 {
343                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
344                         output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
345                 }
346
347                 both ""
348                         precision mediump float;
349                         precision mediump int;
350
351                         ${DECLARATIONS}
352
353                         void main()
354                         {
355                                 ${SETUP}
356                                 out0 = bvec2(in0);
357                                 ${OUTPUT}
358                         }
359                 ""
360         end
361
362         case float_to_bvec3
363                 values
364                 {
365                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
366                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
367                 }
368
369                 both ""
370                         precision mediump float;
371                         precision mediump int;
372
373                         ${DECLARATIONS}
374
375                         void main()
376                         {
377                                 ${SETUP}
378                                 out0 = bvec3(in0);
379                                 ${OUTPUT}
380                         }
381                 ""
382         end
383
384         case float_to_bvec4
385                 values
386                 {
387                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
388                         output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
389                 }
390
391                 both ""
392                         precision mediump float;
393                         precision mediump int;
394
395                         ${DECLARATIONS}
396
397                         void main()
398                         {
399                                 ${SETUP}
400                                 out0 = bvec4(in0);
401                                 ${OUTPUT}
402                         }
403                 ""
404         end
405
406         case int_to_vec2
407                 values
408                 {
409                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
410                         output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(5.0, 5.0) | vec2(8.0, 8.0) | vec2(11.0, 11.0) | vec2(-12.0, -12.0) | vec2(-66.0, -66.0) | vec2(-192.0, -192.0) | vec2(255.0, 255.0) ];
411                 }
412
413                 both ""
414                         precision mediump float;
415                         precision mediump int;
416
417                         ${DECLARATIONS}
418
419                         void main()
420                         {
421                                 ${SETUP}
422                                 out0 = vec2(in0);
423                                 ${OUTPUT}
424                         }
425                 ""
426         end
427
428         case int_to_vec3
429                 values
430                 {
431                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
432                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(5.0, 5.0, 5.0) | vec3(8.0, 8.0, 8.0) | vec3(11.0, 11.0, 11.0) | vec3(-12.0, -12.0, -12.0) | vec3(-66.0, -66.0, -66.0) | vec3(-192.0, -192.0, -192.0) | vec3(255.0, 255.0, 255.0) ];
433                 }
434
435                 both ""
436                         precision mediump float;
437                         precision mediump int;
438
439                         ${DECLARATIONS}
440
441                         void main()
442                         {
443                                 ${SETUP}
444                                 out0 = vec3(in0);
445                                 ${OUTPUT}
446                         }
447                 ""
448         end
449
450         case int_to_vec4
451                 values
452                 {
453                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
454                         output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(5.0, 5.0, 5.0, 5.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(11.0, 11.0, 11.0, 11.0) | vec4(-12.0, -12.0, -12.0, -12.0) | vec4(-66.0, -66.0, -66.0, -66.0) | vec4(-192.0, -192.0, -192.0, -192.0) | vec4(255.0, 255.0, 255.0, 255.0) ];
455                 }
456
457                 both ""
458                         precision mediump float;
459                         precision mediump int;
460
461                         ${DECLARATIONS}
462
463                         void main()
464                         {
465                                 ${SETUP}
466                                 out0 = vec4(in0);
467                                 ${OUTPUT}
468                         }
469                 ""
470         end
471
472         case int_to_ivec2
473                 values
474                 {
475                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
476                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(5, 5) | ivec2(8, 8) | ivec2(11, 11) | ivec2(-12, -12) | ivec2(-66, -66) | ivec2(-192, -192) | ivec2(255, 255) ];
477                 }
478
479                 both ""
480                         precision mediump float;
481                         precision mediump int;
482
483                         ${DECLARATIONS}
484
485                         void main()
486                         {
487                                 ${SETUP}
488                                 out0 = ivec2(in0);
489                                 ${OUTPUT}
490                         }
491                 ""
492         end
493
494         case int_to_ivec3
495                 values
496                 {
497                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
498                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(5, 5, 5) | ivec3(8, 8, 8) | ivec3(11, 11, 11) | ivec3(-12, -12, -12) | ivec3(-66, -66, -66) | ivec3(-192, -192, -192) | ivec3(255, 255, 255) ];
499                 }
500
501                 both ""
502                         precision mediump float;
503                         precision mediump int;
504
505                         ${DECLARATIONS}
506
507                         void main()
508                         {
509                                 ${SETUP}
510                                 out0 = ivec3(in0);
511                                 ${OUTPUT}
512                         }
513                 ""
514         end
515
516         case int_to_ivec4
517                 values
518                 {
519                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
520                         output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(5, 5, 5, 5) | ivec4(8, 8, 8, 8) | ivec4(11, 11, 11, 11) | ivec4(-12, -12, -12, -12) | ivec4(-66, -66, -66, -66) | ivec4(-192, -192, -192, -192) | ivec4(255, 255, 255, 255) ];
521                 }
522
523                 both ""
524                         precision mediump float;
525                         precision mediump int;
526
527                         ${DECLARATIONS}
528
529                         void main()
530                         {
531                                 ${SETUP}
532                                 out0 = ivec4(in0);
533                                 ${OUTPUT}
534                         }
535                 ""
536         end
537
538         case int_to_bvec2
539                 values
540                 {
541                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
542                         output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
543                 }
544
545                 both ""
546                         precision mediump float;
547                         precision mediump int;
548
549                         ${DECLARATIONS}
550
551                         void main()
552                         {
553                                 ${SETUP}
554                                 out0 = bvec2(in0);
555                                 ${OUTPUT}
556                         }
557                 ""
558         end
559
560         case int_to_bvec3
561                 values
562                 {
563                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
564                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
565                 }
566
567                 both ""
568                         precision mediump float;
569                         precision mediump int;
570
571                         ${DECLARATIONS}
572
573                         void main()
574                         {
575                                 ${SETUP}
576                                 out0 = bvec3(in0);
577                                 ${OUTPUT}
578                         }
579                 ""
580         end
581
582         case int_to_bvec4
583                 values
584                 {
585                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
586                         output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
587                 }
588
589                 both ""
590                         precision mediump float;
591                         precision mediump int;
592
593                         ${DECLARATIONS}
594
595                         void main()
596                         {
597                                 ${SETUP}
598                                 out0 = bvec4(in0);
599                                 ${OUTPUT}
600                         }
601                 ""
602         end
603
604         case bool_to_vec2
605                 values
606                 {
607                         input bool in0 = [ true | false ];
608                         output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
609                 }
610
611                 both ""
612                         precision mediump float;
613                         precision mediump int;
614
615                         ${DECLARATIONS}
616
617                         void main()
618                         {
619                                 ${SETUP}
620                                 out0 = vec2(in0);
621                                 ${OUTPUT}
622                         }
623                 ""
624         end
625
626         case bool_to_vec3
627                 values
628                 {
629                         input bool in0 = [ true | false ];
630                         output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
631                 }
632
633                 both ""
634                         precision mediump float;
635                         precision mediump int;
636
637                         ${DECLARATIONS}
638
639                         void main()
640                         {
641                                 ${SETUP}
642                                 out0 = vec3(in0);
643                                 ${OUTPUT}
644                         }
645                 ""
646         end
647
648         case bool_to_vec4
649                 values
650                 {
651                         input bool in0 = [ true | false ];
652                         output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
653                 }
654
655                 both ""
656                         precision mediump float;
657                         precision mediump int;
658
659                         ${DECLARATIONS}
660
661                         void main()
662                         {
663                                 ${SETUP}
664                                 out0 = vec4(in0);
665                                 ${OUTPUT}
666                         }
667                 ""
668         end
669
670         case bool_to_ivec2
671                 values
672                 {
673                         input bool in0 = [ true | false ];
674                         output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ];
675                 }
676
677                 both ""
678                         precision mediump float;
679                         precision mediump int;
680
681                         ${DECLARATIONS}
682
683                         void main()
684                         {
685                                 ${SETUP}
686                                 out0 = ivec2(in0);
687                                 ${OUTPUT}
688                         }
689                 ""
690         end
691
692         case bool_to_ivec3
693                 values
694                 {
695                         input bool in0 = [ true | false ];
696                         output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
697                 }
698
699                 both ""
700                         precision mediump float;
701                         precision mediump int;
702
703                         ${DECLARATIONS}
704
705                         void main()
706                         {
707                                 ${SETUP}
708                                 out0 = ivec3(in0);
709                                 ${OUTPUT}
710                         }
711                 ""
712         end
713
714         case bool_to_ivec4
715                 values
716                 {
717                         input bool in0 = [ true | false ];
718                         output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
719                 }
720
721                 both ""
722                         precision mediump float;
723                         precision mediump int;
724
725                         ${DECLARATIONS}
726
727                         void main()
728                         {
729                                 ${SETUP}
730                                 out0 = ivec4(in0);
731                                 ${OUTPUT}
732                         }
733                 ""
734         end
735
736         case bool_to_bvec2
737                 values
738                 {
739                         input bool in0 = [ true | false ];
740                         output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ];
741                 }
742
743                 both ""
744                         precision mediump float;
745                         precision mediump int;
746
747                         ${DECLARATIONS}
748
749                         void main()
750                         {
751                                 ${SETUP}
752                                 out0 = bvec2(in0);
753                                 ${OUTPUT}
754                         }
755                 ""
756         end
757
758         case bool_to_bvec3
759                 values
760                 {
761                         input bool in0 = [ true | false ];
762                         output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ];
763                 }
764
765                 both ""
766                         precision mediump float;
767                         precision mediump int;
768
769                         ${DECLARATIONS}
770
771                         void main()
772                         {
773                                 ${SETUP}
774                                 out0 = bvec3(in0);
775                                 ${OUTPUT}
776                         }
777                 ""
778         end
779
780         case bool_to_bvec4
781                 values
782                 {
783                         input bool in0 = [ true | false ];
784                         output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
785                 }
786
787                 both ""
788                         precision mediump float;
789                         precision mediump int;
790
791                         ${DECLARATIONS}
792
793                         void main()
794                         {
795                                 ${SETUP}
796                                 out0 = bvec4(in0);
797                                 ${OUTPUT}
798                         }
799                 ""
800         end
801
802
803 end # scalar_to_vector
804 group vector_to_scalar "Vector to Scalar Conversions"
805
806         case vec2_to_float
807                 values
808                 {
809                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
810                         output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
811                 }
812
813                 both ""
814                         precision mediump float;
815                         precision mediump int;
816
817                         ${DECLARATIONS}
818
819                         void main()
820                         {
821                                 ${SETUP}
822                                 out0 = float(in0);
823                                 ${OUTPUT}
824                         }
825                 ""
826         end
827
828         case vec2_to_int
829                 values
830                 {
831                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
832                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
833                 }
834
835                 both ""
836                         precision mediump float;
837                         precision mediump int;
838
839                         ${DECLARATIONS}
840
841                         void main()
842                         {
843                                 ${SETUP}
844                                 out0 = int(in0);
845                                 ${OUTPUT}
846                         }
847                 ""
848         end
849
850         case vec2_to_bool
851                 values
852                 {
853                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
854                         output bool out0 = [ false | true | true | true | true ];
855                 }
856
857                 both ""
858                         precision mediump float;
859                         precision mediump int;
860
861                         ${DECLARATIONS}
862
863                         void main()
864                         {
865                                 ${SETUP}
866                                 out0 = bool(in0);
867                                 ${OUTPUT}
868                         }
869                 ""
870         end
871
872         case vec3_to_float
873                 values
874                 {
875                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
876                         output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
877                 }
878
879                 both ""
880                         precision mediump float;
881                         precision mediump int;
882
883                         ${DECLARATIONS}
884
885                         void main()
886                         {
887                                 ${SETUP}
888                                 out0 = float(in0);
889                                 ${OUTPUT}
890                         }
891                 ""
892         end
893
894         case vec3_to_int
895                 values
896                 {
897                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
898                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
899                 }
900
901                 both ""
902                         precision mediump float;
903                         precision mediump int;
904
905                         ${DECLARATIONS}
906
907                         void main()
908                         {
909                                 ${SETUP}
910                                 out0 = int(in0);
911                                 ${OUTPUT}
912                         }
913                 ""
914         end
915
916         case vec3_to_bool
917                 values
918                 {
919                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
920                         output bool out0 = [ false | true | true | true | true ];
921                 }
922
923                 both ""
924                         precision mediump float;
925                         precision mediump int;
926
927                         ${DECLARATIONS}
928
929                         void main()
930                         {
931                                 ${SETUP}
932                                 out0 = bool(in0);
933                                 ${OUTPUT}
934                         }
935                 ""
936         end
937
938         case vec4_to_float
939                 values
940                 {
941                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
942                         output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
943                 }
944
945                 both ""
946                         precision mediump float;
947                         precision mediump int;
948
949                         ${DECLARATIONS}
950
951                         void main()
952                         {
953                                 ${SETUP}
954                                 out0 = float(in0);
955                                 ${OUTPUT}
956                         }
957                 ""
958         end
959
960         case vec4_to_int
961                 values
962                 {
963                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
964                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
965                 }
966
967                 both ""
968                         precision mediump float;
969                         precision mediump int;
970
971                         ${DECLARATIONS}
972
973                         void main()
974                         {
975                                 ${SETUP}
976                                 out0 = int(in0);
977                                 ${OUTPUT}
978                         }
979                 ""
980         end
981
982         case vec4_to_bool
983                 values
984                 {
985                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
986                         output bool out0 = [ false | true | true | true | true ];
987                 }
988
989                 both ""
990                         precision mediump float;
991                         precision mediump int;
992
993                         ${DECLARATIONS}
994
995                         void main()
996                         {
997                                 ${SETUP}
998                                 out0 = bool(in0);
999                                 ${OUTPUT}
1000                         }
1001                 ""
1002         end
1003
1004         case ivec2_to_float
1005                 values
1006                 {
1007                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
1008                         output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
1009                 }
1010
1011                 both ""
1012                         precision mediump float;
1013                         precision mediump int;
1014
1015                         ${DECLARATIONS}
1016
1017                         void main()
1018                         {
1019                                 ${SETUP}
1020                                 out0 = float(in0);
1021                                 ${OUTPUT}
1022                         }
1023                 ""
1024         end
1025
1026         case ivec2_to_int
1027                 values
1028                 {
1029                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
1030                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
1031                 }
1032
1033                 both ""
1034                         precision mediump float;
1035                         precision mediump int;
1036
1037                         ${DECLARATIONS}
1038
1039                         void main()
1040                         {
1041                                 ${SETUP}
1042                                 out0 = int(in0);
1043                                 ${OUTPUT}
1044                         }
1045                 ""
1046         end
1047
1048         case ivec2_to_bool
1049                 values
1050                 {
1051                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
1052                         output bool out0 = [ false | true | false | true | false ];
1053                 }
1054
1055                 both ""
1056                         precision mediump float;
1057                         precision mediump int;
1058
1059                         ${DECLARATIONS}
1060
1061                         void main()
1062                         {
1063                                 ${SETUP}
1064                                 out0 = bool(in0);
1065                                 ${OUTPUT}
1066                         }
1067                 ""
1068         end
1069
1070         case ivec3_to_float
1071                 values
1072                 {
1073                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
1074                         output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
1075                 }
1076
1077                 both ""
1078                         precision mediump float;
1079                         precision mediump int;
1080
1081                         ${DECLARATIONS}
1082
1083                         void main()
1084                         {
1085                                 ${SETUP}
1086                                 out0 = float(in0);
1087                                 ${OUTPUT}
1088                         }
1089                 ""
1090         end
1091
1092         case ivec3_to_int
1093                 values
1094                 {
1095                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
1096                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
1097                 }
1098
1099                 both ""
1100                         precision mediump float;
1101                         precision mediump int;
1102
1103                         ${DECLARATIONS}
1104
1105                         void main()
1106                         {
1107                                 ${SETUP}
1108                                 out0 = int(in0);
1109                                 ${OUTPUT}
1110                         }
1111                 ""
1112         end
1113
1114         case ivec3_to_bool
1115                 values
1116                 {
1117                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
1118                         output bool out0 = [ false | true | false | true | false ];
1119                 }
1120
1121                 both ""
1122                         precision mediump float;
1123                         precision mediump int;
1124
1125                         ${DECLARATIONS}
1126
1127                         void main()
1128                         {
1129                                 ${SETUP}
1130                                 out0 = bool(in0);
1131                                 ${OUTPUT}
1132                         }
1133                 ""
1134         end
1135
1136         case ivec4_to_float
1137                 values
1138                 {
1139                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
1140                         output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
1141                 }
1142
1143                 both ""
1144                         precision mediump float;
1145                         precision mediump int;
1146
1147                         ${DECLARATIONS}
1148
1149                         void main()
1150                         {
1151                                 ${SETUP}
1152                                 out0 = float(in0);
1153                                 ${OUTPUT}
1154                         }
1155                 ""
1156         end
1157
1158         case ivec4_to_int
1159                 values
1160                 {
1161                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
1162                         output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
1163                 }
1164
1165                 both ""
1166                         precision mediump float;
1167                         precision mediump int;
1168
1169                         ${DECLARATIONS}
1170
1171                         void main()
1172                         {
1173                                 ${SETUP}
1174                                 out0 = int(in0);
1175                                 ${OUTPUT}
1176                         }
1177                 ""
1178         end
1179
1180         case ivec4_to_bool
1181                 values
1182                 {
1183                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
1184                         output bool out0 = [ false | true | false | true | false ];
1185                 }
1186
1187                 both ""
1188                         precision mediump float;
1189                         precision mediump int;
1190
1191                         ${DECLARATIONS}
1192
1193                         void main()
1194                         {
1195                                 ${SETUP}
1196                                 out0 = bool(in0);
1197                                 ${OUTPUT}
1198                         }
1199                 ""
1200         end
1201
1202         case bvec2_to_float
1203                 values
1204                 {
1205                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
1206                         output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
1207                 }
1208
1209                 both ""
1210                         precision mediump float;
1211                         precision mediump int;
1212
1213                         ${DECLARATIONS}
1214
1215                         void main()
1216                         {
1217                                 ${SETUP}
1218                                 out0 = float(in0);
1219                                 ${OUTPUT}
1220                         }
1221                 ""
1222         end
1223
1224         case bvec2_to_int
1225                 values
1226                 {
1227                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
1228                         output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
1229                 }
1230
1231                 both ""
1232                         precision mediump float;
1233                         precision mediump int;
1234
1235                         ${DECLARATIONS}
1236
1237                         void main()
1238                         {
1239                                 ${SETUP}
1240                                 out0 = int(in0);
1241                                 ${OUTPUT}
1242                         }
1243                 ""
1244         end
1245
1246         case bvec2_to_bool
1247                 values
1248                 {
1249                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
1250                         output bool out0 = [ true | false | false | true | false ];
1251                 }
1252
1253                 both ""
1254                         precision mediump float;
1255                         precision mediump int;
1256
1257                         ${DECLARATIONS}
1258
1259                         void main()
1260                         {
1261                                 ${SETUP}
1262                                 out0 = bool(in0);
1263                                 ${OUTPUT}
1264                         }
1265                 ""
1266         end
1267
1268         case bvec3_to_float
1269                 values
1270                 {
1271                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
1272                         output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
1273                 }
1274
1275                 both ""
1276                         precision mediump float;
1277                         precision mediump int;
1278
1279                         ${DECLARATIONS}
1280
1281                         void main()
1282                         {
1283                                 ${SETUP}
1284                                 out0 = float(in0);
1285                                 ${OUTPUT}
1286                         }
1287                 ""
1288         end
1289
1290         case bvec3_to_int
1291                 values
1292                 {
1293                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
1294                         output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
1295                 }
1296
1297                 both ""
1298                         precision mediump float;
1299                         precision mediump int;
1300
1301                         ${DECLARATIONS}
1302
1303                         void main()
1304                         {
1305                                 ${SETUP}
1306                                 out0 = int(in0);
1307                                 ${OUTPUT}
1308                         }
1309                 ""
1310         end
1311
1312         case bvec3_to_bool
1313                 values
1314                 {
1315                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
1316                         output bool out0 = [ true | false | false | true | false ];
1317                 }
1318
1319                 both ""
1320                         precision mediump float;
1321                         precision mediump int;
1322
1323                         ${DECLARATIONS}
1324
1325                         void main()
1326                         {
1327                                 ${SETUP}
1328                                 out0 = bool(in0);
1329                                 ${OUTPUT}
1330                         }
1331                 ""
1332         end
1333
1334         case bvec4_to_float
1335                 values
1336                 {
1337                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
1338                         output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
1339                 }
1340
1341                 both ""
1342                         precision mediump float;
1343                         precision mediump int;
1344
1345                         ${DECLARATIONS}
1346
1347                         void main()
1348                         {
1349                                 ${SETUP}
1350                                 out0 = float(in0);
1351                                 ${OUTPUT}
1352                         }
1353                 ""
1354         end
1355
1356         case bvec4_to_int
1357                 values
1358                 {
1359                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
1360                         output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
1361                 }
1362
1363                 both ""
1364                         precision mediump float;
1365                         precision mediump int;
1366
1367                         ${DECLARATIONS}
1368
1369                         void main()
1370                         {
1371                                 ${SETUP}
1372                                 out0 = int(in0);
1373                                 ${OUTPUT}
1374                         }
1375                 ""
1376         end
1377
1378         case bvec4_to_bool
1379                 values
1380                 {
1381                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
1382                         output bool out0 = [ true | false | false | true | false ];
1383                 }
1384
1385                 both ""
1386                         precision mediump float;
1387                         precision mediump int;
1388
1389                         ${DECLARATIONS}
1390
1391                         void main()
1392                         {
1393                                 ${SETUP}
1394                                 out0 = bool(in0);
1395                                 ${OUTPUT}
1396                         }
1397                 ""
1398         end
1399
1400
1401 end # vector_to_scalar
1402 group vector_illegal "Illegal Vector Conversions"
1403
1404         case vec2_to_vec3
1405                 expect compile_fail
1406                 values {}
1407
1408                 both ""
1409                         precision mediump float;
1410                         precision mediump int;
1411
1412                         ${DECLARATIONS}
1413
1414                         void main()
1415                         {
1416                                 ${SETUP}
1417                                 vec2 in0 = vec2(0.0, 0.5);
1418                                 vec3 out0 = vec3(in0);
1419                                 ${OUTPUT}
1420                         }
1421                 ""
1422         end
1423
1424         case vec2_to_ivec3
1425                 expect compile_fail
1426                 values {}
1427
1428                 both ""
1429                         precision mediump float;
1430                         precision mediump int;
1431
1432                         ${DECLARATIONS}
1433
1434                         void main()
1435                         {
1436                                 ${SETUP}
1437                                 vec2 in0 = vec2(0.0, 0.5);
1438                                 ivec3 out0 = ivec3(in0);
1439                                 ${OUTPUT}
1440                         }
1441                 ""
1442         end
1443
1444         case vec2_to_bvec3
1445                 expect compile_fail
1446                 values {}
1447
1448                 both ""
1449                         precision mediump float;
1450                         precision mediump int;
1451
1452                         ${DECLARATIONS}
1453
1454                         void main()
1455                         {
1456                                 ${SETUP}
1457                                 vec2 in0 = vec2(0.0, 0.5);
1458                                 bvec3 out0 = bvec3(in0);
1459                                 ${OUTPUT}
1460                         }
1461                 ""
1462         end
1463
1464         case vec2_to_vec4
1465                 expect compile_fail
1466                 values {}
1467
1468                 both ""
1469                         precision mediump float;
1470                         precision mediump int;
1471
1472                         ${DECLARATIONS}
1473
1474                         void main()
1475                         {
1476                                 ${SETUP}
1477                                 vec2 in0 = vec2(0.0, 0.5);
1478                                 vec4 out0 = vec4(in0);
1479                                 ${OUTPUT}
1480                         }
1481                 ""
1482         end
1483
1484         case vec2_to_ivec4
1485                 expect compile_fail
1486                 values {}
1487
1488                 both ""
1489                         precision mediump float;
1490                         precision mediump int;
1491
1492                         ${DECLARATIONS}
1493
1494                         void main()
1495                         {
1496                                 ${SETUP}
1497                                 vec2 in0 = vec2(0.0, 0.5);
1498                                 ivec4 out0 = ivec4(in0);
1499                                 ${OUTPUT}
1500                         }
1501                 ""
1502         end
1503
1504         case vec2_to_bvec4
1505                 expect compile_fail
1506                 values {}
1507
1508                 both ""
1509                         precision mediump float;
1510                         precision mediump int;
1511
1512                         ${DECLARATIONS}
1513
1514                         void main()
1515                         {
1516                                 ${SETUP}
1517                                 vec2 in0 = vec2(0.0, 0.5);
1518                                 bvec4 out0 = bvec4(in0);
1519                                 ${OUTPUT}
1520                         }
1521                 ""
1522         end
1523
1524         case ivec2_to_vec3
1525                 expect compile_fail
1526                 values {}
1527
1528                 both ""
1529                         precision mediump float;
1530                         precision mediump int;
1531
1532                         ${DECLARATIONS}
1533
1534                         void main()
1535                         {
1536                                 ${SETUP}
1537                                 ivec2 in0 = ivec2(0, 0);
1538                                 vec3 out0 = vec3(in0);
1539                                 ${OUTPUT}
1540                         }
1541                 ""
1542         end
1543
1544         case ivec2_to_ivec3
1545                 expect compile_fail
1546                 values {}
1547
1548                 both ""
1549                         precision mediump float;
1550                         precision mediump int;
1551
1552                         ${DECLARATIONS}
1553
1554                         void main()
1555                         {
1556                                 ${SETUP}
1557                                 ivec2 in0 = ivec2(0, 0);
1558                                 ivec3 out0 = ivec3(in0);
1559                                 ${OUTPUT}
1560                         }
1561                 ""
1562         end
1563
1564         case ivec2_to_bvec3
1565                 expect compile_fail
1566                 values {}
1567
1568                 both ""
1569                         precision mediump float;
1570                         precision mediump int;
1571
1572                         ${DECLARATIONS}
1573
1574                         void main()
1575                         {
1576                                 ${SETUP}
1577                                 ivec2 in0 = ivec2(0, 0);
1578                                 bvec3 out0 = bvec3(in0);
1579                                 ${OUTPUT}
1580                         }
1581                 ""
1582         end
1583
1584         case ivec2_to_vec4
1585                 expect compile_fail
1586                 values {}
1587
1588                 both ""
1589                         precision mediump float;
1590                         precision mediump int;
1591
1592                         ${DECLARATIONS}
1593
1594                         void main()
1595                         {
1596                                 ${SETUP}
1597                                 ivec2 in0 = ivec2(0, 0);
1598                                 vec4 out0 = vec4(in0);
1599                                 ${OUTPUT}
1600                         }
1601                 ""
1602         end
1603
1604         case ivec2_to_ivec4
1605                 expect compile_fail
1606                 values {}
1607
1608                 both ""
1609                         precision mediump float;
1610                         precision mediump int;
1611
1612                         ${DECLARATIONS}
1613
1614                         void main()
1615                         {
1616                                 ${SETUP}
1617                                 ivec2 in0 = ivec2(0, 0);
1618                                 ivec4 out0 = ivec4(in0);
1619                                 ${OUTPUT}
1620                         }
1621                 ""
1622         end
1623
1624         case ivec2_to_bvec4
1625                 expect compile_fail
1626                 values {}
1627
1628                 both ""
1629                         precision mediump float;
1630                         precision mediump int;
1631
1632                         ${DECLARATIONS}
1633
1634                         void main()
1635                         {
1636                                 ${SETUP}
1637                                 ivec2 in0 = ivec2(0, 0);
1638                                 bvec4 out0 = bvec4(in0);
1639                                 ${OUTPUT}
1640                         }
1641                 ""
1642         end
1643
1644         case bvec2_to_vec3
1645                 expect compile_fail
1646                 values {}
1647
1648                 both ""
1649                         precision mediump float;
1650                         precision mediump int;
1651
1652                         ${DECLARATIONS}
1653
1654                         void main()
1655                         {
1656                                 ${SETUP}
1657                                 bvec2 in0 = bvec2(true, false);
1658                                 vec3 out0 = vec3(in0);
1659                                 ${OUTPUT}
1660                         }
1661                 ""
1662         end
1663
1664         case bvec2_to_ivec3
1665                 expect compile_fail
1666                 values {}
1667
1668                 both ""
1669                         precision mediump float;
1670                         precision mediump int;
1671
1672                         ${DECLARATIONS}
1673
1674                         void main()
1675                         {
1676                                 ${SETUP}
1677                                 bvec2 in0 = bvec2(true, false);
1678                                 ivec3 out0 = ivec3(in0);
1679                                 ${OUTPUT}
1680                         }
1681                 ""
1682         end
1683
1684         case bvec2_to_bvec3
1685                 expect compile_fail
1686                 values {}
1687
1688                 both ""
1689                         precision mediump float;
1690                         precision mediump int;
1691
1692                         ${DECLARATIONS}
1693
1694                         void main()
1695                         {
1696                                 ${SETUP}
1697                                 bvec2 in0 = bvec2(true, false);
1698                                 bvec3 out0 = bvec3(in0);
1699                                 ${OUTPUT}
1700                         }
1701                 ""
1702         end
1703
1704         case bvec2_to_vec4
1705                 expect compile_fail
1706                 values {}
1707
1708                 both ""
1709                         precision mediump float;
1710                         precision mediump int;
1711
1712                         ${DECLARATIONS}
1713
1714                         void main()
1715                         {
1716                                 ${SETUP}
1717                                 bvec2 in0 = bvec2(true, false);
1718                                 vec4 out0 = vec4(in0);
1719                                 ${OUTPUT}
1720                         }
1721                 ""
1722         end
1723
1724         case bvec2_to_ivec4
1725                 expect compile_fail
1726                 values {}
1727
1728                 both ""
1729                         precision mediump float;
1730                         precision mediump int;
1731
1732                         ${DECLARATIONS}
1733
1734                         void main()
1735                         {
1736                                 ${SETUP}
1737                                 bvec2 in0 = bvec2(true, false);
1738                                 ivec4 out0 = ivec4(in0);
1739                                 ${OUTPUT}
1740                         }
1741                 ""
1742         end
1743
1744         case bvec2_to_bvec4
1745                 expect compile_fail
1746                 values {}
1747
1748                 both ""
1749                         precision mediump float;
1750                         precision mediump int;
1751
1752                         ${DECLARATIONS}
1753
1754                         void main()
1755                         {
1756                                 ${SETUP}
1757                                 bvec2 in0 = bvec2(true, false);
1758                                 bvec4 out0 = bvec4(in0);
1759                                 ${OUTPUT}
1760                         }
1761                 ""
1762         end
1763
1764         case vec3_to_vec4
1765                 expect compile_fail
1766                 values {}
1767
1768                 both ""
1769                         precision mediump float;
1770                         precision mediump int;
1771
1772                         ${DECLARATIONS}
1773
1774                         void main()
1775                         {
1776                                 ${SETUP}
1777                                 vec3 in0 = vec3(0.0, 0.5, 0.75);
1778                                 vec4 out0 = vec4(in0);
1779                                 ${OUTPUT}
1780                         }
1781                 ""
1782         end
1783
1784         case vec3_to_ivec4
1785                 expect compile_fail
1786                 values {}
1787
1788                 both ""
1789                         precision mediump float;
1790                         precision mediump int;
1791
1792                         ${DECLARATIONS}
1793
1794                         void main()
1795                         {
1796                                 ${SETUP}
1797                                 vec3 in0 = vec3(0.0, 0.5, 0.75);
1798                                 ivec4 out0 = ivec4(in0);
1799                                 ${OUTPUT}
1800                         }
1801                 ""
1802         end
1803
1804         case vec3_to_bvec4
1805                 expect compile_fail
1806                 values {}
1807
1808                 both ""
1809                         precision mediump float;
1810                         precision mediump int;
1811
1812                         ${DECLARATIONS}
1813
1814                         void main()
1815                         {
1816                                 ${SETUP}
1817                                 vec3 in0 = vec3(0.0, 0.5, 0.75);
1818                                 bvec4 out0 = bvec4(in0);
1819                                 ${OUTPUT}
1820                         }
1821                 ""
1822         end
1823
1824         case ivec3_to_vec4
1825                 expect compile_fail
1826                 values {}
1827
1828                 both ""
1829                         precision mediump float;
1830                         precision mediump int;
1831
1832                         ${DECLARATIONS}
1833
1834                         void main()
1835                         {
1836                                 ${SETUP}
1837                                 ivec3 in0 = ivec3(0, 0, 0);
1838                                 vec4 out0 = vec4(in0);
1839                                 ${OUTPUT}
1840                         }
1841                 ""
1842         end
1843
1844         case ivec3_to_ivec4
1845                 expect compile_fail
1846                 values {}
1847
1848                 both ""
1849                         precision mediump float;
1850                         precision mediump int;
1851
1852                         ${DECLARATIONS}
1853
1854                         void main()
1855                         {
1856                                 ${SETUP}
1857                                 ivec3 in0 = ivec3(0, 0, 0);
1858                                 ivec4 out0 = ivec4(in0);
1859                                 ${OUTPUT}
1860                         }
1861                 ""
1862         end
1863
1864         case ivec3_to_bvec4
1865                 expect compile_fail
1866                 values {}
1867
1868                 both ""
1869                         precision mediump float;
1870                         precision mediump int;
1871
1872                         ${DECLARATIONS}
1873
1874                         void main()
1875                         {
1876                                 ${SETUP}
1877                                 ivec3 in0 = ivec3(0, 0, 0);
1878                                 bvec4 out0 = bvec4(in0);
1879                                 ${OUTPUT}
1880                         }
1881                 ""
1882         end
1883
1884         case bvec3_to_vec4
1885                 expect compile_fail
1886                 values {}
1887
1888                 both ""
1889                         precision mediump float;
1890                         precision mediump int;
1891
1892                         ${DECLARATIONS}
1893
1894                         void main()
1895                         {
1896                                 ${SETUP}
1897                                 bvec3 in0 = bvec3(true, false, false);
1898                                 vec4 out0 = vec4(in0);
1899                                 ${OUTPUT}
1900                         }
1901                 ""
1902         end
1903
1904         case bvec3_to_ivec4
1905                 expect compile_fail
1906                 values {}
1907
1908                 both ""
1909                         precision mediump float;
1910                         precision mediump int;
1911
1912                         ${DECLARATIONS}
1913
1914                         void main()
1915                         {
1916                                 ${SETUP}
1917                                 bvec3 in0 = bvec3(true, false, false);
1918                                 ivec4 out0 = ivec4(in0);
1919                                 ${OUTPUT}
1920                         }
1921                 ""
1922         end
1923
1924         case bvec3_to_bvec4
1925                 expect compile_fail
1926                 values {}
1927
1928                 both ""
1929                         precision mediump float;
1930                         precision mediump int;
1931
1932                         ${DECLARATIONS}
1933
1934                         void main()
1935                         {
1936                                 ${SETUP}
1937                                 bvec3 in0 = bvec3(true, false, false);
1938                                 bvec4 out0 = bvec4(in0);
1939                                 ${OUTPUT}
1940                         }
1941                 ""
1942         end
1943
1944
1945 end # vector_illegal
1946 group vector_to_vector "Vector to Vector Conversions"
1947
1948         case vec4_to_vec4
1949                 values
1950                 {
1951                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
1952                         output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
1953                 }
1954
1955                 both ""
1956                         precision mediump float;
1957                         precision mediump int;
1958
1959                         ${DECLARATIONS}
1960
1961                         void main()
1962                         {
1963                                 ${SETUP}
1964                                 out0 = vec4(in0);
1965                                 ${OUTPUT}
1966                         }
1967                 ""
1968         end
1969
1970         case vec4_to_vec3
1971                 values
1972                 {
1973                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
1974                         output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1975                 }
1976
1977                 both ""
1978                         precision mediump float;
1979                         precision mediump int;
1980
1981                         ${DECLARATIONS}
1982
1983                         void main()
1984                         {
1985                                 ${SETUP}
1986                                 out0 = vec3(in0);
1987                                 ${OUTPUT}
1988                         }
1989                 ""
1990         end
1991
1992         case vec4_to_vec2
1993                 values
1994                 {
1995                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
1996                         output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1997                 }
1998
1999                 both ""
2000                         precision mediump float;
2001                         precision mediump int;
2002
2003                         ${DECLARATIONS}
2004
2005                         void main()
2006                         {
2007                                 ${SETUP}
2008                                 out0 = vec2(in0);
2009                                 ${OUTPUT}
2010                         }
2011                 ""
2012         end
2013
2014         case vec4_to_ivec4
2015                 values
2016                 {
2017                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2018                         output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2019                 }
2020
2021                 both ""
2022                         precision mediump float;
2023                         precision mediump int;
2024
2025                         ${DECLARATIONS}
2026
2027                         void main()
2028                         {
2029                                 ${SETUP}
2030                                 out0 = ivec4(in0);
2031                                 ${OUTPUT}
2032                         }
2033                 ""
2034         end
2035
2036         case vec4_to_ivec3
2037                 values
2038                 {
2039                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2040                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2041                 }
2042
2043                 both ""
2044                         precision mediump float;
2045                         precision mediump int;
2046
2047                         ${DECLARATIONS}
2048
2049                         void main()
2050                         {
2051                                 ${SETUP}
2052                                 out0 = ivec3(in0);
2053                                 ${OUTPUT}
2054                         }
2055                 ""
2056         end
2057
2058         case vec4_to_ivec2
2059                 values
2060                 {
2061                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2062                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
2063                 }
2064
2065                 both ""
2066                         precision mediump float;
2067                         precision mediump int;
2068
2069                         ${DECLARATIONS}
2070
2071                         void main()
2072                         {
2073                                 ${SETUP}
2074                                 out0 = ivec2(in0);
2075                                 ${OUTPUT}
2076                         }
2077                 ""
2078         end
2079
2080         case vec4_to_bvec4
2081                 values
2082                 {
2083                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2084                         output bvec4 out0 = [ bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
2085                 }
2086
2087                 both ""
2088                         precision mediump float;
2089                         precision mediump int;
2090
2091                         ${DECLARATIONS}
2092
2093                         void main()
2094                         {
2095                                 ${SETUP}
2096                                 out0 = bvec4(in0);
2097                                 ${OUTPUT}
2098                         }
2099                 ""
2100         end
2101
2102         case vec4_to_bvec3
2103                 values
2104                 {
2105                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2106                         output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
2107                 }
2108
2109                 both ""
2110                         precision mediump float;
2111                         precision mediump int;
2112
2113                         ${DECLARATIONS}
2114
2115                         void main()
2116                         {
2117                                 ${SETUP}
2118                                 out0 = bvec3(in0);
2119                                 ${OUTPUT}
2120                         }
2121                 ""
2122         end
2123
2124         case vec4_to_bvec2
2125                 values
2126                 {
2127                         input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2128                         output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
2129                 }
2130
2131                 both ""
2132                         precision mediump float;
2133                         precision mediump int;
2134
2135                         ${DECLARATIONS}
2136
2137                         void main()
2138                         {
2139                                 ${SETUP}
2140                                 out0 = bvec2(in0);
2141                                 ${OUTPUT}
2142                         }
2143                 ""
2144         end
2145
2146         case ivec4_to_vec4
2147                 values
2148                 {
2149                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2150                         output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, -2.0, -4.0, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
2151                 }
2152
2153                 both ""
2154                         precision mediump float;
2155                         precision mediump int;
2156
2157                         ${DECLARATIONS}
2158
2159                         void main()
2160                         {
2161                                 ${SETUP}
2162                                 out0 = vec4(in0);
2163                                 ${OUTPUT}
2164                         }
2165                 ""
2166         end
2167
2168         case ivec4_to_vec3
2169                 values
2170                 {
2171                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2172                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ];
2173                 }
2174
2175                 both ""
2176                         precision mediump float;
2177                         precision mediump int;
2178
2179                         ${DECLARATIONS}
2180
2181                         void main()
2182                         {
2183                                 ${SETUP}
2184                                 out0 = vec3(in0);
2185                                 ${OUTPUT}
2186                         }
2187                 ""
2188         end
2189
2190         case ivec4_to_vec2
2191                 values
2192                 {
2193                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2194                         output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
2195                 }
2196
2197                 both ""
2198                         precision mediump float;
2199                         precision mediump int;
2200
2201                         ${DECLARATIONS}
2202
2203                         void main()
2204                         {
2205                                 ${SETUP}
2206                                 out0 = vec2(in0);
2207                                 ${OUTPUT}
2208                         }
2209                 ""
2210         end
2211
2212         case ivec4_to_ivec4
2213                 values
2214                 {
2215                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2216                         output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2217                 }
2218
2219                 both ""
2220                         precision mediump float;
2221                         precision mediump int;
2222
2223                         ${DECLARATIONS}
2224
2225                         void main()
2226                         {
2227                                 ${SETUP}
2228                                 out0 = ivec4(in0);
2229                                 ${OUTPUT}
2230                         }
2231                 ""
2232         end
2233
2234         case ivec4_to_ivec3
2235                 values
2236                 {
2237                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2238                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2239                 }
2240
2241                 both ""
2242                         precision mediump float;
2243                         precision mediump int;
2244
2245                         ${DECLARATIONS}
2246
2247                         void main()
2248                         {
2249                                 ${SETUP}
2250                                 out0 = ivec3(in0);
2251                                 ${OUTPUT}
2252                         }
2253                 ""
2254         end
2255
2256         case ivec4_to_ivec2
2257                 values
2258                 {
2259                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2260                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
2261                 }
2262
2263                 both ""
2264                         precision mediump float;
2265                         precision mediump int;
2266
2267                         ${DECLARATIONS}
2268
2269                         void main()
2270                         {
2271                                 ${SETUP}
2272                                 out0 = ivec2(in0);
2273                                 ${OUTPUT}
2274                         }
2275                 ""
2276         end
2277
2278         case ivec4_to_bvec4
2279                 values
2280                 {
2281                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2282                         output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2283                 }
2284
2285                 both ""
2286                         precision mediump float;
2287                         precision mediump int;
2288
2289                         ${DECLARATIONS}
2290
2291                         void main()
2292                         {
2293                                 ${SETUP}
2294                                 out0 = bvec4(in0);
2295                                 ${OUTPUT}
2296                         }
2297                 ""
2298         end
2299
2300         case ivec4_to_bvec3
2301                 values
2302                 {
2303                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2304                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
2305                 }
2306
2307                 both ""
2308                         precision mediump float;
2309                         precision mediump int;
2310
2311                         ${DECLARATIONS}
2312
2313                         void main()
2314                         {
2315                                 ${SETUP}
2316                                 out0 = bvec3(in0);
2317                                 ${OUTPUT}
2318                         }
2319                 ""
2320         end
2321
2322         case ivec4_to_bvec2
2323                 values
2324                 {
2325                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
2326                         output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
2327                 }
2328
2329                 both ""
2330                         precision mediump float;
2331                         precision mediump int;
2332
2333                         ${DECLARATIONS}
2334
2335                         void main()
2336                         {
2337                                 ${SETUP}
2338                                 out0 = bvec2(in0);
2339                                 ${OUTPUT}
2340                         }
2341                 ""
2342         end
2343
2344         case bvec4_to_vec4
2345                 values
2346                 {
2347                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2348                         output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 1.0) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(0.0, 1.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
2349                 }
2350
2351                 both ""
2352                         precision mediump float;
2353                         precision mediump int;
2354
2355                         ${DECLARATIONS}
2356
2357                         void main()
2358                         {
2359                                 ${SETUP}
2360                                 out0 = vec4(in0);
2361                                 ${OUTPUT}
2362                         }
2363                 ""
2364         end
2365
2366         case bvec4_to_vec3
2367                 values
2368                 {
2369                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2370                         output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
2371                 }
2372
2373                 both ""
2374                         precision mediump float;
2375                         precision mediump int;
2376
2377                         ${DECLARATIONS}
2378
2379                         void main()
2380                         {
2381                                 ${SETUP}
2382                                 out0 = vec3(in0);
2383                                 ${OUTPUT}
2384                         }
2385                 ""
2386         end
2387
2388         case bvec4_to_vec2
2389                 values
2390                 {
2391                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2392                         output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
2393                 }
2394
2395                 both ""
2396                         precision mediump float;
2397                         precision mediump int;
2398
2399                         ${DECLARATIONS}
2400
2401                         void main()
2402                         {
2403                                 ${SETUP}
2404                                 out0 = vec2(in0);
2405                                 ${OUTPUT}
2406                         }
2407                 ""
2408         end
2409
2410         case bvec4_to_ivec4
2411                 values
2412                 {
2413                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2414                         output ivec4 out0 = [ ivec4(1, 0, 0, 1) | ivec4(0, 0, 0, 1) | ivec4(0, 1, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
2415                 }
2416
2417                 both ""
2418                         precision mediump float;
2419                         precision mediump int;
2420
2421                         ${DECLARATIONS}
2422
2423                         void main()
2424                         {
2425                                 ${SETUP}
2426                                 out0 = ivec4(in0);
2427                                 ${OUTPUT}
2428                         }
2429                 ""
2430         end
2431
2432         case bvec4_to_ivec3
2433                 values
2434                 {
2435                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2436                         output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
2437                 }
2438
2439                 both ""
2440                         precision mediump float;
2441                         precision mediump int;
2442
2443                         ${DECLARATIONS}
2444
2445                         void main()
2446                         {
2447                                 ${SETUP}
2448                                 out0 = ivec3(in0);
2449                                 ${OUTPUT}
2450                         }
2451                 ""
2452         end
2453
2454         case bvec4_to_ivec2
2455                 values
2456                 {
2457                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2458                         output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
2459                 }
2460
2461                 both ""
2462                         precision mediump float;
2463                         precision mediump int;
2464
2465                         ${DECLARATIONS}
2466
2467                         void main()
2468                         {
2469                                 ${SETUP}
2470                                 out0 = ivec2(in0);
2471                                 ${OUTPUT}
2472                         }
2473                 ""
2474         end
2475
2476         case bvec4_to_bvec4
2477                 values
2478                 {
2479                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2480                         output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2481                 }
2482
2483                 both ""
2484                         precision mediump float;
2485                         precision mediump int;
2486
2487                         ${DECLARATIONS}
2488
2489                         void main()
2490                         {
2491                                 ${SETUP}
2492                                 out0 = bvec4(in0);
2493                                 ${OUTPUT}
2494                         }
2495                 ""
2496         end
2497
2498         case bvec4_to_bvec3
2499                 values
2500                 {
2501                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2502                         output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2503                 }
2504
2505                 both ""
2506                         precision mediump float;
2507                         precision mediump int;
2508
2509                         ${DECLARATIONS}
2510
2511                         void main()
2512                         {
2513                                 ${SETUP}
2514                                 out0 = bvec3(in0);
2515                                 ${OUTPUT}
2516                         }
2517                 ""
2518         end
2519
2520         case bvec4_to_bvec2
2521                 values
2522                 {
2523                         input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
2524                         output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
2525                 }
2526
2527                 both ""
2528                         precision mediump float;
2529                         precision mediump int;
2530
2531                         ${DECLARATIONS}
2532
2533                         void main()
2534                         {
2535                                 ${SETUP}
2536                                 out0 = bvec2(in0);
2537                                 ${OUTPUT}
2538                         }
2539                 ""
2540         end
2541
2542         case vec3_to_vec3
2543                 values
2544                 {
2545                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2546                         output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2547                 }
2548
2549                 both ""
2550                         precision mediump float;
2551                         precision mediump int;
2552
2553                         ${DECLARATIONS}
2554
2555                         void main()
2556                         {
2557                                 ${SETUP}
2558                                 out0 = vec3(in0);
2559                                 ${OUTPUT}
2560                         }
2561                 ""
2562         end
2563
2564         case vec3_to_vec2
2565                 values
2566                 {
2567                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2568                         output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
2569                 }
2570
2571                 both ""
2572                         precision mediump float;
2573                         precision mediump int;
2574
2575                         ${DECLARATIONS}
2576
2577                         void main()
2578                         {
2579                                 ${SETUP}
2580                                 out0 = vec2(in0);
2581                                 ${OUTPUT}
2582                         }
2583                 ""
2584         end
2585
2586         case vec3_to_ivec3
2587                 values
2588                 {
2589                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2590                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2591                 }
2592
2593                 both ""
2594                         precision mediump float;
2595                         precision mediump int;
2596
2597                         ${DECLARATIONS}
2598
2599                         void main()
2600                         {
2601                                 ${SETUP}
2602                                 out0 = ivec3(in0);
2603                                 ${OUTPUT}
2604                         }
2605                 ""
2606         end
2607
2608         case vec3_to_ivec2
2609                 values
2610                 {
2611                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2612                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
2613                 }
2614
2615                 both ""
2616                         precision mediump float;
2617                         precision mediump int;
2618
2619                         ${DECLARATIONS}
2620
2621                         void main()
2622                         {
2623                                 ${SETUP}
2624                                 out0 = ivec2(in0);
2625                                 ${OUTPUT}
2626                         }
2627                 ""
2628         end
2629
2630         case vec3_to_bvec3
2631                 values
2632                 {
2633                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2634                         output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
2635                 }
2636
2637                 both ""
2638                         precision mediump float;
2639                         precision mediump int;
2640
2641                         ${DECLARATIONS}
2642
2643                         void main()
2644                         {
2645                                 ${SETUP}
2646                                 out0 = bvec3(in0);
2647                                 ${OUTPUT}
2648                         }
2649                 ""
2650         end
2651
2652         case vec3_to_bvec2
2653                 values
2654                 {
2655                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2656                         output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
2657                 }
2658
2659                 both ""
2660                         precision mediump float;
2661                         precision mediump int;
2662
2663                         ${DECLARATIONS}
2664
2665                         void main()
2666                         {
2667                                 ${SETUP}
2668                                 out0 = bvec2(in0);
2669                                 ${OUTPUT}
2670                         }
2671                 ""
2672         end
2673
2674         case ivec3_to_vec3
2675                 values
2676                 {
2677                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2678                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ];
2679                 }
2680
2681                 both ""
2682                         precision mediump float;
2683                         precision mediump int;
2684
2685                         ${DECLARATIONS}
2686
2687                         void main()
2688                         {
2689                                 ${SETUP}
2690                                 out0 = vec3(in0);
2691                                 ${OUTPUT}
2692                         }
2693                 ""
2694         end
2695
2696         case ivec3_to_vec2
2697                 values
2698                 {
2699                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2700                         output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
2701                 }
2702
2703                 both ""
2704                         precision mediump float;
2705                         precision mediump int;
2706
2707                         ${DECLARATIONS}
2708
2709                         void main()
2710                         {
2711                                 ${SETUP}
2712                                 out0 = vec2(in0);
2713                                 ${OUTPUT}
2714                         }
2715                 ""
2716         end
2717
2718         case ivec3_to_ivec3
2719                 values
2720                 {
2721                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2722                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2723                 }
2724
2725                 both ""
2726                         precision mediump float;
2727                         precision mediump int;
2728
2729                         ${DECLARATIONS}
2730
2731                         void main()
2732                         {
2733                                 ${SETUP}
2734                                 out0 = ivec3(in0);
2735                                 ${OUTPUT}
2736                         }
2737                 ""
2738         end
2739
2740         case ivec3_to_ivec2
2741                 values
2742                 {
2743                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2744                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
2745                 }
2746
2747                 both ""
2748                         precision mediump float;
2749                         precision mediump int;
2750
2751                         ${DECLARATIONS}
2752
2753                         void main()
2754                         {
2755                                 ${SETUP}
2756                                 out0 = ivec2(in0);
2757                                 ${OUTPUT}
2758                         }
2759                 ""
2760         end
2761
2762         case ivec3_to_bvec3
2763                 values
2764                 {
2765                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2766                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
2767                 }
2768
2769                 both ""
2770                         precision mediump float;
2771                         precision mediump int;
2772
2773                         ${DECLARATIONS}
2774
2775                         void main()
2776                         {
2777                                 ${SETUP}
2778                                 out0 = bvec3(in0);
2779                                 ${OUTPUT}
2780                         }
2781                 ""
2782         end
2783
2784         case ivec3_to_bvec2
2785                 values
2786                 {
2787                         input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
2788                         output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
2789                 }
2790
2791                 both ""
2792                         precision mediump float;
2793                         precision mediump int;
2794
2795                         ${DECLARATIONS}
2796
2797                         void main()
2798                         {
2799                                 ${SETUP}
2800                                 out0 = bvec2(in0);
2801                                 ${OUTPUT}
2802                         }
2803                 ""
2804         end
2805
2806         case bvec3_to_vec3
2807                 values
2808                 {
2809                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2810                         output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
2811                 }
2812
2813                 both ""
2814                         precision mediump float;
2815                         precision mediump int;
2816
2817                         ${DECLARATIONS}
2818
2819                         void main()
2820                         {
2821                                 ${SETUP}
2822                                 out0 = vec3(in0);
2823                                 ${OUTPUT}
2824                         }
2825                 ""
2826         end
2827
2828         case bvec3_to_vec2
2829                 values
2830                 {
2831                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2832                         output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
2833                 }
2834
2835                 both ""
2836                         precision mediump float;
2837                         precision mediump int;
2838
2839                         ${DECLARATIONS}
2840
2841                         void main()
2842                         {
2843                                 ${SETUP}
2844                                 out0 = vec2(in0);
2845                                 ${OUTPUT}
2846                         }
2847                 ""
2848         end
2849
2850         case bvec3_to_ivec3
2851                 values
2852                 {
2853                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2854                         output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
2855                 }
2856
2857                 both ""
2858                         precision mediump float;
2859                         precision mediump int;
2860
2861                         ${DECLARATIONS}
2862
2863                         void main()
2864                         {
2865                                 ${SETUP}
2866                                 out0 = ivec3(in0);
2867                                 ${OUTPUT}
2868                         }
2869                 ""
2870         end
2871
2872         case bvec3_to_ivec2
2873                 values
2874                 {
2875                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2876                         output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
2877                 }
2878
2879                 both ""
2880                         precision mediump float;
2881                         precision mediump int;
2882
2883                         ${DECLARATIONS}
2884
2885                         void main()
2886                         {
2887                                 ${SETUP}
2888                                 out0 = ivec2(in0);
2889                                 ${OUTPUT}
2890                         }
2891                 ""
2892         end
2893
2894         case bvec3_to_bvec3
2895                 values
2896                 {
2897                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2898                         output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2899                 }
2900
2901                 both ""
2902                         precision mediump float;
2903                         precision mediump int;
2904
2905                         ${DECLARATIONS}
2906
2907                         void main()
2908                         {
2909                                 ${SETUP}
2910                                 out0 = bvec3(in0);
2911                                 ${OUTPUT}
2912                         }
2913                 ""
2914         end
2915
2916         case bvec3_to_bvec2
2917                 values
2918                 {
2919                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
2920                         output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
2921                 }
2922
2923                 both ""
2924                         precision mediump float;
2925                         precision mediump int;
2926
2927                         ${DECLARATIONS}
2928
2929                         void main()
2930                         {
2931                                 ${SETUP}
2932                                 out0 = bvec2(in0);
2933                                 ${OUTPUT}
2934                         }
2935                 ""
2936         end
2937
2938         case vec2_to_vec2
2939                 values
2940                 {
2941                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
2942                         output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
2943                 }
2944
2945                 both ""
2946                         precision mediump float;
2947                         precision mediump int;
2948
2949                         ${DECLARATIONS}
2950
2951                         void main()
2952                         {
2953                                 ${SETUP}
2954                                 out0 = vec2(in0);
2955                                 ${OUTPUT}
2956                         }
2957                 ""
2958         end
2959
2960         case vec2_to_ivec2
2961                 values
2962                 {
2963                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
2964                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
2965                 }
2966
2967                 both ""
2968                         precision mediump float;
2969                         precision mediump int;
2970
2971                         ${DECLARATIONS}
2972
2973                         void main()
2974                         {
2975                                 ${SETUP}
2976                                 out0 = ivec2(in0);
2977                                 ${OUTPUT}
2978                         }
2979                 ""
2980         end
2981
2982         case vec2_to_bvec2
2983                 values
2984                 {
2985                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
2986                         output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
2987                 }
2988
2989                 both ""
2990                         precision mediump float;
2991                         precision mediump int;
2992
2993                         ${DECLARATIONS}
2994
2995                         void main()
2996                         {
2997                                 ${SETUP}
2998                                 out0 = bvec2(in0);
2999                                 ${OUTPUT}
3000                         }
3001                 ""
3002         end
3003
3004         case ivec2_to_vec2
3005                 values
3006                 {
3007                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
3008                         output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
3009                 }
3010
3011                 both ""
3012                         precision mediump float;
3013                         precision mediump int;
3014
3015                         ${DECLARATIONS}
3016
3017                         void main()
3018                         {
3019                                 ${SETUP}
3020                                 out0 = vec2(in0);
3021                                 ${OUTPUT}
3022                         }
3023                 ""
3024         end
3025
3026         case ivec2_to_ivec2
3027                 values
3028                 {
3029                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
3030                         output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
3031                 }
3032
3033                 both ""
3034                         precision mediump float;
3035                         precision mediump int;
3036
3037                         ${DECLARATIONS}
3038
3039                         void main()
3040                         {
3041                                 ${SETUP}
3042                                 out0 = ivec2(in0);
3043                                 ${OUTPUT}
3044                         }
3045                 ""
3046         end
3047
3048         case ivec2_to_bvec2
3049                 values
3050                 {
3051                         input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
3052                         output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3053                 }
3054
3055                 both ""
3056                         precision mediump float;
3057                         precision mediump int;
3058
3059                         ${DECLARATIONS}
3060
3061                         void main()
3062                         {
3063                                 ${SETUP}
3064                                 out0 = bvec2(in0);
3065                                 ${OUTPUT}
3066                         }
3067                 ""
3068         end
3069
3070         case bvec2_to_vec2
3071                 values
3072                 {
3073                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3074                         output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
3075                 }
3076
3077                 both ""
3078                         precision mediump float;
3079                         precision mediump int;
3080
3081                         ${DECLARATIONS}
3082
3083                         void main()
3084                         {
3085                                 ${SETUP}
3086                                 out0 = vec2(in0);
3087                                 ${OUTPUT}
3088                         }
3089                 ""
3090         end
3091
3092         case bvec2_to_ivec2
3093                 values
3094                 {
3095                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3096                         output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
3097                 }
3098
3099                 both ""
3100                         precision mediump float;
3101                         precision mediump int;
3102
3103                         ${DECLARATIONS}
3104
3105                         void main()
3106                         {
3107                                 ${SETUP}
3108                                 out0 = ivec2(in0);
3109                                 ${OUTPUT}
3110                         }
3111                 ""
3112         end
3113
3114         case bvec2_to_bvec2
3115                 values
3116                 {
3117                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3118                         output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3119                 }
3120
3121                 both ""
3122                         precision mediump float;
3123                         precision mediump int;
3124
3125                         ${DECLARATIONS}
3126
3127                         void main()
3128                         {
3129                                 ${SETUP}
3130                                 out0 = bvec2(in0);
3131                                 ${OUTPUT}
3132                         }
3133                 ""
3134         end
3135
3136
3137 end # vector_to_vector
3138 group scalar_to_matrix "Scalar to Matrix Conversions"
3139
3140         case float_to_mat4
3141                 values
3142                 {
3143                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
3144                         output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5) | mat4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25) | mat4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125) | mat4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125) ];
3145                 }
3146
3147                 both ""
3148                         precision mediump float;
3149                         precision mediump int;
3150
3151                         ${DECLARATIONS}
3152
3153                         void main()
3154                         {
3155                                 ${SETUP}
3156                                 out0 = mat4(in0);
3157                                 ${OUTPUT}
3158                         }
3159                 ""
3160         end
3161
3162         case float_to_mat3
3163                 values
3164                 {
3165                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
3166                         output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5) | mat3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5) | mat3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25) | mat3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125) | mat3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125) ];
3167                 }
3168
3169                 both ""
3170                         precision mediump float;
3171                         precision mediump int;
3172
3173                         ${DECLARATIONS}
3174
3175                         void main()
3176                         {
3177                                 ${SETUP}
3178                                 out0 = mat3(in0);
3179                                 ${OUTPUT}
3180                         }
3181                 ""
3182         end
3183
3184         case float_to_mat2
3185                 values
3186                 {
3187                         input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
3188                         output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.5, 0.0, 0.0, 3.5) | mat2(-0.5, 0.0, 0.0, -0.5) | mat2(-8.25, 0.0, 0.0, -8.25) | mat2(-20.125, 0.0, 0.0, -20.125) | mat2(36.8125, 0.0, 0.0, 36.8125) ];
3189                 }
3190
3191                 both ""
3192                         precision mediump float;
3193                         precision mediump int;
3194
3195                         ${DECLARATIONS}
3196
3197                         void main()
3198                         {
3199                                 ${SETUP}
3200                                 out0 = mat2(in0);
3201                                 ${OUTPUT}
3202                         }
3203                 ""
3204         end
3205
3206         case int_to_mat4
3207                 values
3208                 {
3209                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
3210                         output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0) | mat4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0) | mat4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0) | mat4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ];
3211                 }
3212
3213                 both ""
3214                         precision mediump float;
3215                         precision mediump int;
3216
3217                         ${DECLARATIONS}
3218
3219                         void main()
3220                         {
3221                                 ${SETUP}
3222                                 out0 = mat4(in0);
3223                                 ${OUTPUT}
3224                         }
3225                 ""
3226         end
3227
3228         case int_to_mat3
3229                 values
3230                 {
3231                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
3232                         output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0) | mat3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0) | mat3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0) | mat3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ];
3233                 }
3234
3235                 both ""
3236                         precision mediump float;
3237                         precision mediump int;
3238
3239                         ${DECLARATIONS}
3240
3241                         void main()
3242                         {
3243                                 ${SETUP}
3244                                 out0 = mat3(in0);
3245                                 ${OUTPUT}
3246                         }
3247                 ""
3248         end
3249
3250         case int_to_mat2
3251                 values
3252                 {
3253                         input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
3254                         output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(5.0, 0.0, 0.0, 5.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(11.0, 0.0, 0.0, 11.0) | mat2(-12.0, 0.0, 0.0, -12.0) | mat2(-66.0, 0.0, 0.0, -66.0) | mat2(-192.0, 0.0, 0.0, -192.0) | mat2(255.0, 0.0, 0.0, 255.0) ];
3255                 }
3256
3257                 both ""
3258                         precision mediump float;
3259                         precision mediump int;
3260
3261                         ${DECLARATIONS}
3262
3263                         void main()
3264                         {
3265                                 ${SETUP}
3266                                 out0 = mat2(in0);
3267                                 ${OUTPUT}
3268                         }
3269                 ""
3270         end
3271
3272         case bool_to_mat4
3273                 values
3274                 {
3275                         input bool in0 = [ true | false ];
3276                         output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
3277                 }
3278
3279                 both ""
3280                         precision mediump float;
3281                         precision mediump int;
3282
3283                         ${DECLARATIONS}
3284
3285                         void main()
3286                         {
3287                                 ${SETUP}
3288                                 out0 = mat4(in0);
3289                                 ${OUTPUT}
3290                         }
3291                 ""
3292         end
3293
3294         case bool_to_mat3
3295                 values
3296                 {
3297                         input bool in0 = [ true | false ];
3298                         output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
3299                 }
3300
3301                 both ""
3302                         precision mediump float;
3303                         precision mediump int;
3304
3305                         ${DECLARATIONS}
3306
3307                         void main()
3308                         {
3309                                 ${SETUP}
3310                                 out0 = mat3(in0);
3311                                 ${OUTPUT}
3312                         }
3313                 ""
3314         end
3315
3316         case bool_to_mat2
3317                 values
3318                 {
3319                         input bool in0 = [ true | false ];
3320                         output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(0.0, 0.0, 0.0, 0.0) ];
3321                 }
3322
3323                 both ""
3324                         precision mediump float;
3325                         precision mediump int;
3326
3327                         ${DECLARATIONS}
3328
3329                         void main()
3330                         {
3331                                 ${SETUP}
3332                                 out0 = mat2(in0);
3333                                 ${OUTPUT}
3334                         }
3335                 ""
3336         end
3337
3338
3339 end # scalar_to_matrix
3340 group matrix_to_matrix "Matrix to Matrix Conversions"
3341
3342         case mat4_to_mat4
3343                 values
3344                 {
3345                         input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
3346                         output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
3347                 }
3348
3349                 both ""
3350                         precision mediump float;
3351                         precision mediump int;
3352
3353                         ${DECLARATIONS}
3354
3355                         void main()
3356                         {
3357                                 ${SETUP}
3358                                 out0 = mat4(in0);
3359                                 ${OUTPUT}
3360                         }
3361                 ""
3362         end
3363
3364         case mat4_to_mat3
3365                 values
3366                 {
3367                         input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
3368                         output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
3369                 }
3370
3371                 both ""
3372                         precision mediump float;
3373                         precision mediump int;
3374
3375                         ${DECLARATIONS}
3376
3377                         void main()
3378                         {
3379                                 ${SETUP}
3380                                 out0 = mat3(in0);
3381                                 ${OUTPUT}
3382                         }
3383                 ""
3384         end
3385
3386         case mat4_to_mat2
3387                 values
3388                 {
3389                         input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
3390                         output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
3391                 }
3392
3393                 both ""
3394                         precision mediump float;
3395                         precision mediump int;
3396
3397                         ${DECLARATIONS}
3398
3399                         void main()
3400                         {
3401                                 ${SETUP}
3402                                 out0 = mat2(in0);
3403                                 ${OUTPUT}
3404                         }
3405                 ""
3406         end
3407
3408         case mat3_to_mat4
3409                 values
3410                 {
3411                         input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.03125, 0.0625, -0.75, 0.015625, 0.03125) ];
3412                         output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.03125, 0.0625, 0.0, -0.75, 0.015625, 0.03125, 0.0, 0.0, 0.0, 0.0, 1.0) ];
3413                 }
3414
3415                 both ""
3416                         precision mediump float;
3417                         precision mediump int;
3418
3419                         ${DECLARATIONS}
3420
3421                         void main()
3422                         {
3423                                 ${SETUP}
3424                                 out0 = mat4(in0);
3425                                 ${OUTPUT}
3426                         }
3427                 ""
3428         end
3429
3430         case mat3_to_mat3
3431                 values
3432                 {
3433                         input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.03125, 0.0625, -0.75, 0.015625, 0.03125) ];
3434                         output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.03125, 0.0625, -0.75, 0.015625, 0.03125) ];
3435                 }
3436
3437                 both ""
3438                         precision mediump float;
3439                         precision mediump int;
3440
3441                         ${DECLARATIONS}
3442
3443                         void main()
3444                         {
3445                                 ${SETUP}
3446                                 out0 = mat3(in0);
3447                                 ${OUTPUT}
3448                         }
3449                 ""
3450         end
3451
3452         case mat3_to_mat2
3453                 values
3454                 {
3455                         input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.03125, 0.0625, -0.75, 0.015625, 0.03125) ];
3456                         output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.03125) ];
3457                 }
3458
3459                 both ""
3460                         precision mediump float;
3461                         precision mediump int;
3462
3463                         ${DECLARATIONS}
3464
3465                         void main()
3466                         {
3467                                 ${SETUP}
3468                                 out0 = mat2(in0);
3469                                 ${OUTPUT}
3470                         }
3471                 ""
3472         end
3473
3474         case mat2_to_mat4
3475                 values
3476                 {
3477                         input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
3478                         output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ];
3479                 }
3480
3481                 both ""
3482                         precision mediump float;
3483                         precision mediump int;
3484
3485                         ${DECLARATIONS}
3486
3487                         void main()
3488                         {
3489                                 ${SETUP}
3490                                 out0 = mat4(in0);
3491                                 ${OUTPUT}
3492                         }
3493                 ""
3494         end
3495
3496         case mat2_to_mat3
3497                 values
3498                 {
3499                         input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
3500                         output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0) | mat3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0) ];
3501                 }
3502
3503                 both ""
3504                         precision mediump float;
3505                         precision mediump int;
3506
3507                         ${DECLARATIONS}
3508
3509                         void main()
3510                         {
3511                                 ${SETUP}
3512                                 out0 = mat3(in0);
3513                                 ${OUTPUT}
3514                         }
3515                 ""
3516         end
3517
3518         case mat2_to_mat2
3519                 values
3520                 {
3521                         input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
3522                         output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
3523                 }
3524
3525                 both ""
3526                         precision mediump float;
3527                         precision mediump int;
3528
3529                         ${DECLARATIONS}
3530
3531                         void main()
3532                         {
3533                                 ${SETUP}
3534                                 out0 = mat2(in0);
3535                                 ${OUTPUT}
3536                         }
3537                 ""
3538         end
3539
3540
3541 end # matrix_to_matrix
3542 group vector_combine "Vector Combine Constructors"
3543
3544         case vec2_vec2_to_vec4
3545                 values
3546                 {
3547                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
3548                         input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
3549                         output vec4 out0 = [ vec4(-0.5, -2.25, -32.0, 64.0) | vec4(-32.0, 64.0, 1.0, 1.25) | vec4(1.0, 1.25, 0.0, 0.5) | vec4(0.0, 0.5, -0.5, -2.25) | vec4(-0.75, -0.0322580645161, -0.75, -0.0322580645161) ];
3550                 }
3551
3552                 both ""
3553                         precision mediump float;
3554                         precision mediump int;
3555
3556                         ${DECLARATIONS}
3557
3558                         void main()
3559                         {
3560                                 ${SETUP}
3561                                 out0 = vec4(in0, in1);
3562                                 ${OUTPUT}
3563                         }
3564                 ""
3565         end
3566
3567         case vec2_vec2_to_ivec4
3568                 values
3569                 {
3570                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
3571                         input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
3572                         output ivec4 out0 = [ ivec4(0, -2, -32, 64) | ivec4(-32, 64, 1, 1) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, 0, 0, 0) ];
3573                 }
3574
3575                 both ""
3576                         precision mediump float;
3577                         precision mediump int;
3578
3579                         ${DECLARATIONS}
3580
3581                         void main()
3582                         {
3583                                 ${SETUP}
3584                                 out0 = ivec4(in0, in1);
3585                                 ${OUTPUT}
3586                         }
3587                 ""
3588         end
3589
3590         case vec2_vec2_to_bvec4
3591                 values
3592                 {
3593                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
3594                         input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
3595                         output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ];
3596                 }
3597
3598                 both ""
3599                         precision mediump float;
3600                         precision mediump int;
3601
3602                         ${DECLARATIONS}
3603
3604                         void main()
3605                         {
3606                                 ${SETUP}
3607                                 out0 = bvec4(in0, in1);
3608                                 ${OUTPUT}
3609                         }
3610                 ""
3611         end
3612
3613         case bvec2_bvec2_to_vec4
3614                 values
3615                 {
3616                         input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
3617                         input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3618                         output vec4 out0 = [ vec4(0.0, 0.0, 1.0, 0.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(0.0, 1.0, 0.0, 1.0) | vec4(0.0, 0.0, 1.0, 1.0) | vec4(1.0, 1.0, 0.0, 0.0) ];
3619                 }
3620
3621                 both ""
3622                         precision mediump float;
3623                         precision mediump int;
3624
3625                         ${DECLARATIONS}
3626
3627                         void main()
3628                         {
3629                                 ${SETUP}
3630                                 out0 = vec4(in0, in1);
3631                                 ${OUTPUT}
3632                         }
3633                 ""
3634         end
3635
3636         case bvec2_bvec2_to_ivec4
3637                 values
3638                 {
3639                         input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
3640                         input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3641                         output ivec4 out0 = [ ivec4(0, 0, 1, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 1, 0, 1) | ivec4(0, 0, 1, 1) | ivec4(1, 1, 0, 0) ];
3642                 }
3643
3644                 both ""
3645                         precision mediump float;
3646                         precision mediump int;
3647
3648                         ${DECLARATIONS}
3649
3650                         void main()
3651                         {
3652                                 ${SETUP}
3653                                 out0 = ivec4(in0, in1);
3654                                 ${OUTPUT}
3655                         }
3656                 ""
3657         end
3658
3659         case bvec2_bvec2_to_bvec4
3660                 values
3661                 {
3662                         input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
3663                         input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
3664                         output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, false, false, false) | bvec4(false, true, false, true) | bvec4(false, false, true, true) | bvec4(true, true, false, false) ];
3665                 }
3666
3667                 both ""
3668                         precision mediump float;
3669                         precision mediump int;
3670
3671                         ${DECLARATIONS}
3672
3673                         void main()
3674                         {
3675                                 ${SETUP}
3676                                 out0 = bvec4(in0, in1);
3677                                 ${OUTPUT}
3678                         }
3679                 ""
3680         end
3681
3682         case float_float_float_float_to_vec4
3683                 values
3684                 {
3685                         input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
3686                         input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
3687                         input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
3688                         input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
3689                         output vec4 out0 = [ vec4(1.0, 0.0, 3.5, 3.5) | vec4(0.0, 36.8125, 36.8125, 36.8125) | vec4(-0.5, -8.25, -8.25, 1.0) | vec4(-8.25, 2.0, 1.0, -8.25) | vec4(3.5, 3.5, 2.0, 2.0) | vec4(-20.125, 1.0, 0.0, 0.0) | vec4(36.8125, -20.125, -20.125, -0.5) | vec4(2.0, -0.5, -0.5, -20.125) ];
3690                 }
3691
3692                 both ""
3693                         precision mediump float;
3694                         precision mediump int;
3695
3696                         ${DECLARATIONS}
3697
3698                         void main()
3699                         {
3700                                 ${SETUP}
3701                                 out0 = vec4(in0, in1, in2, in3);
3702                                 ${OUTPUT}
3703                         }
3704                 ""
3705         end
3706
3707         case float_float_float_float_to_ivec4
3708                 values
3709                 {
3710                         input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
3711                         input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
3712                         input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
3713                         input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
3714                         output ivec4 out0 = [ ivec4(1, 0, 3, 3) | ivec4(0, 36, 36, 36) | ivec4(0, -8, -8, 1) | ivec4(-8, 2, 1, -8) | ivec4(3, 3, 2, 2) | ivec4(-20, 1, 0, 0) | ivec4(36, -20, -20, 0) | ivec4(2, 0, 0, -20) ];
3715                 }
3716
3717                 both ""
3718                         precision mediump float;
3719                         precision mediump int;
3720
3721                         ${DECLARATIONS}
3722
3723                         void main()
3724                         {
3725                                 ${SETUP}
3726                                 out0 = ivec4(in0, in1, in2, in3);
3727                                 ${OUTPUT}
3728                         }
3729                 ""
3730         end
3731
3732         case float_float_float_float_to_bvec4
3733                 values
3734                 {
3735                         input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
3736                         input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
3737                         input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
3738                         input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
3739                         output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
3740                 }
3741
3742                 both ""
3743                         precision mediump float;
3744                         precision mediump int;
3745
3746                         ${DECLARATIONS}
3747
3748                         void main()
3749                         {
3750                                 ${SETUP}
3751                                 out0 = bvec4(in0, in1, in2, in3);
3752                                 ${OUTPUT}
3753                         }
3754                 ""
3755         end
3756
3757         case int_int_int_int_to_vec4
3758                 values
3759                 {
3760                         input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
3761                         input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
3762                         input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
3763                         input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
3764                         output vec4 out0 = [ vec4(-12.0, 2.0, 11.0, -192.0) | vec4(-66.0, 5.0, 255.0, -66.0) | vec4(2.0, -66.0, 5.0, 8.0) | vec4(5.0, 11.0, 8.0, -12.0) | vec4(8.0, -192.0, 2.0, 1.0) | vec4(-192.0, 8.0, -192.0, 2.0) | vec4(255.0, -12.0, -12.0, 0.0) | vec4(1.0, 1.0, -66.0, 255.0) | vec4(0.0, 255.0, 1.0, 5.0) | vec4(11.0, 0.0, 0.0, 11.0) ];
3765                 }
3766
3767                 both ""
3768                         precision mediump float;
3769                         precision mediump int;
3770
3771                         ${DECLARATIONS}
3772
3773                         void main()
3774                         {
3775                                 ${SETUP}
3776                                 out0 = vec4(in0, in1, in2, in3);
3777                                 ${OUTPUT}
3778                         }
3779                 ""
3780         end
3781
3782         case int_int_int_int_to_ivec4
3783                 values
3784                 {
3785                         input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
3786                         input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
3787                         input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
3788                         input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
3789                         output ivec4 out0 = [ ivec4(-12, 2, 11, -192) | ivec4(-66, 5, 255, -66) | ivec4(2, -66, 5, 8) | ivec4(5, 11, 8, -12) | ivec4(8, -192, 2, 1) | ivec4(-192, 8, -192, 2) | ivec4(255, -12, -12, 0) | ivec4(1, 1, -66, 255) | ivec4(0, 255, 1, 5) | ivec4(11, 0, 0, 11) ];
3790                 }
3791
3792                 both ""
3793                         precision mediump float;
3794                         precision mediump int;
3795
3796                         ${DECLARATIONS}
3797
3798                         void main()
3799                         {
3800                                 ${SETUP}
3801                                 out0 = ivec4(in0, in1, in2, in3);
3802                                 ${OUTPUT}
3803                         }
3804                 ""
3805         end
3806
3807         case int_int_int_int_to_bvec4
3808                 values
3809                 {
3810                         input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
3811                         input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
3812                         input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
3813                         input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
3814                         output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) ];
3815                 }
3816
3817                 both ""
3818                         precision mediump float;
3819                         precision mediump int;
3820
3821                         ${DECLARATIONS}
3822
3823                         void main()
3824                         {
3825                                 ${SETUP}
3826                                 out0 = bvec4(in0, in1, in2, in3);
3827                                 ${OUTPUT}
3828                         }
3829                 ""
3830         end
3831
3832         case bool_bool_bool_bool_to_vec4
3833                 values
3834                 {
3835                         input bool in0 = [ true | false ];
3836                         input bool in1 = [ false | true ];
3837                         input bool in2 = [ true | false ];
3838                         input bool in3 = [ false | true ];
3839                         output vec4 out0 = [ vec4(1.0, 0.0, 1.0, 0.0) | vec4(0.0, 1.0, 0.0, 1.0) ];
3840                 }
3841
3842                 both ""
3843                         precision mediump float;
3844                         precision mediump int;
3845
3846                         ${DECLARATIONS}
3847
3848                         void main()
3849                         {
3850                                 ${SETUP}
3851                                 out0 = vec4(in0, in1, in2, in3);
3852                                 ${OUTPUT}
3853                         }
3854                 ""
3855         end
3856
3857         case bool_bool_bool_bool_to_ivec4
3858                 values
3859                 {
3860                         input bool in0 = [ true | false ];
3861                         input bool in1 = [ false | true ];
3862                         input bool in2 = [ true | false ];
3863                         input bool in3 = [ false | true ];
3864                         output ivec4 out0 = [ ivec4(1, 0, 1, 0) | ivec4(0, 1, 0, 1) ];
3865                 }
3866
3867                 both ""
3868                         precision mediump float;
3869                         precision mediump int;
3870
3871                         ${DECLARATIONS}
3872
3873                         void main()
3874                         {
3875                                 ${SETUP}
3876                                 out0 = ivec4(in0, in1, in2, in3);
3877                                 ${OUTPUT}
3878                         }
3879                 ""
3880         end
3881
3882         case bool_bool_bool_bool_to_bvec4
3883                 values
3884                 {
3885                         input bool in0 = [ true | false ];
3886                         input bool in1 = [ false | true ];
3887                         input bool in2 = [ true | false ];
3888                         input bool in3 = [ false | true ];
3889                         output bvec4 out0 = [ bvec4(true, false, true, false) | bvec4(false, true, false, true) ];
3890                 }
3891
3892                 both ""
3893                         precision mediump float;
3894                         precision mediump int;
3895
3896                         ${DECLARATIONS}
3897
3898                         void main()
3899                         {
3900                                 ${SETUP}
3901                                 out0 = bvec4(in0, in1, in2, in3);
3902                                 ${OUTPUT}
3903                         }
3904                 ""
3905         end
3906
3907         case bool_float_int_bool_to_vec4
3908                 values
3909                 {
3910                         input bool in0 = [ true | true | true | false | false | false | true | false | true | false ];
3911                         input float in1 = [ 1.0 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 | -0.5 | 3.5 | -20.125 | 0.0 ];
3912                         input int in2 = [ -192 | -12 | 2 | -66 | 255 | 8 | 0 | 5 | 11 | 1 ];
3913                         input bool in3 = [ true | true | false | false | true | false | false | false | true | true ];
3914                         output vec4 out0 = [ vec4(1.0, 1.0, -192.0, 1.0) | vec4(1.0, 2.0, -12.0, 1.0) | vec4(1.0, 1.0, 2.0, 0.0) | vec4(0.0, 0.0, -66.0, 0.0) | vec4(0.0, 36.8125, 255.0, 1.0) | vec4(0.0, -8.25, 8.0, 0.0) | vec4(1.0, -0.5, 0.0, 0.0) | vec4(0.0, 3.5, 5.0, 0.0) | vec4(1.0, -20.125, 11.0, 1.0) | vec4(0.0, 0.0, 1.0, 1.0) ];
3915                 }
3916
3917                 both ""
3918                         precision mediump float;
3919                         precision mediump int;
3920
3921                         ${DECLARATIONS}
3922
3923                         void main()
3924                         {
3925                                 ${SETUP}
3926                                 out0 = vec4(in0, in1, in2, in3);
3927                                 ${OUTPUT}
3928                         }
3929                 ""
3930         end
3931
3932         case bool_float_int_bool_to_ivec4
3933                 values
3934                 {
3935                         input bool in0 = [ true | true | true | false | false | false | true | false | true | false ];
3936                         input float in1 = [ 1.0 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 | -0.5 | 3.5 | -20.125 | 0.0 ];
3937                         input int in2 = [ -192 | -12 | 2 | -66 | 255 | 8 | 0 | 5 | 11 | 1 ];
3938                         input bool in3 = [ true | true | false | false | true | false | false | false | true | true ];
3939                         output ivec4 out0 = [ ivec4(1, 1, -192, 1) | ivec4(1, 2, -12, 1) | ivec4(1, 1, 2, 0) | ivec4(0, 0, -66, 0) | ivec4(0, 36, 255, 1) | ivec4(0, -8, 8, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 3, 5, 0) | ivec4(1, -20, 11, 1) | ivec4(0, 0, 1, 1) ];
3940                 }
3941
3942                 both ""
3943                         precision mediump float;
3944                         precision mediump int;
3945
3946                         ${DECLARATIONS}
3947
3948                         void main()
3949                         {
3950                                 ${SETUP}
3951                                 out0 = ivec4(in0, in1, in2, in3);
3952                                 ${OUTPUT}
3953                         }
3954                 ""
3955         end
3956
3957         case bool_float_int_bool_to_bvec4
3958                 values
3959                 {
3960                         input bool in0 = [ true | true | true | false | false | false | true | false | true | false ];
3961                         input float in1 = [ 1.0 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 | -0.5 | 3.5 | -20.125 | 0.0 ];
3962                         input int in2 = [ -192 | -12 | 2 | -66 | 255 | 8 | 0 | 5 | 11 | 1 ];
3963                         input bool in3 = [ true | true | false | false | true | false | false | false | true | true ];
3964                         output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(false, false, true, false) | bvec4(false, true, true, true) | bvec4(false, true, true, false) | bvec4(true, true, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, true, true) ];
3965                 }
3966
3967                 both ""
3968                         precision mediump float;
3969                         precision mediump int;
3970
3971                         ${DECLARATIONS}
3972
3973                         void main()
3974                         {
3975                                 ${SETUP}
3976                                 out0 = bvec4(in0, in1, in2, in3);
3977                                 ${OUTPUT}
3978                         }
3979                 ""
3980         end
3981
3982         case vec2_ivec2_to_vec4
3983                 values
3984                 {
3985                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ];
3986                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(1, 1) ];
3987                         output vec4 out0 = [ vec4(-0.5, -2.25, 0.0, 0.0) | vec4(0.0, 0.5, 0.0, -2.0) | vec4(-32.0, 64.0, -32.0, 64.0) | vec4(1.0, 1.25, 0.0, 0.0) | vec4(-0.75, -0.0322580645161, 1.0, 1.0) ];
3988                 }
3989
3990                 both ""
3991                         precision mediump float;
3992                         precision mediump int;
3993
3994                         ${DECLARATIONS}
3995
3996                         void main()
3997                         {
3998                                 ${SETUP}
3999                                 out0 = vec4(in0, in1);
4000                                 ${OUTPUT}
4001                         }
4002                 ""
4003         end
4004
4005         case vec2_ivec2_to_ivec4
4006                 values
4007                 {
4008                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ];
4009                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(1, 1) ];
4010                         output ivec4 out0 = [ ivec4(0, -2, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(-32, 64, -32, 64) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) ];
4011                 }
4012
4013                 both ""
4014                         precision mediump float;
4015                         precision mediump int;
4016
4017                         ${DECLARATIONS}
4018
4019                         void main()
4020                         {
4021                                 ${SETUP}
4022                                 out0 = ivec4(in0, in1);
4023                                 ${OUTPUT}
4024                         }
4025                 ""
4026         end
4027
4028         case vec2_ivec2_to_bvec4
4029                 values
4030                 {
4031                         input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ];
4032                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(1, 1) ];
4033                         output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(false, true, false, true) | bvec4(true, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) ];
4034                 }
4035
4036                 both ""
4037                         precision mediump float;
4038                         precision mediump int;
4039
4040                         ${DECLARATIONS}
4041
4042                         void main()
4043                         {
4044                                 ${SETUP}
4045                                 out0 = bvec4(in0, in1);
4046                                 ${OUTPUT}
4047                         }
4048                 ""
4049         end
4050
4051         case vec2_bvec2_to_vec4
4052                 values
4053                 {
4054                         input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
4055                         input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(false, false) ];
4056                         output vec4 out0 = [ vec4(-32.0, 64.0, 0.0, 0.0) | vec4(-0.5, -2.25, 1.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.75, -0.0322580645161, 0.0, 1.0) | vec4(0.0, 0.5, 0.0, 0.0) ];
4057                 }
4058
4059                 both ""
4060                         precision mediump float;
4061                         precision mediump int;
4062
4063                         ${DECLARATIONS}
4064
4065                         void main()
4066                         {
4067                                 ${SETUP}
4068                                 out0 = vec4(in0, in1);
4069                                 ${OUTPUT}
4070                         }
4071                 ""
4072         end
4073
4074         case vec2_bvec2_to_ivec4
4075                 values
4076                 {
4077                         input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
4078                         input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(false, false) ];
4079                         output ivec4 out0 = [ ivec4(-32, 64, 0, 0) | ivec4(0, -2, 1, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 1) | ivec4(0, 0, 0, 0) ];
4080                 }
4081
4082                 both ""
4083                         precision mediump float;
4084                         precision mediump int;
4085
4086                         ${DECLARATIONS}
4087
4088                         void main()
4089                         {
4090                                 ${SETUP}
4091                                 out0 = ivec4(in0, in1);
4092                                 ${OUTPUT}
4093                         }
4094                 ""
4095         end
4096
4097         case vec2_bvec2_to_bvec4
4098                 values
4099                 {
4100                         input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
4101                         input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(false, false) ];
4102                         output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(true, true, false, true) | bvec4(false, true, false, false) ];
4103                 }
4104
4105                 both ""
4106                         precision mediump float;
4107                         precision mediump int;
4108
4109                         ${DECLARATIONS}
4110
4111                         void main()
4112                         {
4113                                 ${SETUP}
4114                                 out0 = bvec4(in0, in1);
4115                                 ${OUTPUT}
4116                         }
4117                 ""
4118         end
4119
4120         case bvec3_float_to_vec4
4121                 values
4122                 {
4123                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, true, false) | bvec3(true, true, true) ];
4124                         input float in1 = [ -8.25 | -20.125 | 2.0 | 0.0 | -0.5 | 3.5 | 36.8125 | 1.0 ];
4125                         output vec4 out0 = [ vec4(1.0, 0.0, 0.0, -8.25) | vec4(0.0, 0.0, 0.0, -20.125) | vec4(0.0, 0.0, 0.0, 2.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 0.0, 0.0, -0.5) | vec4(0.0, 1.0, 0.0, 3.5) | vec4(0.0, 1.0, 0.0, 36.8125) | vec4(1.0, 1.0, 1.0, 1.0) ];
4126                 }
4127
4128                 both ""
4129                         precision mediump float;
4130                         precision mediump int;
4131
4132                         ${DECLARATIONS}
4133
4134                         void main()
4135                         {
4136                                 ${SETUP}
4137                                 out0 = vec4(in0, in1);
4138                                 ${OUTPUT}
4139                         }
4140                 ""
4141         end
4142
4143         case bvec3_float_to_ivec4
4144                 values
4145                 {
4146                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, true, false) | bvec3(true, true, true) ];
4147                         input float in1 = [ -8.25 | -20.125 | 2.0 | 0.0 | -0.5 | 3.5 | 36.8125 | 1.0 ];
4148                         output ivec4 out0 = [ ivec4(1, 0, 0, -8) | ivec4(0, 0, 0, -20) | ivec4(0, 0, 0, 2) | ivec4(0, 0, 0, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 1, 0, 3) | ivec4(0, 1, 0, 36) | ivec4(1, 1, 1, 1) ];
4149                 }
4150
4151                 both ""
4152                         precision mediump float;
4153                         precision mediump int;
4154
4155                         ${DECLARATIONS}
4156
4157                         void main()
4158                         {
4159                                 ${SETUP}
4160                                 out0 = ivec4(in0, in1);
4161                                 ${OUTPUT}
4162                         }
4163                 ""
4164         end
4165
4166         case bvec3_float_to_bvec4
4167                 values
4168                 {
4169                         input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, true, false) | bvec3(true, true, true) ];
4170                         input float in1 = [ -8.25 | -20.125 | 2.0 | 0.0 | -0.5 | 3.5 | 36.8125 | 1.0 ];
4171                         output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, true) | bvec4(false, true, false, true) | bvec4(true, true, true, true) ];
4172                 }
4173
4174                 both ""
4175                         precision mediump float;
4176                         precision mediump int;
4177
4178                         ${DECLARATIONS}
4179
4180                         void main()
4181                         {
4182                                 ${SETUP}
4183                                 out0 = bvec4(in0, in1);
4184                                 ${OUTPUT}
4185                         }
4186                 ""
4187         end
4188
4189         case vec3_float_to_vec4
4190                 values
4191                 {
4192                         input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
4193                         input float in1 = [ 0.0 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | -20.125 ];
4194                         output vec4 out0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.0) | vec4(0.0, 0.5, 0.75, 2.0) | vec4(-0.5, -2.25, -4.875, 36.8125) | vec4(0.0, 0.5, 0.75, 3.5) | vec4(1.0, 1.25, 1.125, 1.0) | vec4(-0.5, -2.25, -4.875, -0.5) | vec4(-32.0, 64.0, -51.0, -8.25) | vec4(1.0, 1.25, 1.125, -20.125) ];
4195                 }
4196
4197                 both ""
4198                         precision mediump float;
4199                         precision mediump int;
4200
4201                         ${DECLARATIONS}
4202
4203                         void main()
4204                         {
4205                                 ${SETUP}
4206                                 out0 = vec4(in0, in1);
4207                                 ${OUTPUT}
4208                         }
4209                 ""
4210         end
4211
4212         case vec3_float_to_ivec4
4213                 values
4214                 {
4215                         input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
4216                         input float in1 = [ 0.0 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | -20.125 ];
4217                         output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 2) | ivec4(0, -2, -4, 36) | ivec4(0, 0, 0, 3) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 0) | ivec4(-32, 64, -51, -8) | ivec4(1, 1, 1, -20) ];
4218                 }
4219
4220                 both ""
4221                         precision mediump float;
4222                         precision mediump int;
4223
4224                         ${DECLARATIONS}
4225
4226                         void main()
4227                         {
4228                                 ${SETUP}
4229                                 out0 = ivec4(in0, in1);
4230                                 ${OUTPUT}
4231                         }
4232                 ""
4233         end
4234
4235         case vec3_float_to_bvec4
4236                 values
4237                 {
4238                         input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
4239                         input float in1 = [ 0.0 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | -20.125 ];
4240                         output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
4241                 }
4242
4243                 both ""
4244                         precision mediump float;
4245                         precision mediump int;
4246
4247                         ${DECLARATIONS}
4248
4249                         void main()
4250                         {
4251                                 ${SETUP}
4252                                 out0 = bvec4(in0, in1);
4253                                 ${OUTPUT}
4254                         }
4255                 ""
4256         end
4257
4258         case int_ivec2_int_to_vec4
4259                 values
4260                 {
4261                         input int in0 = [ -66 | 8 | -192 | 255 | 5 | -12 | 0 | 2 | 1 | 11 ];
4262                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) ];
4263                         input int in2 = [ 8 | 2 | 11 | -192 | 255 | -12 | 0 | -66 | 1 | 5 ];
4264                         output vec4 out0 = [ vec4(-66.0, 0.0, 0.0, 8.0) | vec4(8.0, 0.0, 0.0, 2.0) | vec4(-192.0, -32.0, 64.0, 11.0) | vec4(255.0, -32.0, 64.0, -192.0) | vec4(5.0, 1.0, 1.0, 255.0) | vec4(-12.0, 0.0, 0.0, -12.0) | vec4(0.0, 1.0, 1.0, 0.0) | vec4(2.0, 0.0, -2.0, -66.0) | vec4(1.0, 0.0, -2.0, 1.0) | vec4(11.0, 0.0, 0.0, 5.0) ];
4265                 }
4266
4267                 both ""
4268                         precision mediump float;
4269                         precision mediump int;
4270
4271                         ${DECLARATIONS}
4272
4273                         void main()
4274                         {
4275                                 ${SETUP}
4276                                 out0 = vec4(in0, in1, in2);
4277                                 ${OUTPUT}
4278                         }
4279                 ""
4280         end
4281
4282         case int_ivec2_int_to_ivec4
4283                 values
4284                 {
4285                         input int in0 = [ -66 | 8 | -192 | 255 | 5 | -12 | 0 | 2 | 1 | 11 ];
4286                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) ];
4287                         input int in2 = [ 8 | 2 | 11 | -192 | 255 | -12 | 0 | -66 | 1 | 5 ];
4288                         output ivec4 out0 = [ ivec4(-66, 0, 0, 8) | ivec4(8, 0, 0, 2) | ivec4(-192, -32, 64, 11) | ivec4(255, -32, 64, -192) | ivec4(5, 1, 1, 255) | ivec4(-12, 0, 0, -12) | ivec4(0, 1, 1, 0) | ivec4(2, 0, -2, -66) | ivec4(1, 0, -2, 1) | ivec4(11, 0, 0, 5) ];
4289                 }
4290
4291                 both ""
4292                         precision mediump float;
4293                         precision mediump int;
4294
4295                         ${DECLARATIONS}
4296
4297                         void main()
4298                         {
4299                                 ${SETUP}
4300                                 out0 = ivec4(in0, in1, in2);
4301                                 ${OUTPUT}
4302                         }
4303                 ""
4304         end
4305
4306         case int_ivec2_int_to_bvec4
4307                 values
4308                 {
4309                         input int in0 = [ -66 | 8 | -192 | 255 | 5 | -12 | 0 | 2 | 1 | 11 ];
4310                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) ];
4311                         input int in2 = [ 8 | 2 | 11 | -192 | 255 | -12 | 0 | -66 | 1 | 5 ];
4312                         output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(false, true, true, false) | bvec4(true, false, true, true) | bvec4(true, false, true, true) | bvec4(true, false, false, true) ];
4313                 }
4314
4315                 both ""
4316                         precision mediump float;
4317                         precision mediump int;
4318
4319                         ${DECLARATIONS}
4320
4321                         void main()
4322                         {
4323                                 ${SETUP}
4324                                 out0 = bvec4(in0, in1, in2);
4325                                 ${OUTPUT}
4326                         }
4327                 ""
4328         end
4329
4330         case bool_float_ivec2_to_vec4
4331                 values
4332                 {
4333                         input bool in0 = [ true | true | true | true | false | false | false | false ];
4334                         input float in1 = [ 2.0 | 0.0 | 3.5 | -8.25 | 36.8125 | -20.125 | 1.0 | -0.5 ];
4335                         input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ];
4336                         output vec4 out0 = [ vec4(1.0, 2.0, 0.0, 0.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(1.0, 3.5, -32.0, 64.0) | vec4(1.0, -8.25, 1.0, 1.0) | vec4(0.0, 36.8125, 0.0, -2.0) | vec4(0.0, -20.125, 0.0, -2.0) | vec4(0.0, 1.0, 1.0, 1.0) | vec4(0.0, -0.5, 0.0, 0.0) ];
4337                 }
4338
4339                 both ""
4340                         precision mediump float;
4341                         precision mediump int;
4342
4343                         ${DECLARATIONS}
4344
4345                         void main()
4346                         {
4347                                 ${SETUP}
4348                                 out0 = vec4(in0, in1, in2);
4349                                 ${OUTPUT}
4350                         }
4351                 ""
4352         end
4353
4354         case bool_float_ivec2_to_ivec4
4355                 values
4356                 {
4357                         input bool in0 = [ true | true | true | true | false | false | false | false ];
4358                         input float in1 = [ 2.0 | 0.0 | 3.5 | -8.25 | 36.8125 | -20.125 | 1.0 | -0.5 ];
4359                         input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ];
4360                         output ivec4 out0 = [ ivec4(1, 2, 0, 0) | ivec4(1, 0, 0, 0) | ivec4(1, 3, -32, 64) | ivec4(1, -8, 1, 1) | ivec4(0, 36, 0, -2) | ivec4(0, -20, 0, -2) | ivec4(0, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
4361                 }
4362
4363                 both ""
4364                         precision mediump float;
4365                         precision mediump int;
4366
4367                         ${DECLARATIONS}
4368
4369                         void main()
4370                         {
4371                                 ${SETUP}
4372                                 out0 = ivec4(in0, in1, in2);
4373                                 ${OUTPUT}
4374                         }
4375                 ""
4376         end
4377
4378         case bool_float_ivec2_to_bvec4
4379                 values
4380                 {
4381                         input bool in0 = [ true | true | true | true | false | false | false | false ];
4382                         input float in1 = [ 2.0 | 0.0 | 3.5 | -8.25 | 36.8125 | -20.125 | 1.0 | -0.5 ];
4383                         input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ];
4384                         output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, false, true) | bvec4(false, true, false, true) | bvec4(false, true, true, true) | bvec4(false, true, false, false) ];
4385                 }
4386
4387                 both ""
4388                         precision mediump float;
4389                         precision mediump int;
4390
4391                         ${DECLARATIONS}
4392
4393                         void main()
4394                         {
4395                                 ${SETUP}
4396                                 out0 = bvec4(in0, in1, in2);
4397                                 ${OUTPUT}
4398                         }
4399                 ""
4400         end
4401
4402         case float_float_float_to_vec3
4403                 values
4404                 {
4405                         input float in0 = [ 3.5 | 2.0 | -20.125 | -8.25 | 36.8125 | 1.0 | 0.0 | -0.5 ];
4406                         input float in1 = [ -0.5 | 1.0 | 2.0 | -20.125 | 0.0 | -8.25 | 36.8125 | 3.5 ];
4407                         input float in2 = [ 0.0 | 1.0 | 3.5 | -8.25 | -0.5 | 36.8125 | -20.125 | 2.0 ];
4408                         output vec3 out0 = [ vec3(3.5, -0.5, 0.0) | vec3(2.0, 1.0, 1.0) | vec3(-20.125, 2.0, 3.5) | vec3(-8.25, -20.125, -8.25) | vec3(36.8125, 0.0, -0.5) | vec3(1.0, -8.25, 36.8125) | vec3(0.0, 36.8125, -20.125) | vec3(-0.5, 3.5, 2.0) ];
4409                 }
4410
4411                 both ""
4412                         precision mediump float;
4413                         precision mediump int;
4414
4415                         ${DECLARATIONS}
4416
4417                         void main()
4418                         {
4419                                 ${SETUP}
4420                                 out0 = vec3(in0, in1, in2);
4421                                 ${OUTPUT}
4422                         }
4423                 ""
4424         end
4425
4426         case float_float_float_to_ivec3
4427                 values
4428                 {
4429                         input float in0 = [ 3.5 | 2.0 | -20.125 | -8.25 | 36.8125 | 1.0 | 0.0 | -0.5 ];
4430                         input float in1 = [ -0.5 | 1.0 | 2.0 | -20.125 | 0.0 | -8.25 | 36.8125 | 3.5 ];
4431                         input float in2 = [ 0.0 | 1.0 | 3.5 | -8.25 | -0.5 | 36.8125 | -20.125 | 2.0 ];
4432                         output ivec3 out0 = [ ivec3(3, 0, 0) | ivec3(2, 1, 1) | ivec3(-20, 2, 3) | ivec3(-8, -20, -8) | ivec3(36, 0, 0) | ivec3(1, -8, 36) | ivec3(0, 36, -20) | ivec3(0, 3, 2) ];
4433                 }
4434
4435                 both ""
4436                         precision mediump float;
4437                         precision mediump int;
4438
4439                         ${DECLARATIONS}
4440
4441                         void main()
4442                         {
4443                                 ${SETUP}
4444                                 out0 = ivec3(in0, in1, in2);
4445                                 ${OUTPUT}
4446                         }
4447                 ""
4448         end
4449
4450         case float_float_float_to_bvec3
4451                 values
4452                 {
4453                         input float in0 = [ 3.5 | 2.0 | -20.125 | -8.25 | 36.8125 | 1.0 | 0.0 | -0.5 ];
4454                         input float in1 = [ -0.5 | 1.0 | 2.0 | -20.125 | 0.0 | -8.25 | 36.8125 | 3.5 ];
4455                         input float in2 = [ 0.0 | 1.0 | 3.5 | -8.25 | -0.5 | 36.8125 | -20.125 | 2.0 ];
4456                         output bvec3 out0 = [ bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) ];
4457                 }
4458
4459                 both ""
4460                         precision mediump float;
4461                         precision mediump int;
4462
4463                         ${DECLARATIONS}
4464
4465                         void main()
4466                         {
4467                                 ${SETUP}
4468                                 out0 = bvec3(in0, in1, in2);
4469                                 ${OUTPUT}
4470                         }
4471                 ""
4472         end
4473
4474         case int_int_int_to_vec3
4475                 values
4476                 {
4477                         input int in0 = [ 0 | 2 | 1 | 5 | 255 | 8 | -66 | 11 | -12 | -192 ];
4478                         input int in1 = [ 2 | 8 | 11 | -12 | -192 | 1 | -66 | 5 | 255 | 0 ];
4479                         input int in2 = [ -192 | -12 | -66 | 8 | 1 | 2 | 5 | 11 | 255 | 0 ];
4480                         output vec3 out0 = [ vec3(0.0, 2.0, -192.0) | vec3(2.0, 8.0, -12.0) | vec3(1.0, 11.0, -66.0) | vec3(5.0, -12.0, 8.0) | vec3(255.0, -192.0, 1.0) | vec3(8.0, 1.0, 2.0) | vec3(-66.0, -66.0, 5.0) | vec3(11.0, 5.0, 11.0) | vec3(-12.0, 255.0, 255.0) | vec3(-192.0, 0.0, 0.0) ];
4481                 }
4482
4483                 both ""
4484                         precision mediump float;
4485                         precision mediump int;
4486
4487                         ${DECLARATIONS}
4488
4489                         void main()
4490                         {
4491                                 ${SETUP}
4492                                 out0 = vec3(in0, in1, in2);
4493                                 ${OUTPUT}
4494                         }
4495                 ""
4496         end
4497
4498         case int_int_int_to_ivec3
4499                 values
4500                 {
4501                         input int in0 = [ 0 | 2 | 1 | 5 | 255 | 8 | -66 | 11 | -12 | -192 ];
4502                         input int in1 = [ 2 | 8 | 11 | -12 | -192 | 1 | -66 | 5 | 255 | 0 ];
4503                         input int in2 = [ -192 | -12 | -66 | 8 | 1 | 2 | 5 | 11 | 255 | 0 ];
4504                         output ivec3 out0 = [ ivec3(0, 2, -192) | ivec3(2, 8, -12) | ivec3(1, 11, -66) | ivec3(5, -12, 8) | ivec3(255, -192, 1) | ivec3(8, 1, 2) | ivec3(-66, -66, 5) | ivec3(11, 5, 11) | ivec3(-12, 255, 255) | ivec3(-192, 0, 0) ];
4505                 }
4506
4507                 both ""
4508                         precision mediump float;
4509                         precision mediump int;
4510
4511                         ${DECLARATIONS}
4512
4513                         void main()
4514                         {
4515                                 ${SETUP}
4516                                 out0 = ivec3(in0, in1, in2);
4517                                 ${OUTPUT}
4518                         }
4519                 ""
4520         end
4521
4522         case int_int_int_to_bvec3
4523                 values
4524                 {
4525                         input int in0 = [ 0 | 2 | 1 | 5 | 255 | 8 | -66 | 11 | -12 | -192 ];
4526                         input int in1 = [ 2 | 8 | 11 | -12 | -192 | 1 | -66 | 5 | 255 | 0 ];
4527                         input int in2 = [ -192 | -12 | -66 | 8 | 1 | 2 | 5 | 11 | 255 | 0 ];
4528                         output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, false, false) ];
4529                 }
4530
4531                 both ""
4532                         precision mediump float;
4533                         precision mediump int;
4534
4535                         ${DECLARATIONS}
4536
4537                         void main()
4538                         {
4539                                 ${SETUP}
4540                                 out0 = bvec3(in0, in1, in2);
4541                                 ${OUTPUT}
4542                         }
4543                 ""
4544         end
4545
4546         case bool_bool_bool_to_vec3
4547                 values
4548                 {
4549                         input bool in0 = [ false | true ];
4550                         input bool in1 = [ false | true ];
4551                         input bool in2 = [ false | true ];
4552                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) ];
4553                 }
4554
4555                 both ""
4556                         precision mediump float;
4557                         precision mediump int;
4558
4559                         ${DECLARATIONS}
4560
4561                         void main()
4562                         {
4563                                 ${SETUP}
4564                                 out0 = vec3(in0, in1, in2);
4565                                 ${OUTPUT}
4566                         }
4567                 ""
4568         end
4569
4570         case bool_bool_bool_to_ivec3
4571                 values
4572                 {
4573                         input bool in0 = [ false | true ];
4574                         input bool in1 = [ false | true ];
4575                         input bool in2 = [ false | true ];
4576                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) ];
4577                 }
4578
4579                 both ""
4580                         precision mediump float;
4581                         precision mediump int;
4582
4583                         ${DECLARATIONS}
4584
4585                         void main()
4586                         {
4587                                 ${SETUP}
4588                                 out0 = ivec3(in0, in1, in2);
4589                                 ${OUTPUT}
4590                         }
4591                 ""
4592         end
4593
4594         case bool_bool_bool_to_bvec3
4595                 values
4596                 {
4597                         input bool in0 = [ false | true ];
4598                         input bool in1 = [ false | true ];
4599                         input bool in2 = [ false | true ];
4600                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) ];
4601                 }
4602
4603                 both ""
4604                         precision mediump float;
4605                         precision mediump int;
4606
4607                         ${DECLARATIONS}
4608
4609                         void main()
4610                         {
4611                                 ${SETUP}
4612                                 out0 = bvec3(in0, in1, in2);
4613                                 ${OUTPUT}
4614                         }
4615                 ""
4616         end
4617
4618         case bool_float_int_to_vec3
4619                 values
4620                 {
4621                         input bool in0 = [ false | true | false | true | false | true | false | true | false | true ];
4622                         input float in1 = [ 0.0 | 2.0 | 1.0 | -0.5 | -8.25 | 3.5 | -20.125 | 1.0 | 0.0 | 36.8125 ];
4623                         input int in2 = [ -12 | -192 | 2 | 5 | -66 | 255 | 11 | 0 | 8 | 1 ];
4624                         output vec3 out0 = [ vec3(0.0, 0.0, -12.0) | vec3(1.0, 2.0, -192.0) | vec3(0.0, 1.0, 2.0) | vec3(1.0, -0.5, 5.0) | vec3(0.0, -8.25, -66.0) | vec3(1.0, 3.5, 255.0) | vec3(0.0, -20.125, 11.0) | vec3(1.0, 1.0, 0.0) | vec3(0.0, 0.0, 8.0) | vec3(1.0, 36.8125, 1.0) ];
4625                 }
4626
4627                 both ""
4628                         precision mediump float;
4629                         precision mediump int;
4630
4631                         ${DECLARATIONS}
4632
4633                         void main()
4634                         {
4635                                 ${SETUP}
4636                                 out0 = vec3(in0, in1, in2);
4637                                 ${OUTPUT}
4638                         }
4639                 ""
4640         end
4641
4642         case bool_float_int_to_ivec3
4643                 values
4644                 {
4645                         input bool in0 = [ false | true | false | true | false | true | false | true | false | true ];
4646                         input float in1 = [ 0.0 | 2.0 | 1.0 | -0.5 | -8.25 | 3.5 | -20.125 | 1.0 | 0.0 | 36.8125 ];
4647                         input int in2 = [ -12 | -192 | 2 | 5 | -66 | 255 | 11 | 0 | 8 | 1 ];
4648                         output ivec3 out0 = [ ivec3(0, 0, -12) | ivec3(1, 2, -192) | ivec3(0, 1, 2) | ivec3(1, 0, 5) | ivec3(0, -8, -66) | ivec3(1, 3, 255) | ivec3(0, -20, 11) | ivec3(1, 1, 0) | ivec3(0, 0, 8) | ivec3(1, 36, 1) ];
4649                 }
4650
4651                 both ""
4652                         precision mediump float;
4653                         precision mediump int;
4654
4655                         ${DECLARATIONS}
4656
4657                         void main()
4658                         {
4659                                 ${SETUP}
4660                                 out0 = ivec3(in0, in1, in2);
4661                                 ${OUTPUT}
4662                         }
4663                 ""
4664         end
4665
4666         case bool_float_int_to_bvec3
4667                 values
4668                 {
4669                         input bool in0 = [ false | true | false | true | false | true | false | true | false | true ];
4670                         input float in1 = [ 0.0 | 2.0 | 1.0 | -0.5 | -8.25 | 3.5 | -20.125 | 1.0 | 0.0 | 36.8125 ];
4671                         input int in2 = [ -12 | -192 | 2 | 5 | -66 | 255 | 11 | 0 | 8 | 1 ];
4672                         output bvec3 out0 = [ bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, false) | bvec3(false, false, true) | bvec3(true, true, true) ];
4673                 }
4674
4675                 both ""
4676                         precision mediump float;
4677                         precision mediump int;
4678
4679                         ${DECLARATIONS}
4680
4681                         void main()
4682                         {
4683                                 ${SETUP}
4684                                 out0 = bvec3(in0, in1, in2);
4685                                 ${OUTPUT}
4686                         }
4687                 ""
4688         end
4689
4690         case vec2_bool_to_vec3
4691                 values
4692                 {
4693                         input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ];
4694                         input bool in1 = [ false | true | false | true | true ];
4695                         output vec3 out0 = [ vec3(-0.75, -0.0322580645161, 0.0) | vec3(1.0, 1.25, 1.0) | vec3(-0.5, -2.25, 0.0) | vec3(0.0, 0.5, 1.0) | vec3(-32.0, 64.0, 1.0) ];
4696                 }
4697
4698                 both ""
4699                         precision mediump float;
4700                         precision mediump int;
4701
4702                         ${DECLARATIONS}
4703
4704                         void main()
4705                         {
4706                                 ${SETUP}
4707                                 out0 = vec3(in0, in1);
4708                                 ${OUTPUT}
4709                         }
4710                 ""
4711         end
4712
4713         case vec2_bool_to_ivec3
4714                 values
4715                 {
4716                         input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ];
4717                         input bool in1 = [ false | true | false | true | true ];
4718                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, 0) | ivec3(0, 0, 1) | ivec3(-32, 64, 1) ];
4719                 }
4720
4721                 both ""
4722                         precision mediump float;
4723                         precision mediump int;
4724
4725                         ${DECLARATIONS}
4726
4727                         void main()
4728                         {
4729                                 ${SETUP}
4730                                 out0 = ivec3(in0, in1);
4731                                 ${OUTPUT}
4732                         }
4733                 ""
4734         end
4735
4736         case vec2_bool_to_bvec3
4737                 values
4738                 {
4739                         input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ];
4740                         input bool in1 = [ false | true | false | true | true ];
4741                         output bvec3 out0 = [ bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, false) | bvec3(false, true, true) | bvec3(true, true, true) ];
4742                 }
4743
4744                 both ""
4745                         precision mediump float;
4746                         precision mediump int;
4747
4748                         ${DECLARATIONS}
4749
4750                         void main()
4751                         {
4752                                 ${SETUP}
4753                                 out0 = bvec3(in0, in1);
4754                                 ${OUTPUT}
4755                         }
4756                 ""
4757         end
4758
4759         case bvec2_float_to_vec3
4760                 values
4761                 {
4762                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
4763                         input float in1 = [ 2.0 | 36.8125 | 0.0 | -20.125 | 1.0 | -0.5 | -8.25 | 3.5 ];
4764                         output vec3 out0 = [ vec3(1.0, 0.0, 2.0) | vec3(0.0, 0.0, 36.8125) | vec3(1.0, 0.0, 0.0) | vec3(0.0, 1.0, -20.125) | vec3(0.0, 0.0, 1.0) | vec3(0.0, 1.0, -0.5) | vec3(0.0, 0.0, -8.25) | vec3(1.0, 1.0, 3.5) ];
4765                 }
4766
4767                 both ""
4768                         precision mediump float;
4769                         precision mediump int;
4770
4771                         ${DECLARATIONS}
4772
4773                         void main()
4774                         {
4775                                 ${SETUP}
4776                                 out0 = vec3(in0, in1);
4777                                 ${OUTPUT}
4778                         }
4779                 ""
4780         end
4781
4782         case bvec2_float_to_ivec3
4783                 values
4784                 {
4785                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
4786                         input float in1 = [ 2.0 | 36.8125 | 0.0 | -20.125 | 1.0 | -0.5 | -8.25 | 3.5 ];
4787                         output ivec3 out0 = [ ivec3(1, 0, 2) | ivec3(0, 0, 36) | ivec3(1, 0, 0) | ivec3(0, 1, -20) | ivec3(0, 0, 1) | ivec3(0, 1, 0) | ivec3(0, 0, -8) | ivec3(1, 1, 3) ];
4788                 }
4789
4790                 both ""
4791                         precision mediump float;
4792                         precision mediump int;
4793
4794                         ${DECLARATIONS}
4795
4796                         void main()
4797                         {
4798                                 ${SETUP}
4799                                 out0 = ivec3(in0, in1);
4800                                 ${OUTPUT}
4801                         }
4802                 ""
4803         end
4804
4805         case bvec2_float_to_bvec3
4806                 values
4807                 {
4808                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
4809                         input float in1 = [ 2.0 | 36.8125 | 0.0 | -20.125 | 1.0 | -0.5 | -8.25 | 3.5 ];
4810                         output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, true) | bvec3(true, false, false) | bvec3(false, true, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(false, false, true) | bvec3(true, true, true) ];
4811                 }
4812
4813                 both ""
4814                         precision mediump float;
4815                         precision mediump int;
4816
4817                         ${DECLARATIONS}
4818
4819                         void main()
4820                         {
4821                                 ${SETUP}
4822                                 out0 = bvec3(in0, in1);
4823                                 ${OUTPUT}
4824                         }
4825                 ""
4826         end
4827
4828         case bvec2_int_to_vec3
4829                 values
4830                 {
4831                         input bvec2 in0 = [ bvec2(false, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ];
4832                         input int in1 = [ 0 | 255 | 1 | 2 | 8 | 11 | -192 | 5 | -12 | -66 ];
4833                         output vec3 out0 = [ vec3(0.0, 1.0, 0.0) | vec3(0.0, 1.0, 255.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 2.0) | vec3(0.0, 0.0, 8.0) | vec3(0.0, 0.0, 11.0) | vec3(1.0, 1.0, -192.0) | vec3(1.0, 0.0, 5.0) | vec3(1.0, 0.0, -12.0) | vec3(0.0, 0.0, -66.0) ];
4834                 }
4835
4836                 both ""
4837                         precision mediump float;
4838                         precision mediump int;
4839
4840                         ${DECLARATIONS}
4841
4842                         void main()
4843                         {
4844                                 ${SETUP}
4845                                 out0 = vec3(in0, in1);
4846                                 ${OUTPUT}
4847                         }
4848                 ""
4849         end
4850
4851         case bvec2_int_to_ivec3
4852                 values
4853                 {
4854                         input bvec2 in0 = [ bvec2(false, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ];
4855                         input int in1 = [ 0 | 255 | 1 | 2 | 8 | 11 | -192 | 5 | -12 | -66 ];
4856                         output ivec3 out0 = [ ivec3(0, 1, 0) | ivec3(0, 1, 255) | ivec3(1, 1, 1) | ivec3(0, 0, 2) | ivec3(0, 0, 8) | ivec3(0, 0, 11) | ivec3(1, 1, -192) | ivec3(1, 0, 5) | ivec3(1, 0, -12) | ivec3(0, 0, -66) ];
4857                 }
4858
4859                 both ""
4860                         precision mediump float;
4861                         precision mediump int;
4862
4863                         ${DECLARATIONS}
4864
4865                         void main()
4866                         {
4867                                 ${SETUP}
4868                                 out0 = ivec3(in0, in1);
4869                                 ${OUTPUT}
4870                         }
4871                 ""
4872         end
4873
4874         case bvec2_int_to_bvec3
4875                 values
4876                 {
4877                         input bvec2 in0 = [ bvec2(false, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ];
4878                         input int in1 = [ 0 | 255 | 1 | 2 | 8 | 11 | -192 | 5 | -12 | -66 ];
4879                         output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(true, false, true) | bvec3(true, false, true) | bvec3(false, false, true) ];
4880                 }
4881
4882                 both ""
4883                         precision mediump float;
4884                         precision mediump int;
4885
4886                         ${DECLARATIONS}
4887
4888                         void main()
4889                         {
4890                                 ${SETUP}
4891                                 out0 = bvec3(in0, in1);
4892                                 ${OUTPUT}
4893                         }
4894                 ""
4895         end
4896
4897         case bool_ivec2_to_vec3
4898                 values
4899                 {
4900                         input bool in0 = [ false | true | false | true | true ];
4901                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
4902                         output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 0.0, -2.0) | vec3(0.0, 0.0, 0.0) | vec3(1.0, -32.0, 64.0) | vec3(1.0, 1.0, 1.0) ];
4903                 }
4904
4905                 both ""
4906                         precision mediump float;
4907                         precision mediump int;
4908
4909                         ${DECLARATIONS}
4910
4911                         void main()
4912                         {
4913                                 ${SETUP}
4914                                 out0 = vec3(in0, in1);
4915                                 ${OUTPUT}
4916                         }
4917                 ""
4918         end
4919
4920         case bool_ivec2_to_ivec3
4921                 values
4922                 {
4923                         input bool in0 = [ false | true | false | true | true ];
4924                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
4925                         output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 0, -2) | ivec3(0, 0, 0) | ivec3(1, -32, 64) | ivec3(1, 1, 1) ];
4926                 }
4927
4928                 both ""
4929                         precision mediump float;
4930                         precision mediump int;
4931
4932                         ${DECLARATIONS}
4933
4934                         void main()
4935                         {
4936                                 ${SETUP}
4937                                 out0 = ivec3(in0, in1);
4938                                 ${OUTPUT}
4939                         }
4940                 ""
4941         end
4942
4943         case bool_ivec2_to_bvec3
4944                 values
4945                 {
4946                         input bool in0 = [ false | true | false | true | true ];
4947                         input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
4948                         output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) ];
4949                 }
4950
4951                 both ""
4952                         precision mediump float;
4953                         precision mediump int;
4954
4955                         ${DECLARATIONS}
4956
4957                         void main()
4958                         {
4959                                 ${SETUP}
4960                                 out0 = bvec3(in0, in1);
4961                                 ${OUTPUT}
4962                         }
4963                 ""
4964         end
4965
4966         case float_float_to_vec2
4967                 values
4968                 {
4969                         input float in0 = [ 2.0 | 3.5 | -8.25 | -0.5 | 0.0 | -20.125 | 36.8125 | 1.0 ];
4970                         input float in1 = [ 3.5 | -20.125 | -0.5 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 ];
4971                         output vec2 out0 = [ vec2(2.0, 3.5) | vec2(3.5, -20.125) | vec2(-8.25, -0.5) | vec2(-0.5, 2.0) | vec2(0.0, 1.0) | vec2(-20.125, 0.0) | vec2(36.8125, 36.8125) | vec2(1.0, -8.25) ];
4972                 }
4973
4974                 both ""
4975                         precision mediump float;
4976                         precision mediump int;
4977
4978                         ${DECLARATIONS}
4979
4980                         void main()
4981                         {
4982                                 ${SETUP}
4983                                 out0 = vec2(in0, in1);
4984                                 ${OUTPUT}
4985                         }
4986                 ""
4987         end
4988
4989         case float_float_to_ivec2
4990                 values
4991                 {
4992                         input float in0 = [ 2.0 | 3.5 | -8.25 | -0.5 | 0.0 | -20.125 | 36.8125 | 1.0 ];
4993                         input float in1 = [ 3.5 | -20.125 | -0.5 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 ];
4994                         output ivec2 out0 = [ ivec2(2, 3) | ivec2(3, -20) | ivec2(-8, 0) | ivec2(0, 2) | ivec2(0, 1) | ivec2(-20, 0) | ivec2(36, 36) | ivec2(1, -8) ];
4995                 }
4996
4997                 both ""
4998                         precision mediump float;
4999                         precision mediump int;
5000
5001                         ${DECLARATIONS}
5002
5003                         void main()
5004                         {
5005                                 ${SETUP}
5006                                 out0 = ivec2(in0, in1);
5007                                 ${OUTPUT}
5008                         }
5009                 ""
5010         end
5011
5012         case float_float_to_bvec2
5013                 values
5014                 {
5015                         input float in0 = [ 2.0 | 3.5 | -8.25 | -0.5 | 0.0 | -20.125 | 36.8125 | 1.0 ];
5016                         input float in1 = [ 3.5 | -20.125 | -0.5 | 2.0 | 1.0 | 0.0 | 36.8125 | -8.25 ];
5017                         output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) ];
5018                 }
5019
5020                 both ""
5021                         precision mediump float;
5022                         precision mediump int;
5023
5024                         ${DECLARATIONS}
5025
5026                         void main()
5027                         {
5028                                 ${SETUP}
5029                                 out0 = bvec2(in0, in1);
5030                                 ${OUTPUT}
5031                         }
5032                 ""
5033         end
5034
5035         case int_int_to_vec2
5036                 values
5037                 {
5038                         input int in0 = [ 8 | 255 | -192 | 2 | 0 | 1 | -12 | 11 | -66 | 5 ];
5039                         input int in1 = [ -66 | 2 | 255 | 8 | -12 | 5 | -192 | 0 | 1 | 11 ];
5040                         output vec2 out0 = [ vec2(8.0, -66.0) | vec2(255.0, 2.0) | vec2(-192.0, 255.0) | vec2(2.0, 8.0) | vec2(0.0, -12.0) | vec2(1.0, 5.0) | vec2(-12.0, -192.0) | vec2(11.0, 0.0) | vec2(-66.0, 1.0) | vec2(5.0, 11.0) ];
5041                 }
5042
5043                 both ""
5044                         precision mediump float;
5045                         precision mediump int;
5046
5047                         ${DECLARATIONS}
5048
5049                         void main()
5050                         {
5051                                 ${SETUP}
5052                                 out0 = vec2(in0, in1);
5053                                 ${OUTPUT}
5054                         }
5055                 ""
5056         end
5057
5058         case int_int_to_ivec2
5059                 values
5060                 {
5061                         input int in0 = [ 8 | 255 | -192 | 2 | 0 | 1 | -12 | 11 | -66 | 5 ];
5062                         input int in1 = [ -66 | 2 | 255 | 8 | -12 | 5 | -192 | 0 | 1 | 11 ];
5063                         output ivec2 out0 = [ ivec2(8, -66) | ivec2(255, 2) | ivec2(-192, 255) | ivec2(2, 8) | ivec2(0, -12) | ivec2(1, 5) | ivec2(-12, -192) | ivec2(11, 0) | ivec2(-66, 1) | ivec2(5, 11) ];
5064                 }
5065
5066                 both ""
5067                         precision mediump float;
5068                         precision mediump int;
5069
5070                         ${DECLARATIONS}
5071
5072                         void main()
5073                         {
5074                                 ${SETUP}
5075                                 out0 = ivec2(in0, in1);
5076                                 ${OUTPUT}
5077                         }
5078                 ""
5079         end
5080
5081         case int_int_to_bvec2
5082                 values
5083                 {
5084                         input int in0 = [ 8 | 255 | -192 | 2 | 0 | 1 | -12 | 11 | -66 | 5 ];
5085                         input int in1 = [ -66 | 2 | 255 | 8 | -12 | 5 | -192 | 0 | 1 | 11 ];
5086                         output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) ];
5087                 }
5088
5089                 both ""
5090                         precision mediump float;
5091                         precision mediump int;
5092
5093                         ${DECLARATIONS}
5094
5095                         void main()
5096                         {
5097                                 ${SETUP}
5098                                 out0 = bvec2(in0, in1);
5099                                 ${OUTPUT}
5100                         }
5101                 ""
5102         end
5103
5104         case bool_bool_to_vec2
5105                 values
5106                 {
5107                         input bool in0 = [ true | false ];
5108                         input bool in1 = [ true | false ];
5109                         output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
5110                 }
5111
5112                 both ""
5113                         precision mediump float;
5114                         precision mediump int;
5115
5116                         ${DECLARATIONS}
5117
5118                         void main()
5119                         {
5120                                 ${SETUP}
5121                                 out0 = vec2(in0, in1);
5122                                 ${OUTPUT}
5123                         }
5124                 ""
5125         end
5126
5127         case bool_bool_to_ivec2
5128                 values
5129                 {
5130                         input bool in0 = [ true | false ];
5131                         input bool in1 = [ true | false ];
5132                         output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ];
5133                 }
5134
5135                 both ""
5136                         precision mediump float;
5137                         precision mediump int;
5138
5139                         ${DECLARATIONS}
5140
5141                         void main()
5142                         {
5143                                 ${SETUP}
5144                                 out0 = ivec2(in0, in1);
5145                                 ${OUTPUT}
5146                         }
5147                 ""
5148         end
5149
5150         case bool_bool_to_bvec2
5151                 values
5152                 {
5153                         input bool in0 = [ true | false ];
5154                         input bool in1 = [ true | false ];
5155                         output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ];
5156                 }
5157
5158                 both ""
5159                         precision mediump float;
5160                         precision mediump int;
5161
5162                         ${DECLARATIONS}
5163
5164                         void main()
5165                         {
5166                                 ${SETUP}
5167                                 out0 = bvec2(in0, in1);
5168                                 ${OUTPUT}
5169                         }
5170                 ""
5171         end
5172
5173         case float_int_to_vec2
5174                 values
5175                 {
5176                         input float in0 = [ 1.0 | -0.5 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | 2.0 | 1.0 | 0.0 ];
5177                         input int in1 = [ -192 | -66 | 255 | 1 | 2 | 0 | -12 | 5 | 11 | 8 ];
5178                         output vec2 out0 = [ vec2(1.0, -192.0) | vec2(-0.5, -66.0) | vec2(-20.125, 255.0) | vec2(0.0, 1.0) | vec2(3.5, 2.0) | vec2(-8.25, 0.0) | vec2(36.8125, -12.0) | vec2(2.0, 5.0) | vec2(1.0, 11.0) | vec2(0.0, 8.0) ];
5179                 }
5180
5181                 both ""
5182                         precision mediump float;
5183                         precision mediump int;
5184
5185                         ${DECLARATIONS}
5186
5187                         void main()
5188                         {
5189                                 ${SETUP}
5190                                 out0 = vec2(in0, in1);
5191                                 ${OUTPUT}
5192                         }
5193                 ""
5194         end
5195
5196         case float_int_to_ivec2
5197                 values
5198                 {
5199                         input float in0 = [ 1.0 | -0.5 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | 2.0 | 1.0 | 0.0 ];
5200                         input int in1 = [ -192 | -66 | 255 | 1 | 2 | 0 | -12 | 5 | 11 | 8 ];
5201                         output ivec2 out0 = [ ivec2(1, -192) | ivec2(0, -66) | ivec2(-20, 255) | ivec2(0, 1) | ivec2(3, 2) | ivec2(-8, 0) | ivec2(36, -12) | ivec2(2, 5) | ivec2(1, 11) | ivec2(0, 8) ];
5202                 }
5203
5204                 both ""
5205                         precision mediump float;
5206                         precision mediump int;
5207
5208                         ${DECLARATIONS}
5209
5210                         void main()
5211                         {
5212                                 ${SETUP}
5213                                 out0 = ivec2(in0, in1);
5214                                 ${OUTPUT}
5215                         }
5216                 ""
5217         end
5218
5219         case float_int_to_bvec2
5220                 values
5221                 {
5222                         input float in0 = [ 1.0 | -0.5 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | 2.0 | 1.0 | 0.0 ];
5223                         input int in1 = [ -192 | -66 | 255 | 1 | 2 | 0 | -12 | 5 | 11 | 8 ];
5224                         output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) ];
5225                 }
5226
5227                 both ""
5228                         precision mediump float;
5229                         precision mediump int;
5230
5231                         ${DECLARATIONS}
5232
5233                         void main()
5234                         {
5235                                 ${SETUP}
5236                                 out0 = bvec2(in0, in1);
5237                                 ${OUTPUT}
5238                         }
5239                 ""
5240         end
5241
5242         case float_bool_to_vec2
5243                 values
5244                 {
5245                         input float in0 = [ 2.0 | -20.125 | 0.0 | 1.0 | -8.25 | -0.5 | 36.8125 | 3.5 ];
5246                         input bool in1 = [ true | false | false | false | true | true | false | true ];
5247                         output vec2 out0 = [ vec2(2.0, 1.0) | vec2(-20.125, 0.0) | vec2(0.0, 0.0) | vec2(1.0, 0.0) | vec2(-8.25, 1.0) | vec2(-0.5, 1.0) | vec2(36.8125, 0.0) | vec2(3.5, 1.0) ];
5248                 }
5249
5250                 both ""
5251                         precision mediump float;
5252                         precision mediump int;
5253
5254                         ${DECLARATIONS}
5255
5256                         void main()
5257                         {
5258                                 ${SETUP}
5259                                 out0 = vec2(in0, in1);
5260                                 ${OUTPUT}
5261                         }
5262                 ""
5263         end
5264
5265         case float_bool_to_ivec2
5266                 values
5267                 {
5268                         input float in0 = [ 2.0 | -20.125 | 0.0 | 1.0 | -8.25 | -0.5 | 36.8125 | 3.5 ];
5269                         input bool in1 = [ true | false | false | false | true | true | false | true ];
5270                         output ivec2 out0 = [ ivec2(2, 1) | ivec2(-20, 0) | ivec2(0, 0) | ivec2(1, 0) | ivec2(-8, 1) | ivec2(0, 1) | ivec2(36, 0) | ivec2(3, 1) ];
5271                 }
5272
5273                 both ""
5274                         precision mediump float;
5275                         precision mediump int;
5276
5277                         ${DECLARATIONS}
5278
5279                         void main()
5280                         {
5281                                 ${SETUP}
5282                                 out0 = ivec2(in0, in1);
5283                                 ${OUTPUT}
5284                         }
5285                 ""
5286         end
5287
5288         case float_bool_to_bvec2
5289                 values
5290                 {
5291                         input float in0 = [ 2.0 | -20.125 | 0.0 | 1.0 | -8.25 | -0.5 | 36.8125 | 3.5 ];
5292                         input bool in1 = [ true | false | false | false | true | true | false | true ];
5293                         output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) ];
5294                 }
5295
5296                 both ""
5297                         precision mediump float;
5298                         precision mediump int;
5299
5300                         ${DECLARATIONS}
5301
5302                         void main()
5303                         {
5304                                 ${SETUP}
5305                                 out0 = bvec2(in0, in1);
5306                                 ${OUTPUT}
5307                         }
5308                 ""
5309         end
5310
5311         case int_bool_to_vec2
5312                 values
5313                 {
5314                         input int in0 = [ 8 | 255 | 11 | -66 | 0 | -192 | -12 | 1 | 5 | 2 ];
5315                         input bool in1 = [ true | false | true | false | true | false | false | true | false | true ];
5316                         output vec2 out0 = [ vec2(8.0, 1.0) | vec2(255.0, 0.0) | vec2(11.0, 1.0) | vec2(-66.0, 0.0) | vec2(0.0, 1.0) | vec2(-192.0, 0.0) | vec2(-12.0, 0.0) | vec2(1.0, 1.0) | vec2(5.0, 0.0) | vec2(2.0, 1.0) ];
5317                 }
5318
5319                 both ""
5320                         precision mediump float;
5321                         precision mediump int;
5322
5323                         ${DECLARATIONS}
5324
5325                         void main()
5326                         {
5327                                 ${SETUP}
5328                                 out0 = vec2(in0, in1);
5329                                 ${OUTPUT}
5330                         }
5331                 ""
5332         end
5333
5334         case int_bool_to_ivec2
5335                 values
5336                 {
5337                         input int in0 = [ 8 | 255 | 11 | -66 | 0 | -192 | -12 | 1 | 5 | 2 ];
5338                         input bool in1 = [ true | false | true | false | true | false | false | true | false | true ];
5339                         output ivec2 out0 = [ ivec2(8, 1) | ivec2(255, 0) | ivec2(11, 1) | ivec2(-66, 0) | ivec2(0, 1) | ivec2(-192, 0) | ivec2(-12, 0) | ivec2(1, 1) | ivec2(5, 0) | ivec2(2, 1) ];
5340                 }
5341
5342                 both ""
5343                         precision mediump float;
5344                         precision mediump int;
5345
5346                         ${DECLARATIONS}
5347
5348                         void main()
5349                         {
5350                                 ${SETUP}
5351                                 out0 = ivec2(in0, in1);
5352                                 ${OUTPUT}
5353                         }
5354                 ""
5355         end
5356
5357         case int_bool_to_bvec2
5358                 values
5359                 {
5360                         input int in0 = [ 8 | 255 | 11 | -66 | 0 | -192 | -12 | 1 | 5 | 2 ];
5361                         input bool in1 = [ true | false | true | false | true | false | false | true | false | true ];
5362                         output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) ];
5363                 }
5364
5365                 both ""
5366                         precision mediump float;
5367                         precision mediump int;
5368
5369                         ${DECLARATIONS}
5370
5371                         void main()
5372                         {
5373                                 ${SETUP}
5374                                 out0 = bvec2(in0, in1);
5375                                 ${OUTPUT}
5376                         }
5377                 ""
5378         end
5379
5380
5381 end # vector_combine
5382 group matrix_combine "Matrix Combine Constructors"
5383
5384         case vec2_vec2_to_mat2
5385                 values
5386                 {
5387                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) ];
5388                         input vec2 in1 = [ vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(1.0, 1.25) ];
5389                         output mat2 out0 = [ mat2(0.0, 0.5, -0.5, -2.25) | mat2(1.0, 1.25, -0.75, -0.0322580645161) | mat2(-32.0, 64.0, -32.0, 64.0) | mat2(-0.75, -0.0322580645161, 0.0, 0.5) | mat2(-0.5, -2.25, 1.0, 1.25) ];
5390                 }
5391
5392                 both ""
5393                         precision mediump float;
5394                         precision mediump int;
5395
5396                         ${DECLARATIONS}
5397
5398                         void main()
5399                         {
5400                                 ${SETUP}
5401                                 out0 = mat2(in0, in1);
5402                                 ${OUTPUT}
5403                         }
5404                 ""
5405         end
5406
5407         case bvec2_bvec2_to_mat2
5408                 values
5409                 {
5410                         input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
5411                         input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) ];
5412                         output mat2 out0 = [ mat2(1.0, 0.0, 1.0, 1.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(0.0, 1.0, 1.0, 0.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 1.0, 0.0, 1.0) ];
5413                 }
5414
5415                 both ""
5416                         precision mediump float;
5417                         precision mediump int;
5418
5419                         ${DECLARATIONS}
5420
5421                         void main()
5422                         {
5423                                 ${SETUP}
5424                                 out0 = mat2(in0, in1);
5425                                 ${OUTPUT}
5426                         }
5427                 ""
5428         end
5429
5430         case float_float_float_float_to_mat2
5431                 values
5432                 {
5433                         input float in0 = [ 0.0 | -0.5 | -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | -8.25 ];
5434                         input float in1 = [ -8.25 | 2.0 | -0.5 | -20.125 | 3.5 | 1.0 | 36.8125 | 0.0 ];
5435                         input float in2 = [ 36.8125 | -8.25 | 3.5 | 2.0 | -0.5 | -20.125 | 1.0 | 0.0 ];
5436                         input float in3 = [ 36.8125 | 0.0 | 2.0 | 3.5 | -8.25 | -0.5 | -20.125 | 1.0 ];
5437                         output mat2 out0 = [ mat2(0.0, -8.25, 36.8125, 36.8125) | mat2(-0.5, 2.0, -8.25, 0.0) | mat2(-20.125, -0.5, 3.5, 2.0) | mat2(2.0, -20.125, 2.0, 3.5) | mat2(36.8125, 3.5, -0.5, -8.25) | mat2(1.0, 1.0, -20.125, -0.5) | mat2(3.5, 36.8125, 1.0, -20.125) | mat2(-8.25, 0.0, 0.0, 1.0) ];
5438                 }
5439
5440                 both ""
5441                         precision mediump float;
5442                         precision mediump int;
5443
5444                         ${DECLARATIONS}
5445
5446                         void main()
5447                         {
5448                                 ${SETUP}
5449                                 out0 = mat2(in0, in1, in2, in3);
5450                                 ${OUTPUT}
5451                         }
5452                 ""
5453         end
5454
5455         case int_int_int_int_to_mat2
5456                 values
5457                 {
5458                         input int in0 = [ 2 | 0 | -66 | 8 | 1 | 255 | 5 | -12 | 11 | -192 ];
5459                         input int in1 = [ -192 | 2 | 5 | -12 | -66 | 255 | 8 | 1 | 11 | 0 ];
5460                         input int in2 = [ 2 | 11 | -192 | 255 | 1 | 5 | 0 | -12 | 8 | -66 ];
5461                         input int in3 = [ 255 | 0 | 11 | -66 | 2 | 8 | -192 | 1 | -12 | 5 ];
5462                         output mat2 out0 = [ mat2(2.0, -192.0, 2.0, 255.0) | mat2(0.0, 2.0, 11.0, 0.0) | mat2(-66.0, 5.0, -192.0, 11.0) | mat2(8.0, -12.0, 255.0, -66.0) | mat2(1.0, -66.0, 1.0, 2.0) | mat2(255.0, 255.0, 5.0, 8.0) | mat2(5.0, 8.0, 0.0, -192.0) | mat2(-12.0, 1.0, -12.0, 1.0) | mat2(11.0, 11.0, 8.0, -12.0) | mat2(-192.0, 0.0, -66.0, 5.0) ];
5463                 }
5464
5465                 both ""
5466                         precision mediump float;
5467                         precision mediump int;
5468
5469                         ${DECLARATIONS}
5470
5471                         void main()
5472                         {
5473                                 ${SETUP}
5474                                 out0 = mat2(in0, in1, in2, in3);
5475                                 ${OUTPUT}
5476                         }
5477                 ""
5478         end
5479
5480         case bool_bool_bool_bool_to_mat2
5481                 values
5482                 {
5483                         input bool in0 = [ false | true ];
5484                         input bool in1 = [ false | true ];
5485                         input bool in2 = [ true | false ];
5486                         input bool in3 = [ false | true ];
5487                         output mat2 out0 = [ mat2(0.0, 0.0, 1.0, 0.0) | mat2(1.0, 1.0, 0.0, 1.0) ];
5488                 }
5489
5490                 both ""
5491                         precision mediump float;
5492                         precision mediump int;
5493
5494                         ${DECLARATIONS}
5495
5496                         void main()
5497                         {
5498                                 ${SETUP}
5499                                 out0 = mat2(in0, in1, in2, in3);
5500                                 ${OUTPUT}
5501                         }
5502                 ""
5503         end
5504
5505         case bool_float_int_bool_to_mat2
5506                 values
5507                 {
5508                         input bool in0 = [ false | true | true | false | false | true | true | true | false | false ];
5509                         input float in1 = [ -0.5 | -20.125 | 3.5 | 2.0 | 1.0 | 0.0 | 0.0 | 1.0 | 36.8125 | -8.25 ];
5510                         input int in2 = [ -66 | -192 | 5 | 255 | 0 | -12 | 11 | 1 | 2 | 8 ];
5511                         input bool in3 = [ true | false | true | false | false | false | true | false | true | true ];
5512                         output mat2 out0 = [ mat2(0.0, -0.5, -66.0, 1.0) | mat2(1.0, -20.125, -192.0, 0.0) | mat2(1.0, 3.5, 5.0, 1.0) | mat2(0.0, 2.0, 255.0, 0.0) | mat2(0.0, 1.0, 0.0, 0.0) | mat2(1.0, 0.0, -12.0, 0.0) | mat2(1.0, 0.0, 11.0, 1.0) | mat2(1.0, 1.0, 1.0, 0.0) | mat2(0.0, 36.8125, 2.0, 1.0) | mat2(0.0, -8.25, 8.0, 1.0) ];
5513                 }
5514
5515                 both ""
5516                         precision mediump float;
5517                         precision mediump int;
5518
5519                         ${DECLARATIONS}
5520
5521                         void main()
5522                         {
5523                                 ${SETUP}
5524                                 out0 = mat2(in0, in1, in2, in3);
5525                                 ${OUTPUT}
5526                         }
5527                 ""
5528         end
5529
5530         case vec2_ivec2_to_mat2
5531                 values
5532                 {
5533                         input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) ];
5534                         input ivec2 in1 = [ ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
5535                         output mat2 out0 = [ mat2(0.0, 0.5, -32.0, 64.0) | mat2(-32.0, 64.0, 0.0, 0.0) | mat2(-0.5, -2.25, 0.0, -2.0) | mat2(-0.75, -0.0322580645161, 0.0, 0.0) | mat2(1.0, 1.25, 1.0, 1.0) ];
5536                 }
5537
5538                 both ""
5539                         precision mediump float;
5540                         precision mediump int;
5541
5542                         ${DECLARATIONS}
5543
5544                         void main()
5545                         {
5546                                 ${SETUP}
5547                                 out0 = mat2(in0, in1);
5548                                 ${OUTPUT}
5549                         }
5550                 ""
5551         end
5552
5553         case vec2_bvec2_to_mat2
5554                 values
5555                 {
5556                         input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(0.0, 0.5) ];
5557                         input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) ];
5558                         output mat2 out0 = [ mat2(-32.0, 64.0, 0.0, 1.0) | mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, 1.0, 0.0) | mat2(1.0, 1.25, 0.0, 0.0) | mat2(0.0, 0.5, 1.0, 1.0) ];
5559                 }
5560
5561                 both ""
5562                         precision mediump float;
5563                         precision mediump int;
5564
5565                         ${DECLARATIONS}
5566
5567                         void main()
5568                         {
5569                                 ${SETUP}
5570                                 out0 = mat2(in0, in1);
5571                                 ${OUTPUT}
5572                         }
5573                 ""
5574         end
5575
5576         case bvec3_float_to_mat2
5577                 values
5578                 {
5579                         input bvec3 in0 = [ bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, false, false) ];
5580                         input float in1 = [ -20.125 | -0.5 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ];
5581                         output mat2 out0 = [ mat2(0.0, 1.0, 0.0, -20.125) | mat2(1.0, 1.0, 1.0, -0.5) | mat2(0.0, 0.0, 0.0, 3.5) | mat2(1.0, 0.0, 0.0, -8.25) | mat2(0.0, 1.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(0.0, 0.0, 0.0, 2.0) | mat2(0.0, 0.0, 0.0, 36.8125) ];
5582                 }
5583
5584                 both ""
5585                         precision mediump float;
5586                         precision mediump int;
5587
5588                         ${DECLARATIONS}
5589
5590                         void main()
5591                         {
5592                                 ${SETUP}
5593                                 out0 = mat2(in0, in1);
5594                                 ${OUTPUT}
5595                         }
5596                 ""
5597         end
5598
5599         case vec3_float_to_mat2
5600                 values
5601                 {
5602                         input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) ];
5603                         input float in1 = [ -8.25 | 36.8125 | -0.5 | -20.125 | 1.0 | 2.0 | 0.0 | 3.5 ];
5604                         output mat2 out0 = [ mat2(0.0, 0.5, 0.75, -8.25) | mat2(1.0, 1.25, 1.125, 36.8125) | mat2(-0.75, -0.0322580645161, 0.0526315789474, -0.5) | mat2(-0.5, -2.25, -4.875, -20.125) | mat2(0.0, 0.5, 0.75, 1.0) | mat2(-32.0, 64.0, -51.0, 2.0) | mat2(-0.5, -2.25, -4.875, 0.0) | mat2(1.0, 1.25, 1.125, 3.5) ];
5605                 }
5606
5607                 both ""
5608                         precision mediump float;
5609                         precision mediump int;
5610
5611                         ${DECLARATIONS}
5612
5613                         void main()
5614                         {
5615                                 ${SETUP}
5616                                 out0 = mat2(in0, in1);
5617                                 ${OUTPUT}
5618                         }
5619                 ""
5620         end
5621
5622         case int_ivec2_int_to_mat2
5623                 values
5624                 {
5625                         input int in0 = [ -66 | 255 | 8 | 0 | 5 | -12 | 1 | -192 | 2 | 11 ];
5626                         input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
5627                         input int in2 = [ 0 | -12 | 8 | -66 | 11 | 5 | 255 | 2 | 1 | -192 ];
5628                         output mat2 out0 = [ mat2(-66.0, 0.0, -2.0, 0.0) | mat2(255.0, 0.0, 0.0, -12.0) | mat2(8.0, -32.0, 64.0, 8.0) | mat2(0.0, 1.0, 1.0, -66.0) | mat2(5.0, 0.0, 0.0, 11.0) | mat2(-12.0, 0.0, 0.0, 5.0) | mat2(1.0, -32.0, 64.0, 255.0) | mat2(-192.0, 0.0, -2.0, 2.0) | mat2(2.0, 0.0, 0.0, 1.0) | mat2(11.0, 1.0, 1.0, -192.0) ];
5629                 }
5630
5631                 both ""
5632                         precision mediump float;
5633                         precision mediump int;
5634
5635                         ${DECLARATIONS}
5636
5637                         void main()
5638                         {
5639                                 ${SETUP}
5640                                 out0 = mat2(in0, in1, in2);
5641                                 ${OUTPUT}
5642                         }
5643                 ""
5644         end
5645
5646         case bool_float_ivec2_to_mat2
5647                 values
5648                 {
5649                         input bool in0 = [ true | true | true | false | true | false | false | false ];
5650                         input float in1 = [ 0.0 | 1.0 | 2.0 | -0.5 | 3.5 | -20.125 | 36.8125 | -8.25 ];
5651                         input ivec2 in2 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) ];
5652                         output mat2 out0 = [ mat2(1.0, 0.0, 1.0, 1.0) | mat2(1.0, 1.0, 1.0, 1.0) | mat2(1.0, 2.0, 0.0, -2.0) | mat2(0.0, -0.5, 0.0, 0.0) | mat2(1.0, 3.5, -32.0, 64.0) | mat2(0.0, -20.125, 0.0, -2.0) | mat2(0.0, 36.8125, 0.0, 0.0) | mat2(0.0, -8.25, 0.0, 0.0) ];
5653                 }
5654
5655                 both ""
5656                         precision mediump float;
5657                         precision mediump int;
5658
5659                         ${DECLARATIONS}
5660
5661                         void main()
5662                         {
5663                                 ${SETUP}
5664                                 out0 = mat2(in0, in1, in2);
5665                                 ${OUTPUT}
5666                         }
5667                 ""
5668         end
5669
5670         case vec3_vec3_vec3_to_mat3
5671                 values
5672                 {
5673                         input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ];
5674                         input vec3 in1 = [ vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
5675                         input vec3 in2 = [ vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
5676                         output mat3 out0 = [ mat3(1.0, 1.25, 1.125, -0.5, -2.25, -4.875, -0.5, -2.25, -4.875) | mat3(-0.75, -0.0322580645161, 0.0526315789474, -0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.5, 0.75) | mat3(-32.0, 64.0, -51.0, 0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474) | mat3(-0.5, -2.25, -4.875, -32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3(0.0, 0.5, 0.75, 1.0, 1.25, 1.125, 1.0, 1.25, 1.125) ];
5677                 }
5678
5679                 both ""
5680                         precision mediump float;
5681                         precision mediump int;
5682
5683                         ${DECLARATIONS}
5684
5685                         void main()
5686                         {
5687                                 ${SETUP}
5688                                 out0 = mat3(in0, in1, in2);
5689                                 ${OUTPUT}
5690                         }
5691                 ""
5692         end
5693
5694         case ivec3_ivec3_ivec3_to_mat3
5695                 values
5696                 {
5697                         input ivec3 in0 = [ ivec3(0, -2, -4) | ivec3(1, 1, 1) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ];
5698                         input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
5699                         input ivec3 in2 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) ];
5700                         output mat3 out0 = [ mat3(0.0, -2.0, -4.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) | mat3(-32.0, 64.0, -51.0, 0.0, -2.0, -4.0, 0.0, 0.0, 0.0) | mat3(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0) ];
5701                 }
5702
5703                 both ""
5704                         precision mediump float;
5705                         precision mediump int;
5706
5707                         ${DECLARATIONS}
5708
5709                         void main()
5710                         {
5711                                 ${SETUP}
5712                                 out0 = mat3(in0, in1, in2);
5713                                 ${OUTPUT}
5714                         }
5715                 ""
5716         end
5717
5718         case vec2_ivec2_float_float_int_bool_bool_to_mat3
5719                 values
5720                 {
5721                         input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
5722                         input ivec2 in1 = [ ivec2(-32, 64) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) ];
5723                         input float in2 = [ -20.125 | -8.25 | 3.5 | 1.0 | 1.0 | -0.5 | 2.0 | 0.0 | 36.8125 | 0.0 ];
5724                         input float in3 = [ 0.0 | -0.5 | 1.0 | -20.125 | 36.8125 | 0.0 | -8.25 | 2.0 | 3.5 | 1.0 ];
5725                         input int in4 = [ 2 | 11 | 1 | 0 | 8 | 5 | -66 | 255 | -192 | -12 ];
5726                         input bool in5 = [ false | true | true | false | false | true | false | true | false | true ];
5727                         input bool in6 = [ false | true | false | false | true | true | true | true | false | false ];
5728                         output mat3 out0 = [ mat3(-0.75, -0.0322580645161, -32.0, 64.0, -20.125, 0.0, 2.0, 0.0, 0.0) | mat3(1.0, 1.25, 0.0, -2.0, -8.25, -0.5, 11.0, 1.0, 1.0) | mat3(0.0, 0.5, 1.0, 1.0, 3.5, 1.0, 1.0, 1.0, 0.0) | mat3(-32.0, 64.0, 0.0, 0.0, 1.0, -20.125, 0.0, 0.0, 0.0) | mat3(-0.5, -2.25, 0.0, 0.0, 1.0, 36.8125, 8.0, 0.0, 1.0) | mat3(-32.0, 64.0, 0.0, -2.0, -0.5, 0.0, 5.0, 1.0, 1.0) | mat3(-0.75, -0.0322580645161, -32.0, 64.0, 2.0, -8.25, -66.0, 0.0, 1.0) | mat3(1.0, 1.25, 0.0, 0.0, 0.0, 2.0, 255.0, 1.0, 1.0) | mat3(0.0, 0.5, 1.0, 1.0, 36.8125, 3.5, -192.0, 0.0, 0.0) | mat3(-0.5, -2.25, 0.0, 0.0, 0.0, 1.0, -12.0, 1.0, 0.0) ];
5729                 }
5730
5731                 both ""
5732                         precision mediump float;
5733                         precision mediump int;
5734
5735                         ${DECLARATIONS}
5736
5737                         void main()
5738                         {
5739                                 ${SETUP}
5740                                 out0 = mat3(in0, in1, in2, in3, in4, in5, in6);
5741                                 ${OUTPUT}
5742                         }
5743                 ""
5744         end
5745
5746         case bool_float_int_vec2_bool_bvec2_float_to_mat3
5747                 values
5748                 {
5749                         input bool in0 = [ false | false | false | true | false | false | true | true | true | true ];
5750                         input float in1 = [ 3.5 | -20.125 | 36.8125 | 0.0 | 2.0 | -8.25 | 1.0 | -0.5 | 1.0 | 0.0 ];
5751                         input int in2 = [ 255 | -192 | 11 | 0 | 8 | 5 | -66 | 2 | -12 | 1 ];
5752                         input vec2 in3 = [ vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) ];
5753                         input bool in4 = [ true | true | false | false | false | true | false | true | false | true ];
5754                         input bvec2 in5 = [ bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) ];
5755                         input float in6 = [ 0.0 | 36.8125 | 3.5 | -0.5 | -8.25 | 1.0 | 0.0 | 1.0 | -20.125 | 2.0 ];
5756                         output mat3 out0 = [ mat3(0.0, 3.5, 255.0, 0.0, 0.5, 1.0, 0.0, 0.0, 0.0) | mat3(0.0, -20.125, -192.0, 0.0, 0.5, 1.0, 0.0, 0.0, 36.8125) | mat3(0.0, 36.8125, 11.0, -0.5, -2.25, 0.0, 1.0, 1.0, 3.5) | mat3(1.0, 0.0, 0.0, 1.0, 1.25, 0.0, 0.0, 1.0, -0.5) | mat3(0.0, 2.0, 8.0, -0.5, -2.25, 0.0, 1.0, 1.0, -8.25) | mat3(0.0, -8.25, 5.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0, 1.0) | mat3(1.0, 1.0, -66.0, -32.0, 64.0, 0.0, 1.0, 0.0, 0.0) | mat3(1.0, -0.5, 2.0, 1.0, 1.25, 1.0, 1.0, 0.0, 1.0) | mat3(1.0, 1.0, -12.0, -0.75, -0.0322580645161, 0.0, 0.0, 0.0, -20.125) | mat3(1.0, 0.0, 1.0, -32.0, 64.0, 1.0, 0.0, 1.0, 2.0) ];
5757                 }
5758
5759                 both ""
5760                         precision mediump float;
5761                         precision mediump int;
5762
5763                         ${DECLARATIONS}
5764
5765                         void main()
5766                         {
5767                                 ${SETUP}
5768                                 out0 = mat3(in0, in1, in2, in3, in4, in5, in6);
5769                                 ${OUTPUT}
5770                         }
5771                 ""
5772         end
5773
5774         case bool_bvec2_int_vec4_bool_to_mat3
5775                 values
5776                 {
5777                         input bool in0 = [ true | false | false | false | false | true | true | true | true | false ];
5778                         input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) ];
5779                         input int in2 = [ 2 | -66 | 1 | 8 | -12 | 0 | 5 | 11 | 255 | -192 ];
5780                         input vec4 in3 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) ];
5781                         input bool in4 = [ false | false | true | true | true | false | true | false | false | true ];
5782                         output mat3 out0 = [ mat3(1.0, 1.0, 1.0, 2.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 0.0, 0.0, -66.0, -0.5, -2.25, -4.875, 9.0, 0.0) | mat3(0.0, 0.0, 1.0, 1.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) | mat3(0.0, 0.0, 0.0, 8.0, 1.0, 1.25, 1.125, 1.75, 1.0) | mat3(0.0, 0.0, 0.0, -12.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) | mat3(1.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0) | mat3(1.0, 0.0, 0.0, 5.0, 0.0, 0.5, 0.75, 0.825, 1.0) | mat3(1.0, 1.0, 1.0, 11.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 1.0, 0.0, 255.0, -32.0, 64.0, -51.0, 24.0, 0.0) | mat3(0.0, 0.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0, 1.0) ];
5783                 }
5784
5785                 both ""
5786                         precision mediump float;
5787                         precision mediump int;
5788
5789                         ${DECLARATIONS}
5790
5791                         void main()
5792                         {
5793                                 ${SETUP}
5794                                 out0 = mat3(in0, in1, in2, in3, in4);
5795                                 ${OUTPUT}
5796                         }
5797                 ""
5798         end
5799
5800         case float_bvec4_ivec2_bool_bool_to_mat3
5801                 values
5802                 {
5803                         input float in0 = [ -0.5 | 36.8125 | 1.0 | 0.0 | -20.125 | 2.0 | -8.25 | 3.5 ];
5804                         input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) ];
5805                         input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ];
5806                         input bool in3 = [ true | false | true | false | true | false | false | true ];
5807                         input bool in4 = [ false | true | false | true | false | false | true | true ];
5808                         output mat3 out0 = [ mat3(-0.5, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0) | mat3(36.8125, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, 0.0, 1.0) | mat3(-20.125, 1.0, 1.0, 1.0, 1.0, 0.0, -2.0, 1.0, 0.0) | mat3(2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3(-8.25, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat3(3.5, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, 1.0, 1.0) ];
5809                 }
5810
5811                 both ""
5812                         precision mediump float;
5813                         precision mediump int;
5814
5815                         ${DECLARATIONS}
5816
5817                         void main()
5818                         {
5819                                 ${SETUP}
5820                                 out0 = mat3(in0, in1, in2, in3, in4);
5821                                 ${OUTPUT}
5822                         }
5823                 ""
5824         end
5825
5826         case vec4_vec4_vec4_vec4_to_mat4
5827                 values
5828                 {
5829                         input vec4 in0 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ];
5830                         input vec4 in1 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ];
5831                         input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) ];
5832                         input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(0.0, 0.5, 0.75, 0.825) ];
5833                         output mat4 out0 = [ mat4(-32.0, 64.0, -51.0, 24.0, 1.0, 1.25, 1.125, 1.75, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0, 0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0) | mat4(-0.5, -2.25, -4.875, 9.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 1.25, 1.125, 1.75) | mat4(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4(0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, -0.5, -2.25, -4.875, 9.0, 0.0, 0.5, 0.75, 0.825) ];
5834                 }
5835
5836                 both ""
5837                         precision mediump float;
5838                         precision mediump int;
5839
5840                         ${DECLARATIONS}
5841
5842                         void main()
5843                         {
5844                                 ${SETUP}
5845                                 out0 = mat4(in0, in1, in2, in3);
5846                                 ${OUTPUT}
5847                         }
5848                 ""
5849         end
5850
5851         case ivec4_ivec4_ivec4_ivec4_to_mat4
5852                 values
5853                 {
5854                         input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) ];
5855                         input ivec4 in1 = [ ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ];
5856                         input ivec4 in2 = [ ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
5857                         input ivec4 in3 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ];
5858                         output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(-32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, 1.0, 1.0) | mat4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -2.0, -4.0, 9.0) | mat4(0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ];
5859                 }
5860
5861                 both ""
5862                         precision mediump float;
5863                         precision mediump int;
5864
5865                         ${DECLARATIONS}
5866
5867                         void main()
5868                         {
5869                                 ${SETUP}
5870                                 out0 = mat4(in0, in1, in2, in3);
5871                                 ${OUTPUT}
5872                         }
5873                 ""
5874         end
5875
5876         case bvec4_bvec4_bvec4_bvec4_to_mat4
5877                 values
5878                 {
5879                         input bvec4 in0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ];
5880                         input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, false) ];
5881                         input bvec4 in2 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) ];
5882                         input bvec4 in3 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) ];
5883                         output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) | mat4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat4(1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) ];
5884                 }
5885
5886                 both ""
5887                         precision mediump float;
5888                         precision mediump int;
5889
5890                         ${DECLARATIONS}
5891
5892                         void main()
5893                         {
5894                                 ${SETUP}
5895                                 out0 = mat4(in0, in1, in2, in3);
5896                                 ${OUTPUT}
5897                         }
5898                 ""
5899         end
5900
5901         case float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4
5902                 values
5903                 {
5904                         input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ];
5905                         input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, -2, -4) ];
5906                         input bvec3 in2 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) ];
5907                         input vec4 in3 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) ];
5908                         input ivec2 in4 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
5909                         input float in5 = [ 3.5 | -20.125 | -8.25 | 0.0 | 36.8125 | -0.5 | 1.0 | 2.0 ];
5910                         input vec2 in6 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
5911                         output mat4 out0 = [ mat4(-0.5, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 0.0, 0.0, 3.5, -32.0, 64.0) | mat4(-20.125, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, -2.0, -20.125, 1.0, 1.25) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, 0.0, -8.25, -0.75, -0.0322580645161) | mat4(2.0, -32.0, 64.0, -51.0, 0.0, 1.0, 0.0, 0.0, 0.5, 0.75, 0.825, -32.0, 64.0, 0.0, -0.5, -2.25) | mat4(3.5, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 36.8125, 1.0, 1.25) | mat4(36.8125, 0.0, -2.0, -4.0, 1.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 0.0, -2.0, -0.5, 0.0, 0.5) | mat4(-8.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 0.0, 1.0, 0.0, 0.5) | mat4(0.0, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.0, 2.0, -0.5, -2.25) ];
5912                 }
5913
5914                 both ""
5915                         precision mediump float;
5916                         precision mediump int;
5917
5918                         ${DECLARATIONS}
5919
5920                         void main()
5921                         {
5922                                 ${SETUP}
5923                                 out0 = mat4(in0, in1, in2, in3, in4, in5, in6);
5924                                 ${OUTPUT}
5925                         }
5926                 ""
5927         end
5928
5929
5930 end # matrix_combine