summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-07-20 12:22:37 -0700
committerEric Anholt <eric@anholt.net>2010-07-20 12:24:01 -0700
commit1245babe0c69846d227a78a11429584433e77a9e (patch)
treeec175906824124f6b32e7754c6532ee3a6a43cdb
parent117d154b4d877e8c4d7880432af0a80b8f717dc6 (diff)
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
-rw-r--r--src/glsl/builtin_function.cpp130
-rw-r--r--src/glsl/builtins/110/asin130
2 files changed, 138 insertions, 122 deletions
diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
index be7a4f2c63..967bcd0c40 100644
--- a/src/glsl/builtin_function.cpp
+++ b/src/glsl/builtin_function.cpp
@@ -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"
diff --git a/src/glsl/builtins/110/asin b/src/glsl/builtins/110/asin
index fe93337bff..d26bde364b 100644
--- a/src/glsl/builtins/110/asin
+++ b/src/glsl/builtins/110/asin
@@ -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