diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-04-22 14:54:35 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-04-22 14:59:14 +0300 |
commit | bc83fc9c04bef0e151518e8da299243999363799 (patch) | |
tree | 9528b342b647cf14f19f538b5c207bbabf17fb59 /source/blender/draw/engines | |
parent | b2cc2dda9c37775b04b6a9b4e07a25a51c74c693 (diff) |
Fix T75981: crash in sculpt mode with mesh that used to have multiple materials
The material indices in a mesh can exceed the number of available materials
slots in the object or mesh, sculpt drawing was not taking that into account.
Diffstat (limited to 'source/blender/draw/engines')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_materials.c | 8 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_engine.c | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c index 10ad8f3f1be..dca9f2901ab 100644 --- a/source/blender/draw/engines/eevee/eevee_materials.c +++ b/source/blender/draw/engines/eevee/eevee_materials.c @@ -2089,16 +2089,16 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, for (int i = 0; i < materials_len; i++) { sculpt_shgrps_array[i] = shgrps_array[i].shading_grp; } - DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, ob, use_vcol); + DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, materials_len, ob, use_vcol); for (int i = 0; i < materials_len; i++) { sculpt_shgrps_array[i] = shgrps_array[i].depth_grp; } - DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, ob, use_vcol); + DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, materials_len, ob, use_vcol); for (int i = 0; i < materials_len; i++) { sculpt_shgrps_array[i] = shgrps_array[i].depth_clip_grp; } - DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, ob, use_vcol); + DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, materials_len, ob, use_vcol); for (int renderpass_index = 0; renderpass_index < stl->g_data->render_passes_material_count; @@ -2106,7 +2106,7 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, for (int i = 0; i < materials_len; i++) { sculpt_shgrps_array[i] = shgrps_array[i].material_accum_grp[renderpass_index]; } - DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, ob, use_vcol); + DRW_shgroup_call_sculpt_with_materials(sculpt_shgrps_array, materials_len, ob, use_vcol); } /* TODO(fclem): Support shadows in sculpt mode. */ diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c index c6c594dc04d..f3554f32205 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.c +++ b/source/blender/draw/engines/workbench/workbench_engine.c @@ -126,7 +126,7 @@ static void workbench_cache_sculpt_populate(WORKBENCH_PrivateData *wpd, for (int i = 0; i < materials_len; i++) { shgrps[i] = workbench_material_setup(wpd, ob, i + 1, color_type, NULL); } - DRW_shgroup_call_sculpt_with_materials(shgrps, ob, false); + DRW_shgroup_call_sculpt_with_materials(shgrps, materials_len, ob, false); } } |