X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fcompiler.cpp;h=b4b63e27637c32231341a2631383c0b972be8019;hb=6cb4cc995865935d22b276801c218d2dcf49cebd;hp=9c1238c029eec1155957b105748ae078767a4437;hpb=50a79aee4c53c4198bae38c7ff447133a043aacc;p=libs%2Fgl.git diff --git a/source/glsl/compiler.cpp b/source/glsl/compiler.cpp index 9c1238c0..b4b63e27 100644 --- a/source/glsl/compiler.cpp +++ b/source/glsl/compiler.cpp @@ -108,7 +108,7 @@ string Compiler::get_combined_glsl() const for(list::iterator i=module->stages.begin(); i!=module->stages.end(); ++i) { glsl += format("#pragma MSP stage(%s)\n", Stage::get_stage_name(i->type)); - glsl += Formatter().apply(*i, MODULE); + glsl += Formatter().apply(*i); glsl += '\n'; } @@ -128,7 +128,7 @@ string Compiler::get_stage_glsl(Stage::Type stage_type) const { for(list::iterator i=module->stages.begin(); i!=module->stages.end(); ++i) if(i->type==stage_type) - return Formatter().apply(*i, PROGRAM); + return Formatter().apply(*i); throw key_error(Stage::get_stage_name(stage_type)); } @@ -214,7 +214,6 @@ void Compiler::append_stage(Stage &stage) target->required_features.glsl_version = stage.required_features.glsl_version; for(NodeList::iterator i=stage.content.body.begin(); i!=stage.content.body.end(); ++i) target->content.body.push_back(*i); - DeclarationCombiner().apply(*target); } void Compiler::import(DataFile::Collection *resources, const string &name) @@ -282,7 +281,7 @@ void Compiler::resolve(Stage &stage, unsigned flags) else if(resolve(stage, flags, RESOLVE_FUNCTIONS)) flags |= RESOLVE_EXPRESSIONS; else if(resolve(stage, flags, RESOLVE_EXPRESSIONS)) - flags |= RESOLVE_VARIABLES; + flags |= RESOLVE_VARIABLES|RESOLVE_FUNCTIONS; } } @@ -324,7 +323,7 @@ Compiler::OptimizeResult Compiler::optimize(Stage &stage) bool any_inlined = false; if(FunctionInliner().apply(stage)) { - resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_EXPRESSIONS); + resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS); any_inlined = true; } if(ExpressionInliner().apply(stage))