Mesa (master): glsl: Implement the asinh, acosh, and atanh built-in functions.

Kenneth Graunke kwg at kemper.freedesktop.org
Mon Nov 15 22:11:01 UTC 2010


Module: Mesa
Branch: master
Commit: db9b8c062fe8ebb7321a24207f2887a28b31a55d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=db9b8c062fe8ebb7321a24207f2887a28b31a55d

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Nov 15 13:58:51 2010 -0800

glsl: Implement the asinh, acosh, and atanh built-in functions.

---

 src/glsl/builtins/ir/acosh          |   21 +++++++++++++++++++
 src/glsl/builtins/ir/asinh          |   21 +++++++++++++++++++
 src/glsl/builtins/ir/atanh          |   37 +++++++++++++++++++++++++++++++++++
 src/glsl/builtins/profiles/130.frag |    2 -
 src/glsl/builtins/profiles/130.vert |    2 -
 5 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh
new file mode 100644
index 0000000..5518e75
--- /dev/null
+++ b/src/glsl/builtins/ir/acosh
@@ -0,0 +1,21 @@
+((function acosh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float - (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/asinh b/src/glsl/builtins/ir/asinh
new file mode 100644
index 0000000..cdc2c20
--- /dev/null
+++ b/src/glsl/builtins/ir/asinh
@@ -0,0 +1,21 @@
+((function asinh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float log (expression float + (var_ref x) (expression float sqrt (expression float + (expression float * (var_ref x) (var_ref x)) (constant float (1)))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 log (expression vec2 + (var_ref x) (expression vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) (constant vec2 (1)))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 log (expression vec3 + (var_ref x) (expression vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) (constant vec3 (1)))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 log (expression vec4 + (var_ref x) (expression vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) (constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/atanh b/src/glsl/builtins/ir/atanh
new file mode 100644
index 0000000..5559e97
--- /dev/null
+++ b/src/glsl/builtins/ir/atanh
@@ -0,0 +1,37 @@
+((function atanh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float * (constant float (0.5))
+                (expression float log
+		  (expression float /
+                    (expression float + (constant float (1)) (var_ref x))
+                    (expression float - (constant float (1)) (var_ref x))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 * (constant vec2 (0.5))
+                (expression vec2 log
+		  (expression vec2 /
+                    (expression vec2 + (constant vec2 (1)) (var_ref x))
+                    (expression vec2 - (constant vec2 (1)) (var_ref x))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 * (constant vec3 (0.5))
+                (expression vec3 log
+		  (expression vec3 /
+                    (expression vec3 + (constant vec3 (1)) (var_ref x))
+                    (expression vec3 - (constant vec3 (1)) (var_ref x))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 * (constant vec4 (0.5))
+                (expression vec4 log
+		  (expression vec4 /
+                    (expression vec4 + (constant vec4 (1)) (var_ref x))
+                    (expression vec4 - (constant vec4 (1)) (var_ref x))))))))
+))
diff --git a/src/glsl/builtins/profiles/130.frag b/src/glsl/builtins/profiles/130.frag
index 0d860eb..329116f 100644
--- a/src/glsl/builtins/profiles/130.frag
+++ b/src/glsl/builtins/profiles/130.frag
@@ -62,7 +62,6 @@ vec2  tanh(vec2  x);
 vec3  tanh(vec3  x);
 vec4  tanh(vec4  x);
 
-#if 0
 float asinh(float x);
 vec2  asinh(vec2  x);
 vec3  asinh(vec3  x);
@@ -77,7 +76,6 @@ float atanh(float x);
 vec2  atanh(vec2  x);
 vec3  atanh(vec3  x);
 vec4  atanh(vec4  x);
-#endif
 
 /*
  * 8.2 - Exponential Functions
diff --git a/src/glsl/builtins/profiles/130.vert b/src/glsl/builtins/profiles/130.vert
index 2fd44dc..1c212eb 100644
--- a/src/glsl/builtins/profiles/130.vert
+++ b/src/glsl/builtins/profiles/130.vert
@@ -62,7 +62,6 @@ vec2  tanh(vec2  x);
 vec3  tanh(vec3  x);
 vec4  tanh(vec4  x);
 
-#if 0
 float asinh(float x);
 vec2  asinh(vec2  x);
 vec3  asinh(vec3  x);
@@ -77,7 +76,6 @@ float atanh(float x);
 vec2  atanh(vec2  x);
 vec3  atanh(vec3  x);
 vec4  atanh(vec4  x);
-#endif
 
 /*
  * 8.2 - Exponential Functions




More information about the mesa-commit mailing list