From 164f6d0591c298542feb930df2be76f39828d23b Mon Sep 17 00:00:00 2001 From: Miguel Pozo Date: Tue, 7 Jan 2025 16:57:06 +0100 Subject: [PATCH] Fix #132667, #132665: Overlay-Next: Sculpt selection Use draw_expand, like regular meshes. --- .../draw/engines/overlay/overlay_next_prepass.hh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/blender/draw/engines/overlay/overlay_next_prepass.hh b/source/blender/draw/engines/overlay/overlay_next_prepass.hh index 21f167bffa4..583920828f7 100644 --- a/source/blender/draw/engines/overlay/overlay_next_prepass.hh +++ b/source/blender/draw/engines/overlay/overlay_next_prepass.hh @@ -169,10 +169,19 @@ class Prepass : Overlay { void sculpt_sync(Manager &manager, const ObjectRef &ob_ref, Resources &res) { ResourceHandle handle = manager.resource_handle_for_sculpt(ob_ref); - select::ID select_id = res.select_id(ob_ref); for (SculptBatch &batch : sculpt_batches_get(ob_ref.object, SCULPT_BATCH_DEFAULT)) { - mesh_ps_->draw(batch.batch, handle, select_id.get()); + select::ID select_id = use_material_slot_selection_ ? + res.select_id(ob_ref, (batch.material_slot + 1) << 16) : + res.select_id(ob_ref); + + if (res.is_selection()) { + /* Conservative shader needs expanded draw-call. */ + mesh_ps_->draw_expand(batch.batch, GPU_PRIM_TRIS, 1, 1, handle, select_id.get()); + } + else { + mesh_ps_->draw(batch.batch, handle, select_id.get()); + } } }