66 "int __constructor (const float _f) {\n"
68 " __asm float_to_int _i, _f;\n"
72 "bool __constructor (const int _i) {\n"
76 "bool __constructor (const float _f) {\n"
77 " return _f != 0.0;\n"
80 "int __constructor (const bool _b) {\n"
81 " return _b ? 1 : 0;\n"
84 "float __constructor (const bool _b) {\n"
85 " return _b ? 1.0 : 0.0;\n"
88 "float __constructor (const int _i) {\n"
90 " __asm int_to_float _f, _i;\n"
94 "bool __constructor (const bool _b) {\n"
98 "int __constructor (const int _i) {\n"
102 "float __constructor (const float _f) {\n"
106 "vec2 __constructor (const float _f) {\n"
107 " return vec2 (_f, _f);\n"
110 "vec2 __constructor (const int _i) {\n"
111 " return vec2 (_i, _i);\n"
114 "vec2 __constructor (const bool _b) {\n"
115 " return vec2 (_b, _b);\n"
118 "vec3 __constructor (const float _f) {\n"
119 " return vec3 (_f, _f, _f);\n"
122 "vec3 __constructor (const int _i) {\n"
123 " return vec3 (_i, _i, _i);\n"
126 "vec3 __constructor (const bool _b) {\n"
127 " return vec3 (_b, _b, _b);\n"
130 "vec4 __constructor (const float _f) {\n"
131 " return vec4 (_f, _f, _f, _f);\n"
134 "vec4 __constructor (const int _i) {\n"
135 " return vec4 (_i, _i, _i, _i);\n"
138 "vec4 __constructor (const bool _b) {\n"
139 " return vec4 (_b, _b, _b, _b);\n"
142 "ivec2 __constructor (const int _i) {\n"
143 " return ivec2 (_i, _i);\n"
146 "ivec2 __constructor (const float _f) {\n"
147 " return ivec2 (_f, _f);\n"
150 "ivec2 __constructor (const bool _b) {\n"
151 " return ivec2 (_b, _b);\n"
154 "ivec3 __constructor (const int _i) {\n"
155 " return ivec3 (_i, _i, _i);\n"
158 "ivec3 __constructor (const float _f) {\n"
159 " return ivec3 (_f, _f, _f);\n"
162 "ivec3 __constructor (const bool _b) {\n"
163 " return ivec3 (_b, _b, _b);\n"
166 "ivec4 __constructor (const int _i) {\n"
167 " return ivec4 (_i, _i, _i, _i);\n"
170 "ivec4 __constructor (const float _f) {\n"
171 " return ivec4 (_f, _f, _f, _f);\n"
174 "ivec4 __constructor (const bool _b) {\n"
175 " return ivec4 (_b, _b, _b, _b);\n"
178 "bvec2 __constructor (const bool _b) {\n"
179 " return bvec2 (_b, _b);\n"
182 "bvec2 __constructor (const float _f) {\n"
183 " return bvec2 (_f, _f);\n"
186 "bvec2 __constructor (const int _i) {\n"
187 " return bvec2 (_i, _i);\n"
190 "bvec3 __constructor (const bool _b) {\n"
191 " return bvec3 (_b, _b, _b);\n"
194 "bvec3 __constructor (const float _f) {\n"
195 " return bvec3 (_f, _f, _f);\n"
198 "bvec3 __constructor (const int _i) {\n"
199 " return bvec3 (_i, _i, _i);\n"
202 "bvec4 __constructor (const bool _b) {\n"
203 " return bvec4 (_b, _b, _b, _b);\n"
206 "bvec4 __constructor (const float _f) {\n"
207 " return bvec4 (_f, _f, _f, _f);\n"
210 "bvec4 __constructor (const int _i) {\n"
211 " return bvec4 (_i, _i, _i, _i);\n"
214 "mat2 __constructor (const float _f) {\n"
221 "mat2 __constructor (const int _i) {\n"
228 "mat2 __constructor (const bool _b) {\n"
235 "mat3 __constructor (const float _f) {\n"
243 "mat3 __constructor (const int _i) {\n"
251 "mat3 __constructor (const bool _b) {\n"
259 "mat4 __constructor (const float _f) {\n"
268 "mat4 __constructor (const int _i) {\n"
277 "mat4 __constructor (const bool _b) {\n"
346 "void __operator += (inout float a, const float b) {\n"
347 " __asm float_add a, a, b;\n"
350 "float __operator - (const float a) {\n"
352 " __asm float_negate c, a;\n"
356 "void __operator -= (inout float a, const float b) {\n"
360 "void __operator *= (inout float a, const float b) {\n"
361 " __asm float_multiply a, a, b;\n"
364 "void __operator /= (inout float a, const float b) {\n"
365 " __asm float_divide a, a, b;\n"
368 "float __operator + (const float a, const float b) {\n"
374 "void __operator += (inout int a, const int b) {\n"
375 " a = int (float (a) + float (b));\n"
378 "int __operator - (const int a) {\n"
379 " return int (-float (a));\n"
382 "void __operator -= (inout int a, const int b) {\n"
386 "float __operator * (const float a, const float b) {\n"
392 "void __operator *= (inout int a, const int b) {\n"
393 " a = int (float (a) * float (b));\n"
396 "float __operator / (const float a, const float b) {\n"
402 "void __operator /= (inout int a, const int b) {\n"
403 " a = int (float (a) / float (b));\n"
406 "void __operator += (inout vec2 v, const vec2 u) {\n"
407 " v.x += u.x, v.y += u.y;\n"
410 "void __operator -= (inout vec2 v, const vec2 u) {\n"
411 " v.x -= u.x, v.y -= u.y;\n"
414 "void __operator *= (inout vec2 v, const vec2 u) {\n"
415 " v.x *= u.x, v.y *= u.y;\n"
418 "void __operator /= (inout vec2 v, const vec2 u) {\n"
419 " v.x /= u.x, v.y /= u.y;\n"
422 "void __operator += (inout vec3 v, const vec3 u) {\n"
423 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
426 "void __operator -= (inout vec3 v, const vec3 u) {\n"
427 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
430 "void __operator *= (inout vec3 v, const vec3 u) {\n"
431 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
434 "void __operator /= (inout vec3 v, const vec3 u) {\n"
435 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
438 "void __operator += (inout vec4 v, const vec4 u) {\n"
439 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
442 "void __operator -= (inout vec4 v, const vec4 u) {\n"
443 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
446 "void __operator *= (inout vec4 v, const vec4 u) {\n"
447 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
450 "void __operator /= (inout vec4 v, const vec4 u) {\n"
451 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
454 "void __operator += (inout ivec2 v, const ivec2 u) {\n"
455 " v.x += u.x, v.y += u.y;\n"
458 "void __operator -= (inout ivec2 v, const ivec2 u) {\n"
459 " v.x -= u.x, v.y -= u.y;\n"
462 "void __operator *= (inout ivec2 v, const ivec2 u) {\n"
463 " v.x *= u.x, v.y *= u.y;\n"
466 "void __operator /= (inout ivec2 v, const ivec2 u) {\n"
467 " v.x /= u.x, v.y /= u.y;\n"
470 "void __operator += (inout ivec3 v, const ivec3 u) {\n"
471 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
474 "void __operator -= (inout ivec3 v, const ivec3 u) {\n"
475 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
478 "void __operator *= (inout ivec3 v, const ivec3 u) {\n"
479 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
482 "void __operator /= (inout ivec3 v, const ivec3 u) {\n"
483 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
486 "void __operator += (inout ivec4 v, const ivec4 u) {\n"
487 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
490 "void __operator -= (inout ivec4 v, const ivec4 u) {\n"
491 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
494 "void __operator *= (inout ivec4 v, const ivec4 u) {\n"
495 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
498 "void __operator /= (inout ivec4 v, const ivec4 u) {\n"
499 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
502 "void __operator += (inout mat2 m, const mat2 n) {\n"
503 " m[0] += n[0], m[1] += n[1];\n"
506 "void __operator -= (inout mat2 m, const mat2 n) {\n"
507 " m[0] -= n[0], m[1] -= n[1];\n"
510 "vec2 __operator * (const mat2 m, const vec2 v) {\n"
512 " v.x * m[0].x + v.y * m[1].x,\n"
513 " v.x * m[0].y + v.y * m[1].y\n"
517 "mat2 __operator * (const mat2 m, const mat2 n) {\n"
518 " return mat2 (m * n[0], m * n[1]);\n"
521 "void __operator *= (inout mat2 m, const mat2 n) {\n"
525 "void __operator /= (inout mat2 m, const mat2 n) {\n"
526 " m[0] /= n[0], m[1] /= n[1];\n"
529 "void __operator += (inout mat3 m, const mat3 n) {\n"
530 " m[0] += n[0], m[1] += n[1], m[2] += n[2];\n"
533 "void __operator -= (inout mat3 m, const mat3 n) {\n"
534 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2];\n"
537 "vec3 __operator * (const mat3 m, const vec3 v) {\n"
539 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x,\n"
540 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y,\n"
541 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z\n"
545 "mat3 __operator * (const mat3 m, const mat3 n) {\n"
546 " return mat3 (m * n[0], m * n[1], m * n[2]);\n"
549 "void __operator *= (inout mat3 m, const mat3 n) {\n"
553 "void __operator /= (inout mat3 m, const mat3 n) {\n"
554 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2];\n"
557 "void __operator += (inout mat4 m, const mat4 n) {\n"
558 " m[0] += n[0], m[1] += n[1], m[2] += n[2], m[3] += n[3];\n"
561 "void __operator -= (inout mat4 m, const mat4 n) {\n"
562 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2], m[3] -= n[3];\n"
565 "vec4 __operator * (const mat4 m, const vec4 v) {\n"
567 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x,\n"
568 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y,\n"
569 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z,\n"
570 " v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w\n"
574 "mat4 __operator * (const mat4 m, const mat4 n) {\n"
575 " return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);\n"
578 "void __operator *= (inout mat4 m, const mat4 n) {\n"
582 "void __operator /= (inout mat4 m, const mat4 n) {\n"
583 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2], m[3] /= n[3];\n"
586 "void __operator += (inout vec2 v, const float a) {\n"
587 " v.x += a, v.y += a;\n"
590 "void __operator -= (inout vec2 v, const float a) {\n"
591 " v.x -= a, v.y -= a;\n"
594 "void __operator *= (inout vec2 v, const float a) {\n"
595 " v.x *= a, v.y *= a;\n"
598 "void __operator /= (inout vec2 v, const float a) {\n"
599 " v.x /= a, v.y /= a;\n"
602 "void __operator += (inout vec3 v, const float a) {\n"
603 " v.x += a, v.y += a, v.z += a;\n"
606 "void __operator -= (inout vec3 v, const float a) {\n"
607 " v.x -= a, v.y -= a, v.z -= a;\n"
610 "void __operator *= (inout vec3 v, const float a) {\n"
611 " v.x *= a, v.y *= a, v.z *= a;\n"
614 "void __operator /= (inout vec3 v, const float a) {\n"
615 " v.x /= a, v.y /= a, v.z /= a;\n"
618 "void __operator += (inout vec4 v, const float a) {\n"
619 " v.x += a, v.y += a, v.z += a, v.w += a;\n"
622 "void __operator -= (inout vec4 v, const float a) {\n"
623 " v.x -= a, v.y -= a, v.z -= a, v.w -= a;\n"
626 "void __operator *= (inout vec4 v, const float a) {\n"
627 " v.x *= a, v.y *= a, v.z *= a, v.w *= a;\n"
630 "void __operator /= (inout vec4 v, const float a) {\n"
631 " v.x /= a, v.y /= a, v.z /= a, v.w /= a;\n"
634 "void __operator += (inout mat2 m, const float a) {\n"
635 " m[0] += a, m[1] += a;\n"
638 "void __operator -= (inout mat2 m, const float a) {\n"
639 " m[0] -= a, m[1] -= a;\n"
642 "void __operator *= (inout mat2 m, const float a) {\n"
643 " m[0] *= a, m[1] *= a;\n"
646 "void __operator /= (inout mat2 m, const float a) {\n"
647 " m[0] /= a, m[1] /= a;\n"
650 "void __operator += (inout mat3 m, const float a) {\n"
651 " m[0] += a, m[1] += a, m[2] += a;\n"
654 "void __operator -= (inout mat3 m, const float a) {\n"
655 " m[0] -= a, m[1] -= a, m[2] -= a;\n"
658 "void __operator *= (inout mat3 m, const float a) {\n"
659 " m[0] *= a, m[1] *= a, m[2] *= a;\n"
662 "void __operator /= (inout mat3 m, const float a) {\n"
663 " m[0] /= a, m[1] /= a, m[2] /= a;\n"
666 "void __operator += (inout mat4 m, const float a) {\n"
667 " m[0] += a, m[1] += a, m[2] += a, m[3] += a;\n"
670 "void __operator -= (inout mat4 m, const float a) {\n"
671 " m[0] -= a, m[1] -= a, m[2] -= a, m[3] -= a;\n"
674 "void __operator *= (inout mat4 m, const float a) {\n"
675 " m[0] *= a, m[1] *= a, m[2] *= a, m[3] *= a;\n"
678 "void __operator /= (inout mat4 m, const float a) {\n"
679 " m[0] /= a, m[1] /= a, m[2] /= a, m[3] /= a;\n"
682 "vec2 __operator * (const vec2 v, const mat2 m) {\n"
684 " v.x * m[0].x + v.y * m[0].y,\n"
685 " v.x * m[1].x + v.y * m[1].y\n"
689 "void __operator *= (inout vec2 v, const mat2 m) {\n"
693 "vec3 __operator * (const vec3 v, const mat3 m) {\n"
695 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z,\n"
696 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z,\n"
697 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z\n"
701 "void __operator *= (inout vec3 v, const mat3 m) {\n"
705 "vec4 __operator * (const vec4 v, const mat4 m) {\n"
707 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w,\n"
708 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w,\n"
709 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w,\n"
710 " v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w\n"
714 "void __operator *= (inout vec4 v, const mat4 m) {\n"
718 "float __operator - (const float a, const float b) {\n"
722 "int __operator + (const int a, const int b) {\n"
728 "int __operator - (const int a, const int b) {\n"
732 "int __operator * (const int a, const int b) {\n"
734 " return (c = a) *= b;\n"
737 "int __operator / (const int a, const int b) {\n"
739 " return (c = a) /= b;\n"
742 "vec2 __operator + (const vec2 v, const vec2 u) {\n"
743 " return vec2 (v.x + u.x, v.y + u.y);\n"
746 "vec2 __operator - (const vec2 v, const vec2 u) {\n"
747 " return vec2 (v.x - u.x, v.y - u.y);\n"
750 "vec3 __operator + (const vec3 v, const vec3 u) {\n"
751 " return vec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
754 "vec3 __operator - (const vec3 v, const vec3 u) {\n"
755 " return vec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
758 "vec4 __operator + (const vec4 v, const vec4 u) {\n"
759 " return vec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
762 "vec4 __operator - (const vec4 v, const vec4 u) {\n"
763 " return vec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
766 "ivec2 __operator + (const ivec2 v, const ivec2 u) {\n"
767 " return ivec2 (v.x + u.x, v.y + u.y);\n"
770 "ivec2 __operator - (const ivec2 v, const ivec2 u) {\n"
771 " return ivec2 (v.x - u.x, v.y - u.y);\n"
774 "ivec3 __operator + (const ivec3 v, const ivec3 u) {\n"
775 " return ivec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
778 "ivec3 __operator - (const ivec3 v, const ivec3 u) {\n"
779 " return ivec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
782 "ivec4 __operator + (const ivec4 v, const ivec4 u) {\n"
783 " return ivec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
786 "ivec4 __operator - (const ivec4 v, const ivec4 u) {\n"
787 " return ivec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
790 "mat2 __operator + (const mat2 m, const mat2 n) {\n"
791 " return mat2 (m[0] + n[0], m[1] + n[1]);\n"
794 "mat2 __operator - (const mat2 m, const mat2 n) {\n"
795 " return mat2 (m[0] - n[0], m[1] - n[1]);\n"
798 "mat3 __operator + (const mat3 m, const mat3 n) {\n"
799 " return mat3 (m[0] + n[0], m[1] + n[1], m[2] + n[2]);\n"
802 "mat3 __operator - (const mat3 m, const mat3 n) {\n"
803 " return mat3 (m[0] - n[0], m[1] - n[1], m[2] - n[2]);\n"
806 "mat4 __operator + (const mat4 m, const mat4 n) {\n"
807 " return mat4 (m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3]);\n"
810 "mat4 __operator - (const mat4 m, const mat4 n) {\n"
811 " return mat4 (m[0] - n[0], m[1] - n[1], m[2] - n[2], m[3] - n[3]);\n"
814 "vec2 __operator + (const float a, const vec2 u) {\n"
815 " return vec2 (a + u.x, a + u.y);\n"
818 "vec2 __operator + (const vec2 v, const float b) {\n"
819 " return vec2 (v.x + b, v.y + b);\n"
822 "vec2 __operator - (const float a, const vec2 u) {\n"
823 " return vec2 (a - u.x, a - u.y);\n"
826 "vec2 __operator - (const vec2 v, const float b) {\n"
827 " return vec2 (v.x - b, v.y - b);\n"
830 "vec2 __operator * (const float a, const vec2 u) {\n"
831 " return vec2 (a * u.x, a * u.y);\n"
834 "vec2 __operator * (const vec2 v, const float b) {\n"
835 " return vec2 (v.x * b, v.y * b);\n"
838 "vec2 __operator / (const float a, const vec2 u) {\n"
839 " return vec2 (a / u.x, a / u.y);\n"
842 "vec2 __operator / (const vec2 v, const float b) {\n"
843 " return vec2 (v.x / b, v.y / b);\n"
846 "vec3 __operator + (const float a, const vec3 u) {\n"
847 " return vec3 (a + u.x, a + u.y, a + u.z);\n"
850 "vec3 __operator + (const vec3 v, const float b) {\n"
851 " return vec3 (v.x + b, v.y + b, v.z + b);\n"
854 "vec3 __operator - (const float a, const vec3 u) {\n"
855 " return vec3 (a - u.x, a - u.y, a - u.z);\n"
858 "vec3 __operator - (const vec3 v, const float b) {\n"
859 " return vec3 (v.x - b, v.y - b, v.z - b);\n"
862 "vec3 __operator * (const float a, const vec3 u) {\n"
863 " return vec3 (a * u.x, a * u.y, a * u.z);\n"
866 "vec3 __operator * (const vec3 v, const float b) {\n"
867 " return vec3 (v.x * b, v.y * b, v.z * b);\n"
870 "vec3 __operator / (const float a, const vec3 u) {\n"
871 " return vec3 (a / u.x, a / u.y, a / u.z);\n"
874 "vec3 __operator / (const vec3 v, const float b) {\n"
875 " return vec3 (v.x / b, v.y / b, v.z / b);\n"
878 "vec4 __operator + (const float a, const vec4 u) {\n"
879 " return vec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
882 "vec4 __operator + (const vec4 v, const float b) {\n"
883 " return vec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
886 "vec4 __operator - (const float a, const vec4 u) {\n"
887 " return vec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
890 "vec4 __operator - (const vec4 v, const float b) {\n"
891 " return vec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
894 "vec4 __operator * (const float a, const vec4 u) {\n"
895 " return vec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
898 "vec4 __operator * (const vec4 v, const float b) {\n"
899 " return vec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
902 "vec4 __operator / (const float a, const vec4 u) {\n"
903 " return vec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
906 "vec4 __operator / (const vec4 v, const float b) {\n"
907 " return vec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
910 "mat2 __operator + (const float a, const mat2 n) {\n"
911 " return mat2 (a + n[0], a + n[1]);\n"
914 "mat2 __operator + (const mat2 m, const float b) {\n"
915 " return mat2 (m[0] + b, m[1] + b);\n"
918 "mat2 __operator - (const float a, const mat2 n) {\n"
919 " return mat2 (a - n[0], a - n[1]);\n"
922 "mat2 __operator - (const mat2 m, const float b) {\n"
923 " return mat2 (m[0] - b, m[1] - b);\n"
926 "mat2 __operator * (const float a, const mat2 n) {\n"
927 " return mat2 (a * n[0], a * n[1]);\n"
930 "mat2 __operator * (const mat2 m, const float b) {\n"
931 " return mat2 (m[0] * b, m[1] * b);\n"
934 "mat2 __operator / (const float a, const mat2 n) {\n"
935 " return mat2 (a / n[0], a / n[1]);\n"
938 "mat2 __operator / (const mat2 m, const float b) {\n"
939 " return mat2 (m[0] / b, m[1] / b);\n"
942 "mat3 __operator + (const float a, const mat3 n) {\n"
943 " return mat3 (a + n[0], a + n[1], a + n[2]);\n"
946 "mat3 __operator + (const mat3 m, const float b) {\n"
947 " return mat3 (m[0] + b, m[1] + b, m[2] + b);\n"
950 "mat3 __operator - (const float a, const mat3 n) {\n"
951 " return mat3 (a - n[0], a - n[1], a - n[2]);\n"
954 "mat3 __operator - (const mat3 m, const float b) {\n"
955 " return mat3 (m[0] - b, m[1] - b, m[2] - b);\n"
958 "mat3 __operator * (const float a, const mat3 n) {\n"
959 " return mat3 (a * n[0], a * n[1], a * n[2]);\n"
962 "mat3 __operator * (const mat3 m, const float b) {\n"
963 " return mat3 (m[0] * b, m[1] * b, m[2] * b);\n"
966 "mat3 __operator / (const float a, const mat3 n) {\n"
967 " return mat3 (a / n[0], a / n[1], a / n[2]);\n"
970 "mat3 __operator / (const mat3 m, const float b) {\n"
971 " return mat3 (m[0] / b, m[1] / b, m[2] / b);\n"
974 "mat4 __operator + (const float a, const mat4 n) {\n"
975 " return mat4 (a + n[0], a + n[1], a + n[2], a + n[3]);\n"
978 "mat4 __operator + (const mat4 m, const float b) {\n"
979 " return mat4 (m[0] + b, m[1] + b, m[2] + b, m[3] + b);\n"
982 "mat4 __operator - (const float a, const mat4 n) {\n"
983 " return mat4 (a - n[0], a - n[1], a - n[2], a - n[3]);\n"
986 "mat4 __operator - (const mat4 m, const float b) {\n"
987 " return mat4 (m[0] - b, m[1] - b, m[2] - b, m[3] - b);\n"
990 "mat4 __operator * (const float a, const mat4 n) {\n"
991 " return mat4 (a * n[0], a * n[1], a * n[2], a * n[3]);\n"
994 "mat4 __operator * (const mat4 m, const float b) {\n"
995 " return mat4 (m[0] * b, m[1] * b, m[2] * b, m[3] * b);\n"
998 "mat4 __operator / (const float a, const mat4 n) {\n"
999 " return mat4 (a / n[0], a / n[1], a / n[2], a / n[3]);\n"
1002 "mat4 __operator / (const mat4 m, const float b) {\n"
1003 " return mat4 (m[0] / b, m[1] / b, m[2] / b, m[3] / b);\n"
1006 "ivec2 __operator + (const int a, const ivec2 u) {\n"
1007 " return ivec2 (a + u.x, a + u.y);\n"
1010 "ivec2 __operator + (const ivec2 v, const int b) {\n"
1011 " return ivec2 (v.x + b, v.y + b);\n"
1014 "ivec2 __operator - (const int a, const ivec2 u) {\n"
1015 " return ivec2 (a - u.x, a - u.y);\n"
1018 "ivec2 __operator - (const ivec2 v, const int b) {\n"
1019 " return ivec2 (v.x - b, v.y - b);\n"
1022 "ivec2 __operator * (const int a, const ivec2 u) {\n"
1023 " return ivec2 (a * u.x, a * u.y);\n"
1026 "ivec2 __operator * (const ivec2 v, const int b) {\n"
1027 " return ivec2 (v.x * b, v.y * b);\n"
1030 "ivec2 __operator / (const int a, const ivec2 u) {\n"
1031 " return ivec2 (a / u.x, a / u.y);\n"
1034 "ivec2 __operator / (const ivec2 v, const int b) {\n"
1035 " return ivec2 (v.x / b, v.y / b);\n"
1038 "ivec3 __operator + (const int a, const ivec3 u) {\n"
1039 " return ivec3 (a + u.x, a + u.y, a + u.z);\n"
1042 "ivec3 __operator + (const ivec3 v, const int b) {\n"
1043 " return ivec3 (v.x + b, v.y + b, v.z + b);\n"
1046 "ivec3 __operator - (const int a, const ivec3 u) {\n"
1047 " return ivec3 (a - u.x, a - u.y, a - u.z);\n"
1050 "ivec3 __operator - (const ivec3 v, const int b) {\n"
1051 " return ivec3 (v.x - b, v.y - b, v.z - b);\n"
1054 "ivec3 __operator * (const int a, const ivec3 u) {\n"
1055 " return ivec3 (a * u.x, a * u.y, a * u.z);\n"
1058 "ivec3 __operator * (const ivec3 v, const int b) {\n"
1059 " return ivec3 (v.x * b, v.y * b, v.z * b);\n"
1062 "ivec3 __operator / (const int a, const ivec3 u) {\n"
1063 " return ivec3 (a / u.x, a / u.y, a / u.z);\n"
1066 "ivec3 __operator / (const ivec3 v, const int b) {\n"
1067 " return ivec3 (v.x / b, v.y / b, v.z / b);\n"
1070 "ivec4 __operator + (const int a, const ivec4 u) {\n"
1071 " return ivec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
1074 "ivec4 __operator + (const ivec4 v, const int b) {\n"
1075 " return ivec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
1078 "ivec4 __operator - (const int a, const ivec4 u) {\n"
1079 " return ivec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
1082 "ivec4 __operator - (const ivec4 v, const int b) {\n"
1083 " return ivec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
1086 "ivec4 __operator * (const int a, const ivec4 u) {\n"
1087 " return ivec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
1090 "ivec4 __operator * (const ivec4 v, const int b) {\n"
1091 " return ivec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
1094 "ivec4 __operator / (const int a, const ivec4 u) {\n"
1095 " return ivec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
1098 "ivec4 __operator / (const ivec4 v, const int b) {\n"
1099 " return ivec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
1102 "vec2 __operator * (const vec2 v, const vec2 u) {\n"
1103 " return vec2 (v.x * u.x, v.y * u.y);\n"
1106 "vec3 __operator * (const vec3 v, const vec3 u) {\n"
1107 " return vec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1110 "vec4 __operator * (const vec4 v, const vec4 u) {\n"
1111 " return vec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1114 "ivec2 __operator * (const ivec2 v, const ivec2 u) {\n"
1115 " return ivec2 (v.x * u.x, v.y * u.y);\n"
1118 "ivec3 __operator * (const ivec3 v, const ivec3 u) {\n"
1119 " return ivec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1122 "ivec4 __operator * (const ivec4 v, const ivec4 u) {\n"
1123 " return ivec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1126 "vec2 __operator / (const vec2 v, const vec2 u) {\n"
1127 " return vec2 (v.x / u.x, v.y / u.y);\n"
1130 "vec3 __operator / (const vec3 v, const vec3 u) {\n"
1131 " return vec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1134 "vec4 __operator / (const vec4 v, const vec4 u) {\n"
1135 " return vec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1138 "ivec2 __operator / (const ivec2 v, const ivec2 u) {\n"
1139 " return ivec2 (v.x / u.x, v.y / u.y);\n"
1142 "ivec3 __operator / (const ivec3 v, const ivec3 u) {\n"
1143 " return ivec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1146 "ivec4 __operator / (const ivec4 v, const ivec4 u) {\n"
1147 " return ivec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1150 "mat2 __operator / (const mat2 m, const mat2 n) {\n"
1151 " return mat2 (m[0] / n[0], m[1] / n[1]);\n"
1154 "mat3 __operator / (const mat3 m, const mat3 n) {\n"
1155 " return mat3 (m[0] / n[0], m[1] / n[1], m[2] / n[2]);\n"
1158 "mat4 __operator / (const mat4 m, const mat4 n) {\n"
1159 " return mat4 (m[0] / n[0], m[1] / n[1], m[2] / n[2], m[3] / n[3]);\n"
1162 "vec2 __operator - (const vec2 v) {\n"
1163 " return vec2 (-v.x, -v.y);\n"
1166 "vec3 __operator - (const vec3 v) {\n"
1167 " return vec3 (-v.x, -v.y, -v.z);\n"
1170 "vec4 __operator - (const vec4 v) {\n"
1171 " return vec4 (-v.x, -v.y, -v.z, -v.w);\n"
1174 "ivec2 __operator - (const ivec2 v) {\n"
1175 " return ivec2 (-v.x, -v.y);\n"
1178 "ivec3 __operator - (const ivec3 v) {\n"
1179 " return ivec3 (-v.x, -v.y, -v.z);\n"
1182 "ivec4 __operator - (const ivec4 v) {\n"
1183 " return ivec4 (-v.x, -v.y, -v.z, -v.w);\n"
1186 "mat2 __operator - (const mat2 m) {\n"
1187 " return mat2 (-m[0], -m[1]);\n"
1190 "mat3 __operator - (const mat3 m) {\n"
1191 " return mat3 (-m[0], -m[1], -m[2]);\n"
1194 "mat4 __operator - (const mat4 m) {\n"
1195 " return mat4 (-m[0], -m[1], -m[2], -m[3]);\n"
1203 "void __operator -- (inout float a) {\n"
1207 "void __operator -- (inout int a) {\n"
1211 "void __operator -- (inout vec2 v) {\n"
1215 "void __operator -- (inout vec3 v) {\n"
1216 " --v.x, --v.y, --v.z;\n"
1219 "void __operator -- (inout vec4 v) {\n"
1220 " --v.x, --v.y, --v.z, --v.w;\n"
1223 "void __operator -- (inout ivec2 v) {\n"
1227 "void __operator -- (inout ivec3 v) {\n"
1228 " --v.x, --v.y, --v.z;\n"
1231 "void __operator -- (inout ivec4 v) {\n"
1232 " --v.x, --v.y, --v.z, --v.w;\n"
1235 "void __operator -- (inout mat2 m) {\n"
1236 " --m[0], --m[1];\n"
1239 "void __operator -- (inout mat3 m) {\n"
1240 " --m[0], --m[1], --m[2];\n"
1243 "void __operator -- (inout mat4 m) {\n"
1244 " --m[0], --m[1], --m[2], --m[3];\n"
1247 "void __operator ++ (inout float a) {\n"
1251 "void __operator ++ (inout int a) {\n"
1255 "void __operator ++ (inout vec2 v) {\n"
1259 "void __operator ++ (inout vec3 v) {\n"
1260 " ++v.x, ++v.y, ++v.z;\n"
1263 "void __operator ++ (inout vec4 v) {\n"
1264 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1267 "void __operator ++ (inout ivec2 v) {\n"
1271 "void __operator ++ (inout ivec3 v) {\n"
1272 " ++v.x, ++v.y, ++v.z;\n"
1275 "void __operator ++ (inout ivec4 v) {\n"
1276 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1279 "void __operator ++ (inout mat2 m) {\n"
1280 " ++m[0], ++m[1];\n"
1283 "void __operator ++ (inout mat3 m) {\n"
1284 " ++m[0], ++m[1], ++m[2];\n"
1287 "void __operator ++ (inout mat4 m) {\n"
1288 " ++m[0], ++m[1], ++m[2], ++m[3];\n"
1291 "float __operator -- (inout float a, const int) {\n"
1298 "int __operator -- (inout int a, const int) {\n"
1305 "vec2 __operator -- (inout vec2 v, const int) {\n"
1306 " return vec2 (v.x--, v.y--);\n"
1309 "vec3 __operator -- (inout vec3 v, const int) {\n"
1310 " return vec3 (v.x--, v.y--, v.z--);\n"
1313 "vec4 __operator -- (inout vec4 v, const int) {\n"
1314 " return vec4 (v.x--, v.y--, v.z--, v.w--);\n"
1317 "ivec2 __operator -- (inout ivec2 v, const int) {\n"
1318 " return ivec2 (v.x--, v.y--);\n"
1321 "ivec3 __operator -- (inout ivec3 v, const int) {\n"
1322 " return ivec3 (v.x--, v.y--, v.z--);\n"
1325 "ivec4 __operator -- (inout ivec4 v, const int) {\n"
1326 " return ivec4 (v.x--, v.y--, v.z--, v.w--);\n"
1329 "mat2 __operator -- (inout mat2 m, const int) {\n"
1330 " return mat2 (m[0]--, m[1]--);\n"
1333 "mat3 __operator -- (inout mat3 m, const int) {\n"
1334 " return mat3 (m[0]--, m[1]--, m[2]--);\n"
1337 "mat4 __operator -- (inout mat4 m, const int) {\n"
1338 " return mat4 (m[0]--, m[1]--, m[2]--, m[3]--);\n"
1341 "float __operator ++ (inout float a, const int) {\n"
1348 "int __operator ++ (inout int a, const int) {\n"
1355 "vec2 __operator ++ (inout vec2 v, const int) {\n"
1356 " return vec2 (v.x++, v.y++);\n"
1359 "vec3 __operator ++ (inout vec3 v, const int) {\n"
1360 " return vec3 (v.x++, v.y++, v.z++);\n"
1363 "vec4 __operator ++ (inout vec4 v, const int) {\n"
1364 " return vec4 (v.x++, v.y++, v.z++, v.w++);\n"
1367 "ivec2 __operator ++ (inout ivec2 v, const int) {\n"
1368 " return ivec2 (v.x++, v.y++);\n"
1371 "ivec3 __operator ++ (inout ivec3 v, const int) {\n"
1372 " return ivec3 (v.x++, v.y++, v.z++);\n"
1375 "ivec4 __operator ++ (inout ivec4 v, const int) {\n"
1376 " return ivec4 (v.x++, v.y++, v.z++, v.w++);\n"
1379 "mat2 __operator ++ (inout mat2 m, const int) {\n"
1380 " return mat2 (m[0]++, m[1]++);\n"
1383 "mat3 __operator ++ (inout mat3 m, const int) {\n"
1384 " return mat3 (m[0]++, m[1]++, m[2]++);\n"
1387 "mat4 __operator ++ (inout mat4 m, const int) {\n"
1388 " return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);\n"
1391 "bool __operator < (const float a, const float b) {\n"
1393 " __asm float_less c, a, b;\n"
1397 "bool __operator < (const int a, const int b) {\n"
1398 " return float (a) < float (b);\n"
1401 "bool __operator > (const float a, const float b) {\n"
1405 "bool __operator > (const int a, const int b) {\n"
1409 "bool __operator >= (const float a, const float b) {\n"
1410 " return a > b || a == b;\n"
1413 "bool __operator >= (const int a, const int b) {\n"
1414 " return a > b || a == b;\n"
1417 "bool __operator <= (const float a, const float b) {\n"
1418 " return a < b || a == b;\n"
1421 "bool __operator <= (const int a, const int b) {\n"
1422 " return a < b || a == b;\n"
1547 "bool __operator ^^ (const bool a, const bool b) {\n"
1562 "bool __operator ! (const bool a) {\n"
1563 " return a == false;\n"