added vec3 constructor code
authorBrian <brian@yutani.localnet.net>
Mon, 15 Jan 2007 23:34:33 +0000 (16:34 -0700)
committerBrian <brian@yutani.localnet.net>
Mon, 15 Jan 2007 23:34:33 +0000 (16:34 -0700)
src/mesa/shader/slang/slang_simplify.c

index 94e6e1e..dfae746 100644 (file)
@@ -155,6 +155,7 @@ slang_simplify(slang_operation *oper,
       }
    }
    else if (n == 4 && isFloat[0] && isFloat[1] && isFloat[2] && isFloat[3]) {
+      /* vec4(flt, flt, flt, flt) constructor */
       if (oper->type == slang_oper_call) {
          if (strcmp((char *) oper->a_id, "vec4") == 0) {
             oper->literal[0] = oper->children[0].literal[0];
@@ -166,5 +167,18 @@ slang_simplify(slang_operation *oper,
          }
       }
    }
+   else if (n == 3 && isFloat[0] && isFloat[1] && isFloat[2]) {
+      /* vec3(flt, flt, flt) constructor */
+      if (oper->type == slang_oper_call) {
+         if (strcmp((char *) oper->a_id, "vec3") == 0) {
+            oper->literal[0] = oper->children[0].literal[0];
+            oper->literal[1] = oper->children[1].literal[0];
+            oper->literal[2] = oper->children[2].literal[0];
+            oper->literal[3] = 0.0;
+            slang_operation_destruct(oper);
+            oper->type = slang_oper_literal_float;
+         }
+      }
+   }
 }