diff options
Diffstat (limited to 'builtins')
| -rw-r--r-- | builtins/110/matrixCompMult | 32 | ||||
| -rw-r--r-- | builtins/120/matrixCompMult | 61 | ||||
| -rwxr-xr-x | builtins/tools/generate_matrixCompMultGLSL.py | 28 | 
3 files changed, 121 insertions, 0 deletions
diff --git a/builtins/110/matrixCompMult b/builtins/110/matrixCompMult new file mode 100644 index 0000000000..cb5a2cb1f7 --- /dev/null +++ b/builtins/110/matrixCompMult @@ -0,0 +1,32 @@ +((function matrixCompMult +   (signature mat2 +     (parameters +       (declare (in) mat2 x) +       (declare (in) mat2 y)) +     ((declare () mat2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat3 +     (parameters +       (declare (in) mat3 x) +       (declare (in) mat3 y)) +     ((declare () mat3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat4 +     (parameters +       (declare (in) mat4 x) +       (declare (in) mat4 y)) +     ((declare () mat4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) +)) + diff --git a/builtins/120/matrixCompMult b/builtins/120/matrixCompMult new file mode 100644 index 0000000000..69331e2652 --- /dev/null +++ b/builtins/120/matrixCompMult @@ -0,0 +1,61 @@ +((function matrixCompMult +   (signature mat2x3 +     (parameters +       (declare (in) mat2x3 x) +       (declare (in) mat2x3 y)) +     ((declare () mat2x3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat3x2 +     (parameters +       (declare (in) mat3x2 x) +       (declare (in) mat3x2 y)) +     ((declare () mat3x2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat2x4 +     (parameters +       (declare (in) mat2x4 x) +       (declare (in) mat2x4 y)) +     ((declare () mat2x4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +(return (var_ref z)))) + +   (signature mat4x2 +     (parameters +       (declare (in) mat4x2 x) +       (declare (in) mat4x2 y)) +     ((declare () mat4x2 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec2 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) + +   (signature mat3x4 +     (parameters +       (declare (in) mat3x4 x) +       (declare (in) mat3x4 y)) +     ((declare () mat3x4 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +(return (var_ref z)))) + +   (signature mat4x3 +     (parameters +       (declare (in) mat4x3 x) +       (declare (in) mat4x3 y)) +     ((declare () mat4x3 z) +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0)))  (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1)))  (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2)))  (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2)))))  +      (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3)))  (expression vec3 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3)))))  +(return (var_ref z)))) +)) diff --git a/builtins/tools/generate_matrixCompMultGLSL.py b/builtins/tools/generate_matrixCompMultGLSL.py new file mode 100755 index 0000000000..391ad110d3 --- /dev/null +++ b/builtins/tools/generate_matrixCompMultGLSL.py @@ -0,0 +1,28 @@ +#!/usr/bin/python + +def gen_matrix(x, y = 0): +    if y == 0: +        y = x +    type = "mat" + str(x) +    if x != y: +        type = type + "x" + str(y) +    print type + " matrixCompMult(" + type + " x, " + type + " y)\n{" +    print "    " + type + " z;" + +    for i in range(x): +        print "    z[" + str(i) + "] = x[" + str(i) + "] * y[" + str(i) + "];" +    print "    return z;\n}" + +print "#version 120" +# 1.10 +gen_matrix(2) +gen_matrix(3) +gen_matrix(4) + +# 1.20 +gen_matrix(2,3) # mat2x3 means 2 columns, 3 rows +gen_matrix(3,2) +gen_matrix(2,4) +gen_matrix(4,2) +gen_matrix(3,4) +gen_matrix(4,3)  | 
