- technique = *tech;
- technique.replace_texture("diffuse_map", font.get_texture());
- object.set_technique(&technique);
+ const char *tex_slot = ts.c_str();
+ if(!*tex_slot && tech->has_pass(Tag()))
+ if(const Program *shprog = tech->get_pass(Tag()).get_shader_program())
+ {
+ if(shprog->get_uniform_location("font_tex")>=0)
+ tex_slot = "font_tex";
+ else if(shprog->get_uniform_location("color_tex")>=0)
+ tex_slot = "color_tex";
+ else if(shprog->get_uniform_location("diffuse_map")>=0)
+ tex_slot = "diffuse_map";
+ else if(shprog->get_uniform_location("base_color_map")>=0)
+ tex_slot = "base_color_map";
+ }
+
+ if(tex_slot)
+ {
+ technique = *tech;
+ technique.replace_texture(tex_slot, font.get_texture());
+ object.set_technique(&technique);
+ }
+ else
+ object.set_technique(tech);