+ add_type<OccludedScene>().base<Scene>().suffix(".scene")
+ .creator([this](const string &n) -> OccludedScene * { create_generic<Scene>(n); return 0; });
+ add_type<OrderedScene>().base<Scene>().suffix(".scene")
+ .creator([this](const string &n) -> OrderedScene * { create_generic<Scene>(n); return 0; });
+ add_type<PbrMaterial>().base<Material>().suffix(".mat")
+ .creator([this](const string &n) -> PbrMaterial * { create_generic<Material>(n); return 0; })
+ .notify(&set_debug_name<Material>);
+ add_type<PointLight>().base<Light>().suffix(".light")
+ .creator([this](const string &n) -> PointLight * { create_generic<Light>(n); return 0; });