Implement 1.20 'outerProduct' builtin.
This commit is contained in:
@@ -2811,8 +2811,104 @@ static const char *builtins_120_matrixCompMult = {
|
||||
"))\n"
|
||||
};
|
||||
|
||||
static const char *builtins_120_outerProduct = {
|
||||
"((function outerProduct\n"
|
||||
" (signature mat2\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec2 u)\n"
|
||||
" (declare (in) vec2 v))\n"
|
||||
" ((declare () mat2 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat2x3\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec2 u)\n"
|
||||
" (declare (in) vec3 v))\n"
|
||||
" ((declare () mat2x3 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat2x4\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec2 u)\n"
|
||||
" (declare (in) vec4 v))\n"
|
||||
" ((declare () mat2x4 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat3x2\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec3 u)\n"
|
||||
" (declare (in) vec2 v))\n"
|
||||
" ((declare () mat3x2 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat3\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec3 u)\n"
|
||||
" (declare (in) vec3 v))\n"
|
||||
" ((declare () mat3 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat3x4\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec3 u)\n"
|
||||
" (declare (in) vec4 v))\n"
|
||||
" ((declare () mat3x4 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat4x2\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec4 u)\n"
|
||||
" (declare (in) vec2 v))\n"
|
||||
" ((declare () mat4x2 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec2 * (var_ref v) (swiz w (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat4x3\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec4 u)\n"
|
||||
" (declare (in) vec3 v))\n"
|
||||
" ((declare () mat4x3 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec3 * (var_ref v) (swiz w (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"\n"
|
||||
" (signature mat4\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec4 u)\n"
|
||||
" (declare (in) vec4 v))\n"
|
||||
" ((declare () mat4 m)\n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref v) (swiz x (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref v) (swiz y (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref v) (swiz z (var_ref u)))) \n"
|
||||
" (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec4 * (var_ref v) (swiz w (var_ref u)))) \n"
|
||||
"(return (var_ref m))))\n"
|
||||
"))\n"
|
||||
"\n"
|
||||
};
|
||||
|
||||
static const char *functions_for_120 [] = {
|
||||
builtins_120_matrixCompMult,
|
||||
builtins_120_outerProduct,
|
||||
};
|
||||
|
||||
/* 130 builtins */
|
||||
|
||||
Reference in New Issue
Block a user