+ if(!obj.shprog || obj.shprog_from_material)
+ throw runtime_error("Shader is required for uniforms");
+ if(!obj.shdata)
+ obj.shdata = new ProgramData(obj.shprog.get());
+ else if(obj.shdata.refcount()>1)
+ obj.shdata = new ProgramData(*obj.shdata);