+ unsigned int use_mask = 0;
+ if(obj->mtl.stdtex[MTL_TEX_DIFFUSE]) {
+ use_mask |= USE_TEXMAP;
+ }
+ if(obj->mtl.stdtex[MTL_TEX_REFLECT] && obj->mtl.flat_mirror) {
+ use_mask |= USE_MIRROR;
+ }
+
+ unsigned int sdr = shaders[use_mask];
+ if(use_mask & USE_MIRROR) {
+ float sx = 1.0f / rtmirror->texture()->get_width();
+ float sy = 1.0f / rtmirror->texture()->get_height();
+ set_uniform_float2(sdr, "mirtex_offs", -cur_vport[0], -cur_vport[1]);
+ set_uniform_float2(sdr, "mirtex_scale", sx, sy);
+ set_uniform_float(sdr, "reflectivity", obj->mtl.reflect);
+ }
+ bind_program(sdr);
+