diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-10-08 18:47:47 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-10-08 18:58:45 +0300 |
commit | 008fb3eed9b8c318a8b50dc5a7e84e9cfb030656 (patch) | |
tree | 31dfdc18d8cd5e3f8e6e1a0af7163ee2dcb0e6ce /source/blender/draw | |
parent | b304514bd5d40b2734d44846993d950f0946bb03 (diff) |
EEVEE: Fix Crash with some geometry type
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_material.cc | 4 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_mesh.cc | 4 |
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) { |