]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/output.cpp
Always use member access for interface blocks, even anonymous ones
[libs/gl.git] / source / glsl / output.cpp
index 1d82cae6a9ed95f20debbcf500a6a242c929c54a..38adb5bd6b799f54f165299657b90f09830293de 100644 (file)
@@ -14,7 +14,8 @@ Formatter::Formatter():
        source_line(1),
        indent(0),
        parameter_list(false),
-       omit_builtin(false)
+       omit_builtin(false),
+       r_empty_name(false)
 { }
 
 const string &Formatter::apply(Stage &s)
@@ -154,17 +155,22 @@ void Formatter::visit(Literal &literal)
 void Formatter::visit(VariableReference &var)
 {
        append(var.name);
+       r_empty_name = false;
 }
 
 void Formatter::visit(InterfaceBlockReference &iface)
 {
-       append(iface.name);
+       r_empty_name = iface.declaration->instance_name.empty();
+       if(!r_empty_name)
+               append(iface.declaration->instance_name);
 }
 
 void Formatter::visit(MemberAccess &memacc)
 {
        visit_expression(*memacc.left, memacc.oper, false);
-       append(format(".%s", memacc.member));
+       if(!r_empty_name)
+               append('.');
+       append(memacc.member);
 }
 
 void Formatter::visit(Swizzle &swizzle)