glsl: Add support for GLSL 1.30's modf built-in.

This commit is contained in:
Kenneth Graunke
2010-10-19 11:56:47 -07:00
parent 94a36faed7
commit 574c53f551
3 changed files with 51 additions and 0 deletions
+41
View File
@@ -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)))))
))
+5
View File
@@ -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);
+5
View File
@@ -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);