diff --git a/source/blender/draw/engines/gooengine/eevee_cryptomatte.cc b/source/blender/draw/engines/gooengine/eevee_cryptomatte.cc index 264c1565e2e..3bf5cc9b7ec 100644 --- a/source/blender/draw/engines/gooengine/eevee_cryptomatte.cc +++ b/source/blender/draw/engines/gooengine/eevee_cryptomatte.cc @@ -294,7 +294,7 @@ void EEVEE_cryptomatte_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *s view_layer); if ((cryptomatte_layers & VIEW_LAYER_CRYPTOMATTE_MATERIAL) != 0) { - const int materials_len = DRW_cache_object_material_count_get(ob); + const int materials_len = BKE_object_material_used_with_fallback_eval(*ob); GPUMaterial **gpumat_array = BLI_array_alloca(gpumat_array, materials_len); memset(gpumat_array, 0, sizeof(*gpumat_array) * materials_len); blender::gpu::Batch **geoms = GOO_cache_object_surface_material_get( diff --git a/source/blender/draw/engines/gooengine/eevee_materials.cc b/source/blender/draw/engines/gooengine/eevee_materials.cc index e15bd861759..05ac4c73cb9 100644 --- a/source/blender/draw/engines/gooengine/eevee_materials.cc +++ b/source/blender/draw/engines/gooengine/eevee_materials.cc @@ -848,7 +848,7 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, /* First get materials for this mesh. */ if (ELEM(ob->type, OB_MESH, OB_SURF)) { - const int materials_len = DRW_cache_object_material_count_get(ob); + const int materials_len = BKE_object_material_used_with_fallback_eval(*ob); EeveeMaterialCache *matcache = BLI_array_alloca(matcache, materials_len); for (int i = 0; i < materials_len; i++) { diff --git a/source/blender/draw/intern/draw_cache.cc b/source/blender/draw/intern/draw_cache.cc index 8990d0fe18c..58696da3566 100644 --- a/source/blender/draw/intern/draw_cache.cc +++ b/source/blender/draw/intern/draw_cache.cc @@ -934,39 +934,6 @@ blender::gpu::VertBuf *DRW_cache_object_pos_vertbuf_get(Object *ob) } } -int DRW_cache_object_material_count_get(const Object *ob) -{ - using namespace blender::draw; - short type = ob->type; - - Mesh *mesh = BKE_object_get_evaluated_mesh_no_subsurf_unchecked(ob); - if (mesh != nullptr && type != OB_POINTCLOUD) { - /* Some object types can have one data type in ob->data, but will be rendered as mesh. - * For point clouds this never happens. Ideally this check would happen at another level - * and we would just have to care about ob->data here. */ - type = OB_MESH; - } - - switch (type) { - case OB_MESH: - return DRW_mesh_material_count_get( - *ob, *static_cast((mesh != nullptr) ? mesh : ob->data)); - case OB_CURVES_LEGACY: - case OB_SURF: - case OB_FONT: - return DRW_curve_material_count_get(static_cast(ob->data)); - case OB_CURVES: - return DRW_curves_material_count_get(static_cast(ob->data)); - case OB_POINTCLOUD: - return DRW_pointcloud_material_count_get(static_cast(ob->data)); - case OB_VOLUME: - return DRW_volume_material_count_get(static_cast(ob->data)); - default: - BLI_assert(0); - return 0; - } -} - Span DRW_cache_object_surface_material_get( Object *ob, const Span materials) { diff --git a/source/blender/draw/intern/draw_cache.hh b/source/blender/draw/intern/draw_cache.hh index e9609b43da5..844ce0a3062 100644 --- a/source/blender/draw/intern/draw_cache.hh +++ b/source/blender/draw/intern/draw_cache.hh @@ -75,7 +75,6 @@ blender::gpu::Batch **GOO_cache_object_surface_material_get(Object *ob, GPUMaterial **gpumat_array, uint gpumat_array_len); blender::gpu::Batch *DRW_cache_object_face_wireframe_get(const Scene *scene, Object *ob); -int DRW_cache_object_material_count_get(const Object *ob); /** * Returns the vertbuf used by shaded surface batch.