]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/compiler.cpp
Clear load ID when assigning to a component
[libs/gl.git] / source / glsl / compiler.cpp
index f1ab6d088e4e1bdedd5d4188685ef2f6a55f02e0..97c234f79285f3c253e94d76dd36b937d13e55b4 100644 (file)
@@ -93,6 +93,11 @@ void Compiler::compile(Mode mode)
                for(Stage &s: module->stages)
                        ConstantSpecializer().apply(s, spec_values);
        }
+       if(mode==PROGRAM)
+       {
+               for(Stage &s: module->stages)
+                       DepthRangeConverter().apply(s, features);
+       }
        for(auto i=module->stages.begin(); i!=module->stages.end(); )
        {
                OptimizeResult result = optimize(*i);
@@ -102,6 +107,19 @@ void Compiler::compile(Mode mode)
                        ++i;
        }
 
+       Stage *prev_stage = 0;
+       for(auto i=module->stages.begin(); i!=module->stages.end(); )
+       {
+               if(i->functions.empty())
+                       i = module->stages.erase(i);
+               else
+               {
+                       i->previous = prev_stage;
+                       prev_stage = &*i;
+                       ++i;
+               }
+       }
+
        for(Stage &s: module->stages)
        {
                StructuralFeatureConverter().apply(s, features);
@@ -300,6 +318,7 @@ void Compiler::generate(Stage &stage)
        InterfaceGenerator().apply(stage);
        resolve(stage, RESOLVE_BLOCKS|RESOLVE_TYPES|RESOLVE_VARIABLES);
 
+       LayoutDefaulter().apply(stage);
        ArraySizer().apply(stage);
        resolve(stage, RESOLVE_EXPRESSIONS);
 }