diff --git a/source/blender/draw/engines/eevee/eevee_material.cc b/source/blender/draw/engines/eevee/eevee_material.cc index 2ac37ab8476..cfd37f19838 100644 --- a/source/blender/draw/engines/eevee/eevee_material.cc +++ b/source/blender/draw/engines/eevee/eevee_material.cc @@ -150,9 +150,8 @@ MaterialModule::~MaterialModule() delete mat; mat = nullptr; } - for (DRWShadingGroup **shgroup : shader_map_.values()) { - delete shgroup; - shgroup = nullptr; + for (DRWShadingGroup *grp : shader_map_.values()) { + delete grp; } BKE_id_free(nullptr, glossy_mat_); BKE_id_free(nullptr, diffuse_mat_); @@ -166,9 +165,7 @@ void MaterialModule::begin_sync(void) for (Material *mat : material_map_.values()) { mat->init = false; } - for (DRWShadingGroup **shgroup : shader_map_.values()) { - *shgroup = nullptr; - } + shader_map_.clear(); } MaterialPass MaterialModule::material_pass_get(::Material *blender_mat, @@ -219,9 +216,7 @@ MaterialPass MaterialModule::material_pass_get(::Material *blender_mat, else { ShaderKey shader_key(matpass.gpumat, geometry_type, pipeline_type); - /* TODO(fclem) allocate in blocks to avoid memory fragmentation. */ - auto add_cb = [&]() { return new DRWShadingGroup *(); }; - DRWShadingGroup *&grp = *shader_map_.lookup_or_add_cb(shader_key, add_cb); + DRWShadingGroup *&grp = shader_map_.lookup_or_add(shader_key, nullptr); if (grp == nullptr) { /* First time encountering this shader. Create a shading group. */ @@ -318,4 +313,4 @@ Material &MaterialModule::material_get(Object *ob, int mat_nr, eMaterialGeometry /** \} */ -} // namespace blender::eevee \ No newline at end of file +} // namespace blender::eevee diff --git a/source/blender/draw/engines/eevee/eevee_material.hh b/source/blender/draw/engines/eevee/eevee_material.hh index 2e2c79d0083..100b47ccf4b 100644 --- a/source/blender/draw/engines/eevee/eevee_material.hh +++ b/source/blender/draw/engines/eevee/eevee_material.hh @@ -76,7 +76,8 @@ class MaterialModule { Instance &inst_; Map material_map_; - Map shader_map_; + + Map shader_map_; MaterialArray material_array_; @@ -106,4 +107,4 @@ class MaterialModule { /** \} */ -} // namespace blender::eevee \ No newline at end of file +} // namespace blender::eevee