diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2010-10-19 11:56:47 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2010-10-21 00:14:37 -0700 |
commit | 574c53f551cb35173aee4acfa5c374613b953264 (patch) | |
tree | df7e697717ba29c3eb98fd442371a7d1f9f4bbc1 /src/glsl | |
parent | 94a36faed7ae0c795665b6cfb4dd4324ffaa5fa8 (diff) |
glsl: Add support for GLSL 1.30's modf built-in.
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/builtins/ir/modf | 41 | ||||
-rw-r--r-- | src/glsl/builtins/profiles/130.frag | 5 | ||||
-rw-r--r-- | src/glsl/builtins/profiles/130.vert | 5 |
3 files changed, 51 insertions, 0 deletions
diff --git a/src/glsl/builtins/ir/modf b/src/glsl/builtins/ir/modf new file mode 100644 index 0000000000..2b935a91a7 --- /dev/null +++ b/src/glsl/builtins/ir/modf @@ -0,0 +1,41 @@ +((function modf + (signature float + (parameters + (declare (in) float x) + (declare (out) float i)) + ((declare () float t) + (assign (constant bool (1)) (x) (var_ref t) + (expression float trunc (var_ref x))) + (assign (constant bool (1)) (x) (var_ref i) (var_ref t)) + (return (expression float - (var_ref x) (var_ref t))))) + + (signature vec2 + (parameters + (declare (in) vec2 x) + (declare (out) vec2 i)) + ((declare () vec2 t) + (assign (constant bool (1)) (xy) (var_ref t) + (expression vec2 trunc (var_ref x))) + (assign (constant bool (1)) (xy) (var_ref i) (var_ref t)) + (return (expression vec2 - (var_ref x) (var_ref t))))) + + (signature vec3 + (parameters + (declare (in) vec3 x) + (declare (out) vec3 i)) + ((declare () vec3 t) + (assign (constant bool (1)) (xyz) (var_ref t) + (expression vec3 trunc (var_ref x))) + (assign (constant bool (1)) (xyz) (var_ref i) (var_ref t)) + (return (expression vec3 - (var_ref x) (var_ref t))))) + + (signature vec4 + (parameters + (declare (in) vec4 x) + (declare (out) vec4 i)) + ((declare () vec4 t) + (assign (constant bool (1)) (xyzw) (var_ref t) + (expression vec4 trunc (var_ref x))) + (assign (constant bool (1)) (xyzw) (var_ref i) (var_ref t)) + (return (expression vec4 - (var_ref x) (var_ref t))))) +)) diff --git a/src/glsl/builtins/profiles/130.frag b/src/glsl/builtins/profiles/130.frag index 96440703bd..0d860eb9ed 100644 --- a/src/glsl/builtins/profiles/130.frag +++ b/src/glsl/builtins/profiles/130.frag @@ -177,6 +177,11 @@ vec2 mod(vec2 x, vec2 y); vec3 mod(vec3 x, vec3 y); vec4 mod(vec4 x, vec4 y); +float modf(float x, out float i); +vec2 modf(vec2 x, out vec2 i); +vec3 modf(vec3 x, out vec3 i); +vec4 modf(vec4 x, out vec4 i); + float min(float x, float y); vec2 min(vec2 x, vec2 y); vec3 min(vec3 x, vec3 y); diff --git a/src/glsl/builtins/profiles/130.vert b/src/glsl/builtins/profiles/130.vert index eb765186fc..2fd44dce8c 100644 --- a/src/glsl/builtins/profiles/130.vert +++ b/src/glsl/builtins/profiles/130.vert @@ -177,6 +177,11 @@ vec2 mod(vec2 x, vec2 y); vec3 mod(vec3 x, vec3 y); vec4 mod(vec4 x, vec4 y); +float modf(float x, out float i); +vec2 modf(vec2 x, out vec2 i); +vec3 modf(vec3 x, out vec3 i); +vec4 modf(vec4 x, out vec4 i); + float min(float x, float y); vec2 min(vec2 x, vec2 y); vec3 min(vec3 x, vec3 y); |