+private:
+ void finalize_material(DataFile::Collection *);
+ void maybe_create_material_shader(DataFile::Collection *);
+ void ensure_private_shader_data();
+
+public:
+ void set_shader_program(const Program *, const ProgramData *);
+ const Program *get_shader_program() const { return shprog.get(); }
+ const ProgramData *get_shader_data() const { return shdata.get(); }
+ const std::string &get_slotted_uniform_name(const std::string &) const;