- map<string, string> replace_map;
- for(list<ShaderVariable *>::const_iterator i=referenced_vars.begin(); i!=referenced_vars.end(); ++i)
- if((*i)->variable)
+ if(variable->scope==UNIFORM)
+ {
+ const char *bracket = strrchr(variable->type, '[');
+ if(bracket)
+ return format("%s %s%s", string(variable->type, bracket), resolved_name, bracket);
+ }
+
+ if(interface)
+ return format("%s %c_%s", variable->type, interface, resolved_name);
+ else
+ return format("%s %s", variable->type, resolved_name);
+}
+
+string ProgramBuilder::ShaderVariable::create_replacement(VariableScope from_scope) const
+{
+ string replacement = resolved_name;
+ if(variable)
+ {
+ if(from_scope==FRAGMENT && (variable->scope==VERTEX || variable->scope==ATTRIBUTE))
+ replacement = "v_"+replacement;
+ else if(inlined)