X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Ffinalize.cpp;h=f005d87dcbf82749e33eb1ba8c55fdbece642b76;hp=27c352098e0c0b0206616336f431e2c84de1942d;hb=d03f6d46d0646c53ec3dcd00ddfd6c718ad18720;hpb=30904c6b6e7d885d9ade818328a2137c204e7efe diff --git a/source/glsl/finalize.cpp b/source/glsl/finalize.cpp index 27c35209..f005d87d 100644 --- a/source/glsl/finalize.cpp +++ b/source/glsl/finalize.cpp @@ -336,6 +336,15 @@ void LegacyConverter::visit(Block &block) } } +void LegacyConverter::visit(RefPtr &expr) +{ + r_replaced_reference = 0; + expr->visit(*this); + if(r_replaced_reference) + expr = r_replaced_reference; + r_replaced_reference = 0; +} + bool LegacyConverter::check_version(const Version &feature_version) const { if(features.glsl_versionname = memacc.member; + r_replaced_reference = var; + } +} + void LegacyConverter::visit(Assignment &assign) { TraversingVisitor::visit(assign); @@ -635,6 +661,9 @@ void LegacyConverter::visit(InterfaceBlock &iface) unsupported("ARB_uniform_buffer_object required for interface block instances"); else if(iface.struct_declaration) { + for(const RefPtr &s: iface.struct_declaration->members.body) + if(VariableDeclaration *var = dynamic_cast(s.get())) + var->interface = iface.interface; stage->content.body.splice(uniform_insert_point, iface.struct_declaration->members.body); nodes_to_remove.insert(&iface); nodes_to_remove.insert(iface.struct_declaration);