Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-10-08 18:47:47 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-10-08 18:58:45 +0300
commit008fb3eed9b8c318a8b50dc5a7e84e9cfb030656 (patch)
tree31dfdc18d8cd5e3f8e6e1a0af7163ee2dcb0e6ce /source/blender/draw
parentb304514bd5d40b2734d44846993d950f0946bb03 (diff)
EEVEE: Fix Crash with some geometry type
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/engines/eevee/eevee_material.cc4
-rw-r--r--source/blender/draw/engines/eevee/eevee_mesh.cc4
2 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_material.cc b/source/blender/draw/engines/eevee/eevee_material.cc
index fe6fb9a04de..22c3b11b18a 100644
--- a/source/blender/draw/engines/eevee/eevee_material.cc
+++ b/source/blender/draw/engines/eevee/eevee_material.cc
@@ -306,7 +306,9 @@ MaterialArray &MaterialModule::material_array_get(Object *ob)
material_array_.materials.clear();
material_array_.gpu_materials.clear();
- for (auto i : IndexRange(max_ii(1, ob->totcol))) {
+ const int materials_len = DRW_cache_object_material_count_get(ob);
+
+ for (auto i : IndexRange(materials_len)) {
::Material *blender_mat = material_from_slot(ob, i);
Material &mat = material_sync(blender_mat, to_material_geometry(ob));
material_array_.materials.append(&mat);
diff --git a/source/blender/draw/engines/eevee/eevee_mesh.cc b/source/blender/draw/engines/eevee/eevee_mesh.cc
index 24046ca2405..134a2828e70 100644
--- a/source/blender/draw/engines/eevee/eevee_mesh.cc
+++ b/source/blender/draw/engines/eevee/eevee_mesh.cc
@@ -31,6 +31,10 @@ void Instance::mesh_sync(Object *ob, ObjectHandle &ob_handle)
GPUBatch **mat_geom = DRW_cache_object_surface_material_get(
ob, material_array.gpu_materials.data(), material_array.gpu_materials.size());
+ if (mat_geom == nullptr) {
+ return;
+ }
+
for (auto i : material_array.gpu_materials.index_range()) {
GPUBatch *geom = mat_geom[i];
if (geom == nullptr) {