X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foutput.cpp;h=81f335735e80eb433fd746ae85216dc59b309e83;hb=9ec831710f64a62ad5f2e896a55ae82a3519f29e;hp=ef7910f17bd2de93e8de4cc742ff68ee90c1e2b4;hpb=5c33b56c3b97ca0381ac216a603c7553f4bea499;p=libs%2Fgl.git diff --git a/source/glsl/output.cpp b/source/glsl/output.cpp index ef7910f1..81f33573 100644 --- a/source/glsl/output.cpp +++ b/source/glsl/output.cpp @@ -99,6 +99,11 @@ void Formatter::visit(VariableReference &var) append(var.name); } +void Formatter::visit(InterfaceBlockReference &iface) +{ + append(iface.name); +} + void Formatter::visit(MemberAccess &memacc) { memacc.left->visit(*this); @@ -156,10 +161,14 @@ void Formatter::visit(Block &block) SetForScope set(indent, indent+(indent>0 || use_braces)); string spaces(indent*2, ' '); + bool first = true; for(NodeList::iterator i=block.body.begin(); i!=block.body.end(); ++i) { - if(i!=block.body.begin()) + if((*i)->source==BUILTIN_SOURCE) + continue; + if(!first) append('\n'); + first = false; set_source((*i)->source, (*i)->line); append(spaces); (*i)->visit(*this); @@ -255,6 +264,13 @@ void Formatter::visit(InterfaceBlock &iface) SetForScope set(block_interface, iface.interface); append(format("%s %s\n", iface.interface, iface.name)); iface.members.visit(*this); + if(!iface.instance_name.empty()) + { + append(' '); + append(iface.instance_name); + if(iface.array) + append("[]"); + } append(';'); }