summaryrefslogtreecommitdiffstats
path: root/src/glsl/builtin_function.cpp
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-07-20 12:22:37 -0700
committerEric Anholt <[email protected]>2010-07-20 12:24:01 -0700
commit1245babe0c69846d227a78a11429584433e77a9e (patch)
treeec175906824124f6b32e7754c6532ee3a6a43cdb /src/glsl/builtin_function.cpp
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
Diffstat (limited to 'src/glsl/builtin_function.cpp')
-rw-r--r--src/glsl/builtin_function.cpp130
1 files changed, 69 insertions, 61 deletions
diff --git a/src/glsl/builtin_function.cpp b/src/glsl/builtin_function.cpp
index be7a4f2c633..967bcd0c40d 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"