xref: /aosp_15_r20/external/deqp/data/gles2/shaders/conversions.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
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
4group 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
205end # scalar_to_scalar
206group 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
803end # scalar_to_vector
804group 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
1401end # vector_to_scalar
1402group 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
1945end # vector_illegal
1946group 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
3137end # vector_to_vector
3138group 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
3339end # scalar_to_matrix
3340group 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
3541end # matrix_to_matrix
3542group 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
5381end # vector_combine
5382group 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
5930end # matrix_combine
5931