From c255178cc5fbf6d2bd8ac48ec077b9d6be6dcffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cle=CC=81ment=20Foucault?= Date: Wed, 4 Dec 2024 19:09:41 +0100 Subject: [PATCH] Selection: Remove usage of Depth picking for viewport selection The option is already disregarded by the new viewport selection code. This only remove the usage of the flag and assume it is always off. The UI and DNA clearing needs to be done in another commit. --- .../editors/space_view3d/view3d_select.cc | 10 +++--- .../editors/space_view3d/view3d_view.cc | 33 +++++-------------- source/blender/makesdna/DNA_userdef_types.h | 2 +- 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_select.cc b/source/blender/editors/space_view3d/view3d_select.cc index b8ed7d3abc1..ec1c1247d1a 100644 --- a/source/blender/editors/space_view3d/view3d_select.cc +++ b/source/blender/editors/space_view3d/view3d_select.cc @@ -2072,7 +2072,7 @@ static int selectbuffer_ret_hits_5(blender::MutableSpan hit_res * Populate a select buffer with objects and bones, if there are any. * Checks three selection levels and compare. * - * \param do_nearest_xray_if_supported: When set, read in hits that don't stop + * \param do_nearest_xray: When set, read in hits that don't stop * at the nearest surface. The hits must still be ordered by depth. * Needed so we can step to the next, non-active object when it's already selected, see: #76445. */ @@ -2081,7 +2081,7 @@ static int mixed_bones_object_selectbuffer(const ViewContext *vc, const int mval[2], eV3DSelectObjectFilter select_filter, bool do_nearest, - bool do_nearest_xray_if_supported, + bool do_nearest_xray, const bool do_material_slot_selection) { rcti rect; @@ -2091,10 +2091,8 @@ static int mixed_bones_object_selectbuffer(const ViewContext *vc, eV3DSelectMode select_mode = (do_nearest ? VIEW3D_SELECT_PICK_NEAREST : VIEW3D_SELECT_PICK_ALL); int hits = 0; - if (do_nearest_xray_if_supported) { - if ((U.gpu_flag & USER_GPU_FLAG_NO_DEPT_PICK) == 0) { - select_mode = VIEW3D_SELECT_PICK_ALL; - } + if (do_nearest_xray) { + select_mode = VIEW3D_SELECT_PICK_ALL; } /* we _must_ end cache before return, use 'goto finally' */ diff --git a/source/blender/editors/space_view3d/view3d_view.cc b/source/blender/editors/space_view3d/view3d_view.cc index a3d0818e3b5..589e71c16d3 100644 --- a/source/blender/editors/space_view3d/view3d_view.cc +++ b/source/blender/editors/space_view3d/view3d_view.cc @@ -498,10 +498,6 @@ static bool drw_select_loop_pass(eDRWSelectStage stage, void *user_data) /* quirk of GPU_select_end, only take hits value from first call. */ data->hits = hits; } - if (data->gpu_select_mode == GPU_SELECT_NEAREST_FIRST_PASS) { - data->gpu_select_mode = GPU_SELECT_NEAREST_SECOND_PASS; - continue_pass = (hits > 0); - } data->pass += 1; } else { @@ -558,13 +554,10 @@ int view3d_opengl_select_ex(const ViewContext *vc, BKE_view_layer_synced_ensure(scene, vc->view_layer); const bool use_obedit_skip = (BKE_view_layer_edit_object_get(vc->view_layer) != nullptr) && (vc->obedit == nullptr); - const bool is_pick_select = (U.gpu_flag & USER_GPU_FLAG_NO_DEPT_PICK) == 0; - const bool do_passes = ((is_pick_select == false) && - (select_mode == VIEW3D_SELECT_PICK_NEAREST)); - const bool use_nearest = (is_pick_select && select_mode == VIEW3D_SELECT_PICK_NEAREST); + const bool use_nearest = select_mode == VIEW3D_SELECT_PICK_NEAREST; bool draw_surface = true; - eGPUSelectMode gpu_select_mode; + eGPUSelectMode gpu_select_mode = GPU_SELECT_INVALID; /* case not a box select */ if (input->xmin == input->xmax) { @@ -576,24 +569,14 @@ int view3d_opengl_select_ex(const ViewContext *vc, rect = *input; } - if (is_pick_select) { - if (select_mode == VIEW3D_SELECT_PICK_NEAREST) { - gpu_select_mode = GPU_SELECT_PICK_NEAREST; - } - else if (select_mode == VIEW3D_SELECT_PICK_ALL) { - gpu_select_mode = GPU_SELECT_PICK_ALL; - } - else { - gpu_select_mode = GPU_SELECT_ALL; - } + if (select_mode == VIEW3D_SELECT_PICK_NEAREST) { + gpu_select_mode = GPU_SELECT_PICK_NEAREST; + } + else if (select_mode == VIEW3D_SELECT_PICK_ALL) { + gpu_select_mode = GPU_SELECT_PICK_ALL; } else { - if (do_passes) { - gpu_select_mode = GPU_SELECT_NEAREST_FIRST_PASS; - } - else { - gpu_select_mode = GPU_SELECT_ALL; - } + gpu_select_mode = GPU_SELECT_ALL; } /* Important to use 'vc->obact', not 'BKE_view_layer_active_object_get(vc->view_layer)' below, diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index bff8caf5aba..84bb21da51a 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -1322,7 +1322,7 @@ typedef enum eUserpref_UI_Flag2 { /** #UserDef.gpu_flag */ typedef enum eUserpref_GPU_Flag { - USER_GPU_FLAG_NO_DEPT_PICK = (1 << 0), + USER_GPU_FLAG_NO_DEPT_PICK = (1 << 0), /* Unused. To be removed. */ USER_GPU_FLAG_NO_EDIT_MODE_SMOOTH_WIRE = (1 << 1), USER_GPU_FLAG_OVERLAY_SMOOTH_WIRE = (1 << 2), USER_GPU_FLAG_SUBDIVISION_EVALUATION = (1 << 3),