glsl2: Fix up the implementation of fract() for vector types.
authorEric Anholt <eric@anholt.net>
Wed, 30 Jun 2010 22:59:07 +0000 (15:59 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 30 Jun 2010 22:59:07 +0000 (15:59 -0700)
There's no need to split each vector component out, just do vector ops.

src/glsl/builtin_function.cpp
src/glsl/builtins/110/fract

index d248388a1ab39a27c2a8d99d1bcc90617915a990..626ba4e2bf37f9733c7687f738d500754fcc5822 100644 (file)
@@ -786,29 +786,17 @@ static const char *builtins_110_fract = {
    "   (signature vec2\n"
    "     (parameters\n"
    "       (declare (in) vec2 x))\n"
-   "     ((declare () vec2 t)\n"
-   "      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
-   "      (return (var_ref t))))\n"
+   "     ((return (expression vec2 - (var_ref x) (expression vec2 floor (var_ref x))))))\n"
    "\n"
    "   (signature vec3\n"
    "     (parameters\n"
    "       (declare (in) vec3 x))\n"
-   "     ((declare () vec3 t)\n"
-   "      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
-   "      (return (var_ref t))))\n"
+   "     ((return (expression vec3 - (var_ref x) (expression vec3 floor (var_ref x))))))\n"
    "\n"
    "   (signature vec4\n"
    "     (parameters\n"
    "       (declare (in) vec4 x))\n"
-   "     ((declare () vec4 t)\n"
-   "      (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
-   "      (assign (constant bool (1)) (swiz w (var_ref t)) (expression float - (swiz w (var_ref x)) (expression float floor (swiz w (var_ref x)))))\n"
-   "      (return (var_ref t))))\n"
+   "     ((return (expression vec4 - (var_ref x) (expression vec4 floor (var_ref x))))))\n"
    "))\n"
    "\n"
 };
index 3995bfaf3f9a43e62e56cdd59ec28ac7a655c5e8..46741bb3cb4cfddf6662e1bce1a46341f365ce5f 100644 (file)
@@ -7,28 +7,16 @@
    (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))))
+     ((return (expression vec2 - (var_ref x) (expression vec2 floor (var_ref x))))))
 
    (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))))
+     ((return (expression vec3 - (var_ref x) (expression vec3 floor (var_ref x))))))
 
    (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))))
+     ((return (expression vec4 - (var_ref x) (expression vec4 floor (var_ref x))))))
 ))