glsl: Fix the setup of refract()'s output for vec3/vec4 and k < 0.0.
authorEric Anholt <eric@anholt.net>
Wed, 7 Jul 2010 21:53:43 +0000 (14:53 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 7 Jul 2010 21:55:33 +0000 (14:55 -0700)
caught by valgrind.

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

index 40c85e7c9892a0b4f8185b3be18d8322101904d9..5b3b49d3107e31b47975e11d3596bb9dfe2da9ab 100644 (file)
@@ -1808,7 +1808,7 @@ static const char *builtins_110_refract = {
    "                   (expression float dot (var_ref n) (var_ref i))\n"
    "                   (expression float dot (var_ref n) (var_ref i))))))))\n"
    "      (if (expression bool < (var_ref k) (constant float (0.0)))\n"
-   "          ((return (constant vec3 (0.0 0.0))))\n"
+   "          ((return (constant vec3 (0.0 0.0 0.0))))\n"
    "     ((return (expression vec3 -\n"
    "                (expression vec3 * (var_ref eta) (var_ref i))\n"
    "                (expression vec3 *\n"
@@ -1833,7 +1833,7 @@ static const char *builtins_110_refract = {
    "                   (expression float dot (var_ref n) (var_ref i))\n"
    "                   (expression float dot (var_ref n) (var_ref i))))))))\n"
    "      (if (expression bool < (var_ref k) (constant float (0.0)))\n"
-   "          ((return (constant vec4 (0.0 0.0))))\n"
+   "          ((return (constant vec4 (0.0 0.0 0.0 0.0))))\n"
    "     ((return (expression vec4 -\n"
    "                (expression vec4 * (var_ref eta) (var_ref i))\n"
    "                (expression vec4 *\n"
index e9b1475294aab159fb28d81ff08847ace6299d36..522ab4117347b01d4086592debdca08ebe79f493 100644 (file)
@@ -64,7 +64,7 @@
                        (expression float dot (var_ref n) (var_ref i))
                        (expression float dot (var_ref n) (var_ref i))))))))
       (if (expression bool < (var_ref k) (constant float (0.0)))
-          ((return (constant vec3 (0.0 0.0))))
+          ((return (constant vec3 (0.0 0.0 0.0))))
          ((return (expression vec3 -
                     (expression vec3 * (var_ref eta) (var_ref i))
                     (expression vec3 *
@@ -89,7 +89,7 @@
                        (expression float dot (var_ref n) (var_ref i))
                        (expression float dot (var_ref n) (var_ref i))))))))
       (if (expression bool < (var_ref k) (constant float (0.0)))
-          ((return (constant vec4 (0.0 0.0))))
+          ((return (constant vec4 (0.0 0.0 0.0 0.0))))
          ((return (expression vec4 -
                     (expression vec4 * (var_ref eta) (var_ref i))
                     (expression vec4 *