X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foutput.cpp;h=44acd634d388e1d3f9c7ab86081e43e4368f01ee;hb=30465dd3b9f55ec42c4b19c3c2077eede7237a26;hp=c1da9feccb2bd3f8e6c835bf91d57a21ad7b9913;hpb=ffdb126a55467245da08a9e6f5669f86e1899bb0;p=libs%2Fgl.git diff --git a/source/glsl/output.cpp b/source/glsl/output.cpp index c1da9fec..44acd634 100644 --- a/source/glsl/output.cpp +++ b/source/glsl/output.cpp @@ -44,7 +44,7 @@ const string &Formatter::apply(Stage &s, Compiler::Mode m) append("#extension ext_texture_array: require\n"); formatted += '\n'; - visit(s.content); + s.content.visit(*this); return formatted; } @@ -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); @@ -255,6 +260,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(';'); } @@ -341,6 +353,18 @@ void Formatter::visit(Iteration &iter) } } +void Formatter::visit(Passthrough &pass) +{ + append("passthrough"); + if(pass.subscript) + { + append('['); + pass.subscript->visit(*this); + append(']'); + } + append(';'); +} + void Formatter::visit(Return &ret) { append("return");