79 "int __constructor (const float _f) {\n"
81 " __asm float_to_int _i, _f;\n"
90 "bool __constructor (const int _i) {\n"
94 "bool __constructor (const float _f) {\n"
95 " return _f != 0.0;\n"
103 "int __constructor (const bool _b) {\n"
104 " return _b ? 1 : 0;\n"
107 "float __constructor (const bool _b) {\n"
108 " return _b ? 1.0 : 0.0;\n"
115 "float __constructor (const int _i) {\n"
117 " __asm int_to_float _f, _i;\n"
125 "bool __constructor (const bool _b) {\n"
129 "int __constructor (const int _i) {\n"
133 "float __constructor (const float _f) {\n"
161 "vec2 __constructor (const float _f) {\n"
162 " return vec2 (_f, _f);\n"
165 "vec2 __constructor (const int _i) {\n"
166 " return vec2 (_i, _i);\n"
169 "vec2 __constructor (const bool _b) {\n"
170 " return vec2 (_b, _b);\n"
173 "vec3 __constructor (const float _f) {\n"
174 " return vec3 (_f, _f, _f);\n"
177 "vec3 __constructor (const int _i) {\n"
178 " return vec3 (_i, _i, _i);\n"
181 "vec3 __constructor (const bool _b) {\n"
182 " return vec3 (_b, _b, _b);\n"
185 "vec4 __constructor (const float _f) {\n"
186 " return vec4 (_f, _f, _f, _f);\n"
189 "vec4 __constructor (const int _i) {\n"
190 " return vec4 (_i, _i, _i, _i);\n"
193 "vec4 __constructor (const bool _b) {\n"
194 " return vec4 (_b, _b, _b, _b);\n"
197 "ivec2 __constructor (const int _i) {\n"
198 " return ivec2 (_i, _i);\n"
201 "ivec2 __constructor (const float _f) {\n"
202 " return ivec2 (_f, _f);\n"
205 "ivec2 __constructor (const bool _b) {\n"
206 " return ivec2 (_b, _b);\n"
209 "ivec3 __constructor (const int _i) {\n"
210 " return ivec3 (_i, _i, _i);\n"
213 "ivec3 __constructor (const float _f) {\n"
214 " return ivec3 (_f, _f, _f);\n"
217 "ivec3 __constructor (const bool _b) {\n"
218 " return ivec3 (_b, _b, _b);\n"
221 "ivec4 __constructor (const int _i) {\n"
222 " return ivec4 (_i, _i, _i, _i);\n"
225 "ivec4 __constructor (const float _f) {\n"
226 " return ivec4 (_f, _f, _f, _f);\n"
229 "ivec4 __constructor (const bool _b) {\n"
230 " return ivec4 (_b, _b, _b, _b);\n"
233 "bvec2 __constructor (const bool _b) {\n"
234 " return bvec2 (_b, _b);\n"
237 "bvec2 __constructor (const float _f) {\n"
238 " return bvec2 (_f, _f);\n"
241 "bvec2 __constructor (const int _i) {\n"
242 " return bvec2 (_i, _i);\n"
245 "bvec3 __constructor (const bool _b) {\n"
246 " return bvec3 (_b, _b, _b);\n"
249 "bvec3 __constructor (const float _f) {\n"
250 " return bvec3 (_f, _f, _f);\n"
253 "bvec3 __constructor (const int _i) {\n"
254 " return bvec3 (_i, _i, _i);\n"
257 "bvec4 __constructor (const bool _b) {\n"
258 " return bvec4 (_b, _b, _b, _b);\n"
261 "bvec4 __constructor (const float _f) {\n"
262 " return bvec4 (_f, _f, _f, _f);\n"
265 "bvec4 __constructor (const int _i) {\n"
266 " return bvec4 (_i, _i, _i, _i);\n"
280 "mat2 __constructor (const float _f) {\n"
287 "mat2 __constructor (const int _i) {\n"
294 "mat2 __constructor (const bool _b) {\n"
301 "mat3 __constructor (const float _f) {\n"
309 "mat3 __constructor (const int _i) {\n"
317 "mat3 __constructor (const bool _b) {\n"
325 "mat4 __constructor (const float _f) {\n"
334 "mat4 __constructor (const int _i) {\n"
343 "mat4 __constructor (const bool _b) {\n"
372 "void __operator = (out float a, const float b) {\n"
373 " __asm float_copy a, b;\n"
376 "void __operator = (out int a, const int b) {\n"
377 " __asm int_copy a, b;\n"
380 "void __operator = (out bool a, const bool b) {\n"
381 " __asm bool_copy a, b;\n"
384 "void __operator = (out vec2 v, const vec2 u) {\n"
385 " v.x = u.x, v.y = u.y;\n"
388 "void __operator = (out vec3 v, const vec3 u) {\n"
389 " v.x = u.x, v.y = u.y, v.z = u.z;\n"
392 "void __operator = (out vec4 v, const vec4 u) {\n"
393 " v.x = u.x, v.y = u.y, v.z = u.z, v.w = u.w;\n"
396 "void __operator = (out ivec2 v, const ivec2 u) {\n"
397 " v.x = u.x, v.y = u.y;\n"
400 "void __operator = (out ivec3 v, const ivec3 u) {\n"
401 " v.x = u.x, v.y = u.y, v.z = u.z;\n"
404 "void __operator = (out ivec4 v, const ivec4 u) {\n"
405 " v.x = u.x, v.y = u.y, v.z = u.z, v.w = u.w;\n"
408 "void __operator = (out bvec2 v, const bvec2 u) {\n"
409 " v.x = u.x, v.y = u.y;\n"
412 "void __operator = (out bvec3 v, const bvec3 u) {\n"
413 " v.x = u.x, v.y = u.y, v.z = u.z;\n"
416 "void __operator = (out bvec4 v, const bvec4 u) {\n"
417 " v.x = u.x, v.y = u.y, v.z = u.z, v.w = u.w;\n"
420 "void __operator = (out mat2 m, const mat2 n) {\n"
421 " m[0] = n[0], m[1] = n[1];\n"
424 "void __operator = (out mat3 m, const mat3 n) {\n"
425 " m[0] = n[0], m[1] = n[1], m[2] = n[2];\n"
428 "void __operator = (out mat4 m, const mat4 n) {\n"
429 " m[0] = n[0], m[1] = n[1], m[2] = n[2], m[3] = n[3];\n"
437 "void __operator += (inout float a, const float b) {\n"
438 " __asm float_add a, a, b;\n"
441 "void __operator -= (inout float a, const float b) {\n"
445 "void __operator *= (inout float a, const float b) {\n"
446 " __asm float_multiply a, a, b;\n"
449 "void __operator /= (inout float a, const float b) {\n"
450 " __asm float_divide a, a, b;\n"
453 "void __operator += (inout int x, const int y) {\n"
454 " x = int (float (x) + float (y));\n"
457 "void __operator -= (inout int x, const int y) {\n"
461 "void __operator *= (inout int x, const int y) {\n"
462 " x = int (float (x) * float (y));\n"
465 "void __operator /= (inout int x, const int y) {\n"
466 " x = int (float (x) / float (y));\n"
469 "void __operator += (inout vec2 v, const vec2 u) {\n"
470 " v.x += u.x, v.y += u.y;\n"
473 "void __operator -= (inout vec2 v, const vec2 u) {\n"
474 " v.x -= u.x, v.y -= u.y;\n"
477 "void __operator *= (inout vec2 v, const vec2 u) {\n"
478 " v.x *= u.x, v.y *= u.y;\n"
481 "void __operator /= (inout vec2 v, const vec2 u) {\n"
482 " v.x /= u.x, v.y /= u.y;\n"
485 "void __operator += (inout vec3 v, const vec3 u) {\n"
486 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
489 "void __operator -= (inout vec3 v, const vec3 u) {\n"
490 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
493 "void __operator *= (inout vec3 v, const vec3 u) {\n"
494 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
497 "void __operator /= (inout vec3 v, const vec3 u) {\n"
498 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
501 "void __operator += (inout vec4 v, const vec4 u) {\n"
502 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
505 "void __operator -= (inout vec4 v, const vec4 u) {\n"
506 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
509 "void __operator *= (inout vec4 v, const vec4 u) {\n"
510 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
513 "void __operator /= (inout vec4 v, const vec4 u) {\n"
514 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
517 "void __operator += (inout ivec2 v, const ivec2 u) {\n"
518 " v.x += u.x, v.y += u.y;\n"
521 "void __operator -= (inout ivec2 v, const ivec2 u) {\n"
522 " v.x -= u.x, v.y -= u.y;\n"
525 "void __operator *= (inout ivec2 v, const ivec2 u) {\n"
526 " v.x *= u.x, v.y *= u.y;\n"
529 "void __operator /= (inout ivec2 v, const ivec2 u) {\n"
530 " v.x /= u.x, v.y /= u.y;\n"
533 "void __operator += (inout ivec3 v, const ivec3 u) {\n"
534 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
537 "void __operator -= (inout ivec3 v, const ivec3 u) {\n"
538 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
541 "void __operator *= (inout ivec3 v, const ivec3 u) {\n"
542 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
545 "void __operator /= (inout ivec3 v, const ivec3 u) {\n"
546 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
549 "void __operator += (inout ivec4 v, const ivec4 u) {\n"
550 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
553 "void __operator -= (inout ivec4 v, const ivec4 u) {\n"
554 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
557 "void __operator *= (inout ivec4 v, const ivec4 u) {\n"
558 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
561 "void __operator /= (inout ivec4 v, const ivec4 u) {\n"
562 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
565 "void __operator += (inout mat2 m, const mat2 n) {\n"
566 " m[0] += n[0], m[1] += n[1];\n"
569 "void __operator -= (inout mat2 v, const mat2 n) {\n"
570 " m[0] -= n[0], m[1] -= n[1];\n"
573 "void __operator *= (inout mat2 m, const mat2 n) {\n"
577 "void __operator /= (inout mat2 m, const mat2 n) {\n"
578 " m[0] /= n[0], m[1] /= n[1];\n"
581 "void __operator += (inout mat3 m, const mat3 n) {\n"
582 " m[0] += n[0], m[1] += n[1], m[2] += n[2];\n"
585 "void __operator -= (inout mat3 m, const mat3 n) {\n"
586 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2];\n"
589 "void __operator *= (inout mat3 m, const mat3 n) {\n"
593 "void __operator /= (inout mat3 m, const mat3 n) {\n"
594 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2];\n"
597 "void __operator += (inout mat4 m, const mat4 n) {\n"
598 " m[0] += n[0], m[1] += n[1], m[2] += n[2], m[3] += n[3];\n"
601 "void __operator -= (inout mat4 m, const mat4 n) {\n"
602 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2], m[3] -= n[3];\n"
605 "void __operator *= (inout mat4 m, const mat4 n) {\n"
609 "void __operator /= (inout mat4 m, const mat4 n) {\n"
610 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2], m[3] /= n[3];\n"
618 "void __operator += (inout vec2 v, const float a) {\n"
619 " v.x += a, v.y += a;\n"
622 "void __operator -= (inout vec2 v, const float a) {\n"
623 " v.x -= a, v.y -= a;\n"
626 "void __operator *= (inout vec2 v, const float a) {\n"
627 " v.x *= a, v.y *= a;\n"
630 "void __operator /= (inout vec2 v, const float a) {\n"
631 " v.x /= a, v.y /= a;\n"
634 "void __operator += (inout vec3 v, const float a) {\n"
635 " v.x += a, v.y += a, v.z += a;\n"
638 "void __operator -= (inout vec3 v, const float a) {\n"
639 " v.x -= a, v.y -= a, v.z -= a;\n"
642 "void __operator *= (inout vec3 v, const float a) {\n"
643 " v.x *= a, v.y *= a, v.z *= a;\n"
646 "void __operator /= (inout vec3 v, const float a) {\n"
647 " v.x /= a, v.y /= a, v.z /= a;\n"
650 "void __operator += (inout vec4 v, const float a) {\n"
651 " v.x += a, v.y += a, v.z += a, v.w += a;\n"
654 "void __operator -= (inout vec4 v, const float a) {\n"
655 " v.x -= a, v.y -= a, v.z -= a, v.w -= a;\n"
658 "void __operator *= (inout vec4 v, const float a) {\n"
659 " v.x *= a, v.y *= a, v.z *= a, v.w *= a;\n"
662 "void __operator /= (inout vec4 v, const float a) {\n"
663 " v.x /= a, v.y /= a, v.z /= a, v.w /= a;\n"
666 "void __operator += (inout mat2 m, const float a) {\n"
667 " m[0] += a, m[1] += a;\n"
670 "void __operator -= (inout mat2 m, const float a) {\n"
671 " m[0] -= a, m[1] -= a;\n"
674 "void __operator *= (inout mat2 m, const float a) {\n"
675 " m[0] *= a, m[1] *= a;\n"
678 "void __operator /= (inout mat2 m, const float a) {\n"
679 " m[0] /= a, m[1] /= a;\n"
682 "void __operator += (inout mat3 m, const float a) {\n"
683 " m[0] += a, m[1] += a, m[2] += a;\n"
686 "void __operator -= (inout mat3 m, const float a) {\n"
687 " m[0] -= a, m[1] -= a, m[2] -= a;\n"
690 "void __operator *= (inout mat3 m, const float a) {\n"
691 " m[0] *= a, m[1] *= a, m[2] *= a;\n"
694 "void __operator /= (inout mat3 m, const float a) {\n"
695 " m[0] /= a, m[1] /= a, m[2] /= a;\n"
698 "void __operator += (inout mat4 m, const float a) {\n"
699 " m[0] += a, m[1] += a, m[2] += a, m[3] += a;\n"
702 "void __operator -= (inout mat4 m, const float a) {\n"
703 " m[0] -= a, m[1] -= a, m[2] -= a, m[3] -= a;\n"
706 "void __operator *= (inout mat4 m, const float a) {\n"
707 " m[0] *= a, m[1] *= a, m[2] *= a, m[3] *= a;\n"
710 "void __operator /= (inout mat4 m, const float a) {\n"
711 " m[0] /= a, m[1] /= a, m[2] /= a, m[3] /= a;\n"
719 "void __operator *= (inout vec2 v, const mat2 m) {\n"
723 "void __operator *= (inout vec3 v, const mat3 m) {\n"
727 "void __operator *= (inout vec4 v, const mat4 m) {\n"
745 "float __operator + (const float a, const float b) {\n"
750 "float __operator - (const float a, const float b) {\n"
754 "float __operator * (const float a, const float b) {\n"
759 "float __operator / (const float a, const float b) {\n"
764 "int __operator + (const int a, const int b) {\n"
769 "int __operator - (const int x, const int y) {\n"
773 "int __operator * (const int x, const int y) {\n"
778 "int __operator / (const int x, const int y) {\n"
783 "vec2 __operator + (const vec2 v, const vec2 u) {\n"
784 " return vec2 (v.x + u.x, v.y + u.y);\n"
787 "vec2 __operator - (const vec2 v, const vec2 u) {\n"
788 " return vec2 (v.x - u.x, v.y - u.y);\n"
791 "vec3 __operator + (const vec3 v, const vec3 u) {\n"
792 " return vec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
795 "vec3 __operator - (const vec3 v, const vec3 u) {\n"
796 " return vec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
799 "vec4 __operator + (const vec4 v, const vec4 u) {\n"
800 " return vec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
803 "vec4 __operator - (const vec4 v, const vec4 u) {\n"
804 " return vec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
807 "ivec2 __operator + (const ivec2 v, const ivec2 u) {\n"
808 " return ivec2 (v.x + u.x, v.y + u.y);\n"
811 "ivec2 __operator - (const ivec2 v, const ivec2 u) {\n"
812 " return ivec2 (v.x - u.x, v.y - u.y);\n"
815 "ivec3 __operator + (const ivec3 v, const ivec3 u) {\n"
816 " return ivec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
819 "ivec3 __operator - (const ivec3 v, const ivec3 u) {\n"
820 " return ivec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
823 "ivec4 __operator + (const ivec4 v, const ivec4 u) {\n"
824 " return ivec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
827 "ivec4 __operator - (const ivec4 v, const ivec4 u) {\n"
828 " return ivec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
831 "mat2 __operator + (const mat2 m, const mat2 n) {\n"
832 " return mat2 (m[0] + n[0], m[1] + n[1]);\n"
835 "mat2 __operator - (const mat2 m, const mat2 n) {\n"
836 " return mat2 (m[0] - n[0], m[1] - n[1]);\n"
839 "mat3 __operator + (const mat3 m, const mat3 n) {\n"
840 " return mat3 (m[0] + n[0], m[1] + n[1], m[2] + n[2]);\n"
843 "mat3 __operator - (const mat3 m, const mat3 n) {\n"
844 " return mat3 (m[0] - n[0], m[1] - n[1], m[2] - n[2]);\n"
847 "mat4 __operator + (const mat4 m, const mat4 n) {\n"
848 " return mat4 (m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3]);\n"
851 "mat4 __operator - (const mat4 m, const mat4 n) {\n"
852 " return mat4 (m[0] - n[0], m[1] - n[1], m[2] - n[2], m[3] - n[3]);\n"
859 "vec2 __operator + (const float a, const vec2 u) {\n"
860 " return vec2 (a + u.x, a + u.y);\n"
863 "vec2 __operator + (const vec2 v, const float b) {\n"
864 " return vec2 (v.x + b, v.y + b);\n"
867 "vec2 __operator - (const float a, const vec2 u) {\n"
868 " return vec2 (a - u.x, a - u.y);\n"
871 "vec2 __operator - (const vec2 v, const float b) {\n"
872 " return vec2 (v.x - b, v.y - b);\n"
875 "vec2 __operator * (const float a, const vec2 u) {\n"
876 " return vec2 (a * u.x, a * u.y);\n"
879 "vec2 __operator * (const vec2 v, const float b) {\n"
880 " return vec2 (v.x * b, v.y * b);\n"
883 "vec2 __operator / (const float a, const vec2 u) {\n"
884 " return vec2 (a / u.x, a / u.y);\n"
887 "vec2 __operator / (const vec2 v, const float b) {\n"
888 " return vec2 (v.x / b, v.y / b);\n"
891 "vec3 __operator + (const float a, const vec3 u) {\n"
892 " return vec3 (a + u.x, a + u.y, a + u.z);\n"
895 "vec3 __operator + (const vec3 v, const float b) {\n"
896 " return vec3 (v.x + b, v.y + b, v.z + b);\n"
899 "vec3 __operator - (const float a, const vec3 u) {\n"
900 " return vec3 (a - u.x, a - u.y, a - u.z);\n"
903 "vec3 __operator - (const vec3 v, const float b) {\n"
904 " return vec3 (v.x - b, v.y - b, v.z - b);\n"
907 "vec3 __operator * (const float a, const vec3 u) {\n"
908 " return vec3 (a * u.x, a * u.y, a * u.z);\n"
911 "vec3 __operator * (const vec3 v, const float b) {\n"
912 " return vec3 (v.x * b, v.y * b, v.z * b);\n"
915 "vec3 __operator / (const float a, const vec3 u) {\n"
916 " return vec3 (a / u.x, a / u.y, a / u.z);\n"
919 "vec3 __operator / (const vec3 v, const float b) {\n"
920 " return vec3 (v.x / b, v.y / b, v.z / b);\n"
923 "vec4 __operator + (const float a, const vec4 u) {\n"
924 " return vec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
927 "vec4 __operator + (const vec4 v, const float b) {\n"
928 " return vec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
931 "vec4 __operator - (const float a, const vec4 u) {\n"
932 " return vec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
935 "vec4 __operator - (const vec4 v, const float b) {\n"
936 " return vec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
939 "vec4 __operator * (const float a, const vec4 u) {\n"
940 " return vec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
943 "vec4 __operator * (const vec4 v, const float b) {\n"
944 " return vec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
947 "vec4 __operator / (const float a, const vec4 u) {\n"
948 " return vec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
951 "vec4 __operator / (const vec4 v, const float b) {\n"
952 " return vec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
955 "mat2 __operator + (const float a, const mat2 n) {\n"
956 " return mat2 (a + n[0], a + n[1]);\n"
959 "mat2 __operator + (const mat2 m, const float b) {\n"
960 " return mat2 (m[0] + b, m[1] + b);\n"
963 "mat2 __operator - (const float a, const mat2 n) {\n"
964 " return mat2 (a - n[0], a - n[1]);\n"
967 "mat2 __operator - (const mat2 m, const float b) {\n"
968 " return mat2 (m[0] - b, m[1] - b);\n"
971 "mat2 __operator * (const float a, const mat2 n) {\n"
972 " return mat2 (a * n[0], a * n[1]);\n"
975 "mat2 __operator * (const mat2 m, const float b) {\n"
976 " return mat2 (m[0] * b, m[1] * b);\n"
979 "mat2 __operator / (const float a, const mat2 n) {\n"
980 " return mat2 (a / n[0], a / n[1]);\n"
983 "mat2 __operator / (const mat2 m, const float b) {\n"
984 " return mat2 (m[0] / b, m[1] / b);\n"
987 "mat3 __operator + (const float a, const mat3 n) {\n"
988 " return mat3 (a + n[0], a + n[1], a + n[2]);\n"
991 "mat3 __operator + (const mat3 m, const float b) {\n"
992 " return mat3 (m[0] + b, m[1] + b, m[2] + b);\n"
995 "mat3 __operator - (const float a, const mat3 n) {\n"
996 " return mat3 (a - n[0], a - n[1], a - n[2]);\n"
999 "mat3 __operator - (const mat3 m, const float b) {\n"
1000 " return mat3 (m[0] - b, m[1] - b, m[2] - b);\n"
1003 "mat3 __operator * (const float a, const mat3 n) {\n"
1004 " return mat3 (a * n[0], a * n[1], a * n[2]);\n"
1007 "mat3 __operator * (const mat3 m, const float b) {\n"
1008 " return mat3 (m[0] * b, m[1] * b, m[2] * b);\n"
1011 "mat3 __operator / (const float a, const mat3 n) {\n"
1012 " return mat3 (a / n[0], a / n[1], a / n[2]);\n"
1015 "mat3 __operator / (const mat3 m, const float b) {\n"
1016 " return mat3 (m[0] / b, m[1] / b, m[2] / b);\n"
1019 "mat4 __operator + (const float a, const mat4 n) {\n"
1020 " return mat4 (a + n[0], a + n[1], a + n[2], a + n[3]);\n"
1023 "mat4 __operator + (const mat4 m, const float b) {\n"
1024 " return mat4 (m[0] + b, m[1] + b, m[2] + b, m[3] + b);\n"
1027 "mat4 __operator - (const float a, const mat4 n) {\n"
1028 " return mat4 (a - n[0], a - n[1], a - n[2], a - n[3]);\n"
1031 "mat4 __operator - (const mat4 m, const float b) {\n"
1032 " return mat4 (m[0] - b, m[1] - b, m[2] - b, m[3] - b);\n"
1035 "mat4 __operator * (const float a, const mat4 n) {\n"
1036 " return mat4 (a * n[0], a * n[1], a * n[2], a * n[3]);\n"
1039 "mat4 __operator * (const mat4 m, const float b) {\n"
1040 " return mat4 (m[0] * b, m[1] * b, m[2] * b, m[3] * b);\n"
1043 "mat4 __operator / (const float a, const mat4 n) {\n"
1044 " return mat4 (a / n[0], a / n[1], a / n[2], a / n[3]);\n"
1047 "mat4 __operator / (const mat4 m, const float b) {\n"
1048 " return mat4 (m[0] / b, m[1] / b, m[2] / b, m[3] / b);\n"
1055 "ivec2 __operator + (const int a, const ivec2 u) {\n"
1056 " return ivec2 (a + u.x, a + u.y);\n"
1059 "ivec2 __operator + (const ivec2 v, const int b) {\n"
1060 " return ivec2 (v.x + b, v.y + b);\n"
1063 "ivec2 __operator - (const int a, const ivec2 u) {\n"
1064 " return ivec2 (a - u.x, a - u.y);\n"
1067 "ivec2 __operator - (const ivec2 v, const int b) {\n"
1068 " return ivec2 (v.x - b, v.y - b);\n"
1071 "ivec2 __operator * (const int a, const ivec2 u) {\n"
1072 " return ivec2 (a * u.x, a * u.y);\n"
1075 "ivec2 __operator * (const ivec2 v, const int b) {\n"
1076 " return ivec2 (v.x * b, v.y * b);\n"
1079 "ivec2 __operator / (const int a, const ivec2 u) {\n"
1080 " return ivec2 (a / u.x, a / u.y);\n"
1083 "ivec2 __operator / (const ivec2 v, const int b) {\n"
1084 " return ivec2 (v.x / b, v.y / b);\n"
1087 "ivec3 __operator + (const int a, const ivec3 u) {\n"
1088 " return ivec3 (a + u.x, a + u.y, a + u.z);\n"
1091 "ivec3 __operator + (const ivec3 v, const int b) {\n"
1092 " return ivec3 (v.x + b, v.y + b, v.z + b);\n"
1095 "ivec3 __operator - (const int a, const ivec3 u) {\n"
1096 " return ivec3 (a - u.x, a - u.y, a - u.z);\n"
1099 "ivec3 __operator - (const ivec3 v, const int b) {\n"
1100 " return ivec3 (v.x - b, v.y - b, v.z - b);\n"
1103 "ivec3 __operator * (const int a, const ivec3 u) {\n"
1104 " return ivec3 (a * u.x, a * u.y, a * u.z);\n"
1107 "ivec3 __operator * (const ivec3 v, const int b) {\n"
1108 " return ivec3 (v.x * b, v.y * b, v.z * b);\n"
1111 "ivec3 __operator / (const int a, const ivec3 u) {\n"
1112 " return ivec3 (a / u.x, a / u.y, a / u.z);\n"
1115 "ivec3 __operator / (const ivec3 v, const int b) {\n"
1116 " return ivec3 (v.x / b, v.y / b, v.z / b);\n"
1119 "ivec4 __operator + (const int a, const ivec4 u) {\n"
1120 " return ivec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
1123 "ivec4 __operator + (const ivec4 v, const int b) {\n"
1124 " return ivec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
1127 "ivec4 __operator - (const int a, const ivec4 u) {\n"
1128 " return ivec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
1131 "ivec4 __operator - (const ivec4 v, const int b) {\n"
1132 " return ivec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
1135 "ivec4 __operator * (const int a, const ivec4 u) {\n"
1136 " return ivec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
1139 "ivec4 __operator * (const ivec4 v, const int b) {\n"
1140 " return ivec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
1143 "ivec4 __operator / (const int a, const ivec4 u) {\n"
1144 " return ivec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
1147 "ivec4 __operator / (const ivec4 v, const int b) {\n"
1148 " return ivec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
1163 "vec2 __operator * (const mat2 m, const vec2 v) {\n"
1165 " v.x * m[0].x + v.y * m[1].x,\n"
1166 " v.x * m[0].y + v.y * m[1].y\n"
1170 "vec2 __operator * (const vec2 v, const mat2 m) {\n"
1172 " v.x * m[0].x + v.y * m[0].y,\n"
1173 " v.x * m[1].x + v.y * m[1].y\n"
1177 "vec3 __operator * (const mat3 m, const vec3 v) {\n"
1179 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x,\n"
1180 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y,\n"
1181 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z\n"
1185 "vec3 __operator * (const vec3 v, const mat3 m) {\n"
1187 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z,\n"
1188 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z,\n"
1189 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z\n"
1193 "vec4 __operator * (const mat4 m, const vec4 v) {\n"
1195 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x,\n"
1196 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y,\n"
1197 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z,\n"
1198 " v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w\n"
1202 "vec4 __operator * (const vec4 v, const mat4 m) {\n"
1204 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w,\n"
1205 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w,\n"
1206 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w,\n"
1207 " v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w\n"
1215 "vec2 __operator * (const vec2 v, const vec2 u) {\n"
1216 " return vec2 (v.x * u.x, v.y * u.y);\n"
1219 "vec3 __operator * (const vec3 v, const vec3 u) {\n"
1220 " return vec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1223 "vec4 __operator * (const vec4 v, const vec4 u) {\n"
1224 " return vec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1227 "ivec2 __operator * (const ivec2 v, const ivec2 u) {\n"
1228 " return ivec2 (v.x * u.x, v.y * u.y);\n"
1231 "ivec3 __operator * (const ivec3 v, const ivec3 u) {\n"
1232 " return ivec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1235 "ivec4 __operator * (const ivec4 v, const ivec4 u) {\n"
1236 " return ivec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1243 "vec2 __operator / (const vec2 v, const vec2 u) {\n"
1244 " return vec2 (v.x / u.x, v.y / u.y);\n"
1247 "vec3 __operator / (const vec3 v, const vec3 u) {\n"
1248 " return vec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1251 "vec4 __operator / (const vec4 v, const vec4 u) {\n"
1252 " return vec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1255 "ivec2 __operator / (const ivec2 v, const ivec2 u) {\n"
1256 " return ivec2 (v.x / u.x, v.y / u.y);\n"
1259 "ivec3 __operator / (const ivec3 v, const ivec3 u) {\n"
1260 " return ivec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1263 "ivec4 __operator / (const ivec4 v, const ivec4 u) {\n"
1264 " return ivec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1267 "mat2 __operator / (const mat2 m, const mat2 n) {\n"
1268 " return mat2 (m[0] / n[0], m[1] / n[1]);\n"
1271 "mat3 __operator / (const mat3 m, const mat3 n) {\n"
1272 " return mat3 (m[0] / n[0], m[1] / n[1], m[2] / n[2]);\n"
1275 "mat4 __operator / (const mat4 m, const mat4 n) {\n"
1276 " return mat4 (m[0] / n[0], m[1] / n[1], m[2] / n[2], m[3] / n[3]);\n"
1284 "mat2 __operator * (const mat2 m, const mat2 n) {\n"
1285 " return mat2 (m * n[0], m * n[1]);\n"
1288 "mat3 __operator * (const mat3 m, const mat3 n) {\n"
1289 " return mat3 (m * n[0], m * n[1], m * n[2]);\n"
1292 "mat4 __operator * (const mat4 m, const mat4 n) {\n"
1293 " return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);\n"
1311 "float __operator - (const float a) {\n"
1313 " __asm float_negate c, a;\n"
1317 "int __operator - (const int a) {\n"
1318 " return int (-float (a));\n"
1321 "vec2 __operator - (const vec2 v) {\n"
1322 " return vec2 (-v.x, -v.y);\n"
1325 "vec3 __operator - (const vec3 v) {\n"
1326 " return vec3 (-v.x, -v.y, -v.z);\n"
1329 "vec4 __operator - (const vec4 v) {\n"
1330 " return vec4 (-v.x, -v.y, -v.z, -v.w);\n"
1333 "ivec2 __operator - (const ivec2 v) {\n"
1334 " return ivec2 (-v.x, -v.y);\n"
1337 "ivec3 __operator - (const ivec3 v) {\n"
1338 " return ivec3 (-v.x, -v.y, -v.z);\n"
1341 "ivec4 __operator - (const ivec4 v) {\n"
1342 " return ivec4 (-v.x, -v.y, -v.z, -v.w);\n"
1345 "mat2 __operator - (const mat2 m) {\n"
1346 " return mat2 (-m[0], -m[1]);\n"
1349 "mat3 __operator - (const mat3 m) {\n"
1350 " return mat3 (-m[0], -m[1], -m[2]);\n"
1353 "mat4 __operator - (const mat4 m) {\n"
1354 " return mat4 (-m[0], -m[1], -m[2], -m[3]);\n"
1357 "void __operator -- (inout float a) {\n"
1361 "void __operator -- (inout int a) {\n"
1365 "void __operator -- (inout vec2 v) {\n"
1369 "void __operator -- (inout vec3 v) {\n"
1370 " --v.x, --v.y, --v.z;\n"
1373 "void __operator -- (inout vec4 v) {\n"
1374 " --v.x, --v.y, --v.z, --v.w;\n"
1377 "void __operator -- (inout ivec2 v) {\n"
1381 "void __operator -- (inout ivec3 v) {\n"
1382 " --v.x, --v.y, --v.z;\n"
1385 "void __operator -- (inout ivec4 v) {\n"
1386 " --v.x, --v.y, --v.z, --v.w;\n"
1389 "void __operator -- (inout mat2 m) {\n"
1390 " --m[0], --m[1];\n"
1393 "void __operator -- (inout mat3 m) {\n"
1394 " --m[0], --m[1], --m[2];\n"
1397 "void __operator -- (inout mat4 m) {\n"
1398 " --m[0], --m[1], --m[2], --m[3];\n"
1401 "void __operator ++ (inout float a) {\n"
1405 "void __operator ++ (inout int a) {\n"
1409 "void __operator ++ (inout vec2 v) {\n"
1413 "void __operator ++ (inout vec3 v) {\n"
1414 " ++v.x, ++v.y, ++v.z;\n"
1417 "void __operator ++ (inout vec4 v) {\n"
1418 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1421 "void __operator ++ (inout ivec2 v) {\n"
1425 "void __operator ++ (inout ivec3 v) {\n"
1426 " ++v.x, ++v.y, ++v.z;\n"
1429 "void __operator ++ (inout ivec4 v) {\n"
1430 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1433 "void __operator ++ (inout mat2 m) {\n"
1434 " ++m[0], ++m[1];\n"
1437 "void __operator ++ (inout mat3 m) {\n"
1438 " ++m[0], ++m[1], ++m[2];\n"
1441 "void __operator ++ (inout mat4 m) {\n"
1442 " ++m[0], ++m[1], ++m[2], ++m[3];\n"
1445 "float __operator -- (inout float a, const int) {\n"
1446 " const float c = a;\n"
1451 "int __operator -- (inout int a, const int) {\n"
1452 " const int c = a;\n"
1457 "vec2 __operator -- (inout vec2 v, const int) {\n"
1458 " return vec2 (v.x--, v.y--);\n"
1461 "vec3 __operator -- (inout vec3 v, const int) {\n"
1462 " return vec3 (v.x--, v.y--, v.z--);\n"
1465 "vec4 __operator -- (inout vec4 v, const int) {\n"
1466 " return vec4 (v.x--, v.y--, v.z--, v.w--);\n"
1469 "ivec2 __operator -- (inout ivec2 v, const int) {\n"
1470 " return ivec2 (v.x--, v.y--);\n"
1473 "ivec3 __operator -- (inout ivec3 v, const int) {\n"
1474 " return ivec3 (v.x--, v.y--, v.z--);\n"
1477 "ivec4 __operator -- (inout ivec4 v, const int) {\n"
1478 " return ivec4 (v.x--, v.y--, v.z--, v.w--);\n"
1481 "mat2 __operator -- (inout mat2 m, const int) {\n"
1482 " return mat2 (m[0]--, m[1]--);\n"
1485 "mat3 __operator -- (inout mat3 m, const int) {\n"
1486 " return mat3 (m[0]--, m[1]--, m[2]--);\n"
1489 "mat4 __operator -- (inout mat4 m, const int) {\n"
1490 " return mat4 (m[0]--, m[1]--, m[2]--, m[3]--);\n"
1493 "float __operator ++ (inout float a, const int) {\n"
1494 " const float c = a;\n"
1499 "int __operator ++ (inout int a, const int) {\n"
1500 " const int c = a;\n"
1505 "vec2 __operator ++ (inout vec2 v, const int) {\n"
1506 " return vec2 (v.x++, v.y++);\n"
1509 "vec3 __operator ++ (inout vec3 v, const int) {\n"
1510 " return vec3 (v.x++, v.y++, v.z++);\n"
1513 "vec4 __operator ++ (inout vec4 v, const int) {\n"
1514 " return vec4 (v.x++, v.y++, v.z++, v.w++);\n"
1517 "ivec2 __operator ++ (inout ivec2 v, const int) {\n"
1518 " return ivec2 (v.x++, v.y++);\n"
1521 "ivec3 __operator ++ (inout ivec3 v, const int) {\n"
1522 " return ivec3 (v.x++, v.y++, v.z++);\n"
1525 "ivec4 __operator ++ (inout ivec4 v, const int) {\n"
1526 " return ivec4 (v.x++, v.y++, v.z++, v.w++);\n"
1529 "mat2 __operator ++ (inout mat2 m, const int) {\n"
1530 " return mat2 (m[0]++, m[1]++);\n"
1533 "mat3 __operator ++ (inout mat3 m, const int) {\n"
1534 " return mat3 (m[0]++, m[1]++, m[2]++);\n"
1537 "mat4 __operator ++ (inout mat4 m, const int) {\n"
1538 " return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);\n"
1549 "bool __operator < (const float a, const float b) {\n"
1551 " __asm float_less c, a, b;\n"
1555 "bool __operator < (const int a, const int b) {\n"
1556 " return float (a) < float (b);\n"
1559 "bool __operator > (const float a, const float b) {\n"
1563 "bool __operator > (const int a, const int b) {\n"
1567 "bool __operator >= (const float a, const float b) {\n"
1568 " return a > b || a == b;\n"
1571 "bool __operator >= (const int a, const int b) {\n"
1572 " return a > b || a == b;\n"
1575 "bool __operator <= (const float a, const float b) {\n"
1576 " return a < b || a == b;\n"
1579 "bool __operator <= (const int a, const int b) {\n"
1580 " return a < b || a == b;\n"
1590 "bool __operator == (const float a, const float b) {\n"
1592 " __asm float_equal c, a, b;\n"
1596 "bool __operator == (const int a, const int b) {\n"
1597 " return float (a) == float (b);\n"
1600 "bool __operator == (const bool a, const bool b) {\n"
1601 " return float (a) == float (b);\n"
1604 "bool __operator == (const vec2 v, const vec2 u) {\n"
1605 " return v.x == u.x && v.y == u.y;\n"
1608 "bool __operator == (const vec3 v, const vec3 u) {\n"
1609 " return v.x == u.x && v.y == u.y && v.z == u.z;\n"
1612 "bool __operator == (const vec4 v, const vec4 u) {\n"
1613 " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n"
1616 "bool __operator == (const ivec2 v, const ivec2 u) {\n"
1617 " return v.x == u.x && v.y == u.y;\n"
1620 "bool __operator == (const ivec3 v, const ivec3 u) {\n"
1621 " return v.x == u.x && v.y == u.y && v.z == u.z;\n"
1624 "bool __operator == (const ivec4 v, const ivec4 u) {\n"
1625 " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n"
1628 "bool __operator == (const bvec2 v, const bvec2 u) {\n"
1629 " return v.x == u.x && v.y == u.y;\n"
1632 "bool __operator == (const bvec3 v, const bvec3 u) {\n"
1633 " return v.x == u.x && v.y == u.y && v.z == u.z;\n"
1636 "bool __operator == (const bvec4 v, const bvec4 u) {\n"
1637 " return v.x == u.x && v.y == u.y && v.z == u.z && v.w == u.w;\n"
1640 "bool __operator == (const mat2 m, const mat2 n) {\n"
1641 " return m[0] == n[0] && m[1] == n[1];\n"
1644 "bool __operator == (const mat3 m, const mat3 n) {\n"
1645 " return m[0] == n[0] && m[1] == n[1] && m[2] == n[2];\n"
1648 "bool __operator == (const mat4 m, const mat4 n) {\n"
1649 " return m[0] == n[0] && m[1] == n[1] && m[2] == n[2] && m[3] == n[3];\n"
1652 "bool __operator != (const float a, const float b) {\n"
1653 " return !(a == b);\n"
1656 "bool __operator != (const int a, const int b) {\n"
1657 " return !(a == b);\n"
1660 "bool __operator != (const bool a, const bool b) {\n"
1661 " return !(a == b);\n"
1664 "bool __operator != (const vec2 v, const vec2 u) {\n"
1665 " return v.x != u.x || v.y != u.y;\n"
1668 "bool __operator != (const vec3 v, const vec3 u) {\n"
1669 " return v.x != u.x || v.y != u.y || v.z != u.z;\n"
1672 "bool __operator != (const vec4 v, const vec4 u) {\n"
1673 " return v.x != u.x || v.y != u.y || v.z != u.z || v.w != u.w;\n"
1676 "bool __operator != (const ivec2 v, const ivec2 u) {\n"
1677 " return v.x != u.x || v.y != u.y;\n"
1680 "bool __operator != (const ivec3 v, const ivec3 u) {\n"
1681 " return v.x != u.x || v.y != u.y || v.z != u.z;\n"
1684 "bool __operator != (const ivec4 v, const ivec4 u) {\n"
1685 " return v.x != u.x || v.y != u.y || v.z != u.z || v.w != u.w;\n"
1688 "bool __operator != (const bvec2 v, const bvec2 u) {\n"
1689 " return v.x != u.x || v.y != u.y;\n"
1692 "bool __operator != (const bvec3 v, const bvec3 u) {\n"
1693 " return v.x != u.x || v.y != u.y || v.z != u.z;\n"
1696 "bool __operator != (const bvec4 v, const bvec4 u) {\n"
1697 " return v.x != u.x || v.y != u.y || v.z != u.z || v.w != u.w;\n"
1700 "bool __operator != (const mat2 m, const mat2 n) {\n"
1701 " return m[0] != n[0] || m[1] != n[1];\n"
1704 "bool __operator != (const mat3 m, const mat3 n) {\n"
1705 " return m[0] != n[0] || m[1] != n[1] || m[2] != n[2];\n"
1708 "bool __operator != (const mat4 m, const mat4 n) {\n"
1709 " return m[0] != n[0] || m[1] != n[1] || m[2] != n[2] || m[3] != n[3];\n"
1720 "bool __operator ^^ (const bool a, const bool b) {\n"
1740 "bool __operator ! (const bool a) {\n"
1741 " return a == false;\n"