]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/generate.cpp
Clear the stage map at the beginning if a resolving pass
[libs/gl.git] / source / glsl / generate.cpp
index ff863824055ae76ef51cc9fdd08521b2b3548aa2..fe053ade254c3105d80771a72d575b264583946a 100644 (file)
@@ -99,15 +99,9 @@ void ConstantSpecializer::visit(VariableDeclaration &var)
                {
                        RefPtr<Literal> literal = new Literal;
                        if(var.type=="bool")
-                       {
                                literal->token = (i->second ? "true" : "false");
-                               literal->value = static_cast<bool>(i->second);
-                       }
                        else if(var.type=="int")
-                       {
                                literal->token = lexical_cast<string>(i->second);
-                               literal->value = i->second;
-                       }
                        var.init_expression = literal;
                }
        }
@@ -132,6 +126,8 @@ VariableResolver::VariableResolver():
 void VariableResolver::apply(Stage &s)
 {
        stage = &s;
+       s.types.clear();
+       s.interface_blocks.clear();
        Stage *builtin_stage = get_builtins(s.type);
        builtins = (builtin_stage ? &builtin_stage->content : 0);
        s.content.visit(*this);
@@ -312,6 +308,7 @@ void VariableResolver::visit(InterfaceBlock &iface)
 void FunctionResolver::apply(Stage &s)
 {
        stage = &s;
+       s.functions.clear();
        s.content.visit(*this);
 }