From db9b8c062fe8ebb7321a24207f2887a28b31a55d Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Mon, 15 Nov 2010 13:58:51 -0800 Subject: [PATCH] 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(-) create mode 100644 src/glsl/builtins/ir/acosh create mode 100644 src/glsl/builtins/ir/asinh create mode 100644 src/glsl/builtins/ir/atanh diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh new file mode 100644 index 00000000000..5518e757531 --- /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 00000000000..cdc2c20e765 --- /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 00000000000..5559e974066 --- /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 0d860eb9ed4..329116f2a28 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 2fd44dce8c7..1c212ebb3c5 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 -- 2.30.2