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