Implement "fract" builtin.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 4 May 2010 03:59:09 +0000 (20:59 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 14 May 2010 23:34:46 +0000 (16:34 -0700)
builtins/110/fract [new file with mode: 0644]

diff --git a/builtins/110/fract b/builtins/110/fract
new file mode 100644 (file)
index 0000000..3995bfa
--- /dev/null
@@ -0,0 +1,34 @@
+((function fract
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float - (var_ref x) (expression float floor (var_ref x))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((declare () vec2 t)
+      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))
+      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))
+      (return (var_ref t))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((declare () vec3 t)
+      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))
+      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))
+      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))
+      (return (var_ref t))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((declare () vec4 t)
+      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))
+      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))
+      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))
+      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float - (swiz w (var_ref x)) (expression float floor (swiz w (var_ref x)))))
+      (return (var_ref t))))
+))
+