glsl2: Fix asin() implementation.

I'd flipped around the order of two operations in paren-balancing
adventures, and left out the multiply by sign(x) required for negative x.

Fixes:
glsl1-acos(vec4) function
glsl1-asin(vec4) function
glsl1-atan(vec4) function
This commit is contained in:
Eric Anholt 2010-07-20 12:22:37 -07:00
parent 117d154b4d
commit 1245babe0c
2 changed files with 138 additions and 122 deletions

View file

@ -113,90 +113,98 @@ static const char *builtins_110_asin = {
" (parameters\n"
" (declare (in) float x))\n"
" ((return (expression float *\n"
" (expression float -\n"
" (expression float *\n"
" (expression float sign (var_ref x))\n"
" (expression float -\n"
" (expression float *\n"
" (constant float (3.1415926))\n"
" (constant float (0.5)))\n"
" (expression float sqrt\n"
" (expression float -\n"
" (constant float (1.0))\n"
" (expression float abs (var_ref x)))))\n"
" (expression float +\n"
" (constant float (1.5707288))\n"
" (expression float *\n"
" (expression float abs (var_ref x))\n"
" (expression float +\n"
" (constant float (-0.2121144))\n"
" (expression float *\n"
" (constant float (0.0742610))\n"
" (expression float abs (var_ref x))))))))))\n"
" (expression float *\n"
" (expression float sqrt\n"
" (expression float -\n"
" (constant float (1.0))\n"
" (expression float abs (var_ref x))))\n"
" (expression float +\n"
" (constant float (1.5707288))\n"
" (expression float *\n"
" (expression float abs (var_ref x))\n"
" (expression float +\n"
" (constant float (-0.2121144))\n"
" (expression float *\n"
" (constant float (0.0742610))\n"
" (expression float abs (var_ref x))))))))))))\n"
"\n"
" (signature vec2\n"
" (parameters\n"
" (declare (in) vec2 x))\n"
" ((return (expression vec2 *\n"
" (expression float -\n"
" (expression float *\n"
" (expression vec2 sign (var_ref x))\n"
" (expression vec2 -\n"
" (expression float *\n"
" (constant float (3.1415926))\n"
" (constant float (0.5)))\n"
" (expression vec2 sqrt\n"
" (expression vec2 -\n"
" (constant float (1.0))\n"
" (expression vec2 abs (var_ref x)))))\n"
" (expression vec2 +\n"
" (constant float (1.5707288))\n"
" (expression vec2 *\n"
" (expression vec2 abs (var_ref x))\n"
" (expression vec2 +\n"
" (constant float (-0.2121144))\n"
" (expression vec2 *\n"
" (constant float (0.0742610))\n"
" (expression vec2 abs (var_ref x))))))))))\n"
" (expression vec2 *\n"
" (expression vec2 sqrt\n"
" (expression vec2 -\n"
" (constant float (1.0))\n"
" (expression vec2 abs (var_ref x))))\n"
" (expression vec2 +\n"
" (constant float (1.5707288))\n"
" (expression vec2 *\n"
" (expression vec2 abs (var_ref x))\n"
" (expression vec2 +\n"
" (constant float (-0.2121144))\n"
" (expression vec2 *\n"
" (constant float (0.0742610))\n"
" (expression vec2 abs (var_ref x))))))))))))\n"
"\n"
" (signature vec3\n"
" (parameters\n"
" (declare (in) vec3 x))\n"
" ((return (expression vec3 *\n"
" (expression vec3 -\n"
" (expression float *\n"
" (expression vec3 sign (var_ref x))\n"
" (expression vec3 -\n"
" (expression float *\n"
" (constant float (3.1415926))\n"
" (constant float (0.5)))\n"
" (expression vec3 sqrt\n"
" (expression vec3 -\n"
" (constant float (1.0))\n"
" (expression vec3 abs (var_ref x)))))\n"
" (expression vec3 +\n"
" (constant float (1.5707288))\n"
" (expression vec3 *\n"
" (expression vec3 abs (var_ref x))\n"
" (expression vec3 +\n"
" (constant float (-0.2121144))\n"
" (expression vec3 *\n"
" (constant float (0.0742610))\n"
" (expression vec3 abs (var_ref x))))))))))\n"
" (expression vec3 *\n"
" (expression vec3 sqrt\n"
" (expression vec3 -\n"
" (constant float (1.0))\n"
" (expression vec3 abs (var_ref x))))\n"
" (expression vec3 +\n"
" (constant float (1.5707288))\n"
" (expression vec3 *\n"
" (expression vec3 abs (var_ref x))\n"
" (expression vec3 +\n"
" (constant float (-0.2121144))\n"
" (expression vec3 *\n"
" (constant float (0.0742610))\n"
" (expression vec3 abs (var_ref x))))))))))))\n"
"\n"
" (signature vec4\n"
" (parameters\n"
" (declare (in) vec4 x))\n"
" ((return (expression vec4 *\n"
" (expression vec4 -\n"
" (expression float *\n"
" (expression vec4 sign (var_ref x))\n"
" (expression vec4 -\n"
" (expression float *\n"
" (constant float (3.1415926))\n"
" (constant float (0.5)))\n"
" (expression vec4 sqrt\n"
" (expression vec4 -\n"
" (constant float (1.0))\n"
" (expression vec4 abs (var_ref x)))))\n"
" (expression vec4 +\n"
" (constant float (1.5707288))\n"
" (expression vec4 *\n"
" (expression vec4 abs (var_ref x))\n"
" (expression vec4 +\n"
" (constant float (-0.2121144))\n"
" (expression vec4 *\n"
" (constant float (0.0742610))\n"
" (expression vec4 abs (var_ref x))))))))))\n"
")\n"
" (expression vec4 *\n"
" (expression vec4 sqrt\n"
" (expression vec4 -\n"
" (constant float (1.0))\n"
" (expression vec4 abs (var_ref x))))\n"
" (expression vec4 +\n"
" (constant float (1.5707288))\n"
" (expression vec4 *\n"
" (expression vec4 abs (var_ref x))\n"
" (expression vec4 +\n"
" (constant float (-0.2121144))\n"
" (expression vec4 *\n"
" (constant float (0.0742610))\n"
" (expression vec4 abs (var_ref x)))))))))))\n"
"))\n"
"\n"
" (function acos\n"
" (signature float\n"

View file

@ -3,90 +3,98 @@
(parameters
(declare (in) float x))
((return (expression float *
(expression float -
(expression float *
(expression float sign (var_ref x))
(expression float -
(expression float *
(constant float (3.1415926))
(constant float (0.5)))
(expression float sqrt
(expression float -
(constant float (1.0))
(expression float abs (var_ref x)))))
(expression float +
(constant float (1.5707288))
(expression float *
(expression float abs (var_ref x))
(expression float +
(constant float (-0.2121144))
(expression float *
(constant float (0.0742610))
(expression float abs (var_ref x))))))))))
(expression float *
(expression float sqrt
(expression float -
(constant float (1.0))
(expression float abs (var_ref x))))
(expression float +
(constant float (1.5707288))
(expression float *
(expression float abs (var_ref x))
(expression float +
(constant float (-0.2121144))
(expression float *
(constant float (0.0742610))
(expression float abs (var_ref x))))))))))))
(signature vec2
(parameters
(declare (in) vec2 x))
((return (expression vec2 *
(expression float -
(expression float *
(expression vec2 sign (var_ref x))
(expression vec2 -
(expression float *
(constant float (3.1415926))
(constant float (0.5)))
(expression vec2 sqrt
(expression vec2 -
(constant float (1.0))
(expression vec2 abs (var_ref x)))))
(expression vec2 +
(constant float (1.5707288))
(expression vec2 *
(expression vec2 abs (var_ref x))
(expression vec2 +
(constant float (-0.2121144))
(expression vec2 *
(constant float (0.0742610))
(expression vec2 abs (var_ref x))))))))))
(expression vec2 *
(expression vec2 sqrt
(expression vec2 -
(constant float (1.0))
(expression vec2 abs (var_ref x))))
(expression vec2 +
(constant float (1.5707288))
(expression vec2 *
(expression vec2 abs (var_ref x))
(expression vec2 +
(constant float (-0.2121144))
(expression vec2 *
(constant float (0.0742610))
(expression vec2 abs (var_ref x))))))))))))
(signature vec3
(parameters
(declare (in) vec3 x))
((return (expression vec3 *
(expression vec3 -
(expression float *
(expression vec3 sign (var_ref x))
(expression vec3 -
(expression float *
(constant float (3.1415926))
(constant float (0.5)))
(expression vec3 sqrt
(expression vec3 -
(constant float (1.0))
(expression vec3 abs (var_ref x)))))
(expression vec3 +
(constant float (1.5707288))
(expression vec3 *
(expression vec3 abs (var_ref x))
(expression vec3 +
(constant float (-0.2121144))
(expression vec3 *
(constant float (0.0742610))
(expression vec3 abs (var_ref x))))))))))
(expression vec3 *
(expression vec3 sqrt
(expression vec3 -
(constant float (1.0))
(expression vec3 abs (var_ref x))))
(expression vec3 +
(constant float (1.5707288))
(expression vec3 *
(expression vec3 abs (var_ref x))
(expression vec3 +
(constant float (-0.2121144))
(expression vec3 *
(constant float (0.0742610))
(expression vec3 abs (var_ref x))))))))))))
(signature vec4
(parameters
(declare (in) vec4 x))
((return (expression vec4 *
(expression vec4 -
(expression float *
(expression vec4 sign (var_ref x))
(expression vec4 -
(expression float *
(constant float (3.1415926))
(constant float (0.5)))
(expression vec4 sqrt
(expression vec4 -
(constant float (1.0))
(expression vec4 abs (var_ref x)))))
(expression vec4 +
(constant float (1.5707288))
(expression vec4 *
(expression vec4 abs (var_ref x))
(expression vec4 +
(constant float (-0.2121144))
(expression vec4 *
(constant float (0.0742610))
(expression vec4 abs (var_ref x))))))))))
)
(expression vec4 *
(expression vec4 sqrt
(expression vec4 -
(constant float (1.0))
(expression vec4 abs (var_ref x))))
(expression vec4 +
(constant float (1.5707288))
(expression vec4 *
(expression vec4 abs (var_ref x))
(expression vec4 +
(constant float (-0.2121144))
(expression vec4 *
(constant float (0.0742610))
(expression vec4 abs (var_ref x)))))))))))
))
(function acos
(signature float