diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_userpref.py | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 3 | ||||
-rw-r--r-- | source/blender/gpu/GPU_select.h | 1 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_select.c | 44 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 10 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 13 | ||||
-rw-r--r-- | source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c | 8 |
7 files changed, 8 insertions, 72 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 5435d0a90fd..427bdd78ea5 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -667,7 +667,6 @@ class USERPREF_PT_system_opengl_selection(PreferencePanel): flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False) - flow.prop(system, "select_method", text="Selection Method") flow.prop(system, "use_select_pick_depth") diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 6945ba27109..9abc0d4f553 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -949,8 +949,7 @@ int view3d_opengl_select( const bool is_pick_select = (U.gpu_select_pick_deph != 0); const bool do_passes = ( (is_pick_select == false) && - (select_mode == VIEW3D_SELECT_PICK_NEAREST) && - GPU_select_query_check_active()); + (select_mode == VIEW3D_SELECT_PICK_NEAREST)); const bool use_nearest = (is_pick_select && select_mode == VIEW3D_SELECT_PICK_NEAREST); bool draw_surface = true; diff --git a/source/blender/gpu/GPU_select.h b/source/blender/gpu/GPU_select.h index f1342a1f6b8..c6e6b0658b9 100644 --- a/source/blender/gpu/GPU_select.h +++ b/source/blender/gpu/GPU_select.h @@ -49,7 +49,6 @@ void GPU_select_begin(unsigned int *buffer, unsigned int bufsize, const struct r bool GPU_select_load_id(unsigned int id); void GPU_select_finalize(void); unsigned int GPU_select_end(void); -bool GPU_select_query_check_active(void); /* cache selection region */ bool GPU_select_is_cached(void); diff --git a/source/blender/gpu/intern/gpu_select.c b/source/blender/gpu/intern/gpu_select.c index 1c0e7ed4c1c..1eae90ff2a5 100644 --- a/source/blender/gpu/intern/gpu_select.c +++ b/source/blender/gpu/intern/gpu_select.c @@ -26,8 +26,8 @@ /** \file blender/gpu/intern/gpu_select.c * \ingroup gpu * - * Interface for accessing gpu-related methods for selection. The semantics will be - * similar to glRenderMode(GL_SELECT) since the goal is to maintain compatibility. + * Interface for accessing gpu-related methods for selection. The semantics are + * similar to glRenderMode(GL_SELECT) from older OpenGL versions. */ #include <stdlib.h> @@ -45,21 +45,17 @@ /* Internal algorithm used */ enum { - /** GL_SELECT, legacy OpenGL selection */ - ALGO_GL_LEGACY = 1, /** glBegin/EndQuery(GL_SAMPLES_PASSED... ), `gpu_select_query.c` * Only sets 4th component (ID) correctly. */ - ALGO_GL_QUERY = 2, + ALGO_GL_QUERY = 1, /** Read depth buffer for every drawing pass and extract depths, `gpu_select_pick.c` * Only sets 4th component (ID) correctly. */ - ALGO_GL_PICK = 3, + ALGO_GL_PICK = 2, }; typedef struct GPUSelectState { /* To ignore selection id calls when not initialized */ bool select_is_active; - /* flag to cache user preference for occlusion based selection */ - bool use_gpu_select; /* mode of operation */ char mode; /* internal algorithm for selection */ @@ -82,29 +78,16 @@ void GPU_select_begin(uint *buffer, uint bufsize, const rcti *input, char mode, } g_select_state.select_is_active = true; - g_select_state.use_gpu_select = GPU_select_query_check_active(); g_select_state.mode = mode; if (ELEM(g_select_state.mode, GPU_SELECT_PICK_ALL, GPU_SELECT_PICK_NEAREST)) { g_select_state.algorithm = ALGO_GL_PICK; } - else if (!g_select_state.use_gpu_select) { - g_select_state.algorithm = ALGO_GL_LEGACY; - } else { g_select_state.algorithm = ALGO_GL_QUERY; } switch (g_select_state.algorithm) { - case ALGO_GL_LEGACY: - { - g_select_state.use_cache = false; - glSelectBuffer(bufsize, (GLuint *)buffer); - glRenderMode(GL_SELECT); - glInitNames(); - glPushName(-1); - break; - } case ALGO_GL_QUERY: { g_select_state.use_cache = false; @@ -133,11 +116,6 @@ bool GPU_select_load_id(uint id) return true; switch (g_select_state.algorithm) { - case ALGO_GL_LEGACY: - { - glLoadName(id); - return true; - } case ALGO_GL_QUERY: { return gpu_select_query_load_id(id); @@ -159,12 +137,6 @@ uint GPU_select_end(void) uint hits = 0; switch (g_select_state.algorithm) { - case ALGO_GL_LEGACY: - { - glPopName(); - hits = glRenderMode(GL_RENDER); - break; - } case ALGO_GL_QUERY: { hits = gpu_select_query_end(); @@ -182,14 +154,6 @@ uint GPU_select_end(void) return hits; } -/** - * has user activated? - */ -bool GPU_select_query_check_active(void) -{ - return ELEM(U.gpu_select_method, USER_SELECT_USE_OCCLUSION_QUERY, USER_SELECT_AUTO); -} - /* ---------------------------------------------------------------------------- * Caching * diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index be172d6d418..f2716677593 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -683,9 +683,8 @@ typedef struct UserDef { char ipo_new; /** Handle types for newly added keyframes. */ char keyhandles_new; - char gpu_select_method; char gpu_select_pick_deph; - char pad0; + char pad0[2]; /** #eZoomFrame_Mode. */ char view_frame_type; @@ -996,13 +995,6 @@ typedef enum eDupli_ID_Flags { USER_DUP_PSYS = (1 << 11), } eDupli_ID_Flags; -/* selection method for opengl gpu_select_method */ -typedef enum eOpenGL_SelectOptions { - USER_SELECT_AUTO = 0, - USER_SELECT_USE_OCCLUSION_QUERY = 1, - USER_SELECT_USE_SELECT_RENDERMODE = 2, -} eOpenGL_SelectOptions; - /* max anti alias draw method UserDef.gpu_viewport_antialias */ typedef enum eOpenGL_AntiAliasMethod { USER_AA_NONE = 0, diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 12de47acd1f..e0a15422b29 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -4354,13 +4354,6 @@ static void rna_def_userdef_system(BlenderRNA *brna) {0, NULL, 0, NULL, NULL} }; - static const EnumPropertyItem gpu_select_method_items[] = { - {USER_SELECT_AUTO, "AUTO", 0, "Automatic", ""}, - {USER_SELECT_USE_SELECT_RENDERMODE, "GL_SELECT", 0, "OpenGL Select", ""}, - {USER_SELECT_USE_OCCLUSION_QUERY, "GL_QUERY", 0, "OpenGL Occlusion Queries", ""}, - {0, NULL, 0, NULL, NULL} - }; - srna = RNA_def_struct(brna, "PreferencesSystem", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "Preferences"); @@ -4503,12 +4496,6 @@ static void rna_def_userdef_system(BlenderRNA *brna) /* Select */ - prop = RNA_def_property(srna, "select_method", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "gpu_select_method"); - RNA_def_property_enum_items(prop, gpu_select_method_items); - RNA_def_property_ui_text(prop, "Selection Method", - "Use OpenGL occlusion queries or selection render mode to accelerate selection"); - prop = RNA_def_property(srna, "use_select_pick_depth", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "gpu_select_pick_deph", 1); RNA_def_property_ui_text(prop, "OpenGL Depth Picking", "Use the depth buffer for picking 3D View selection"); diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c index 48e5ac5a072..68c736404e8 100644 --- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c +++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c @@ -520,22 +520,18 @@ static int gizmo_find_intersected_3d_intern( /* Almost certainly overkill, but allow for many custom gizmos. */ GLuint buffer[MAXPICKBUF]; short hits; - const bool do_passes = GPU_select_query_check_active(); BLI_rcti_init_pt_radius(&rect, co, hotspot); ED_view3d_draw_setup_view(CTX_wm_window(C), CTX_data_depsgraph(C), CTX_data_scene(C), ar, v3d, NULL, NULL, &rect); - if (do_passes) - GPU_select_begin(buffer, ARRAY_SIZE(buffer), &rect, GPU_SELECT_NEAREST_FIRST_PASS, 0); - else - GPU_select_begin(buffer, ARRAY_SIZE(buffer), &rect, GPU_SELECT_ALL, 0); + GPU_select_begin(buffer, ARRAY_SIZE(buffer), &rect, GPU_SELECT_NEAREST_FIRST_PASS, 0); /* do the drawing */ gizmo_draw_select_3D_loop(C, visible_gizmos, gz_stop); hits = GPU_select_end(); - if (do_passes && (hits > 0)) { + if (hits > 0) { GPU_select_begin(buffer, ARRAY_SIZE(buffer), &rect, GPU_SELECT_NEAREST_SECOND_PASS, hits); gizmo_draw_select_3D_loop(C, visible_gizmos, gz_stop); GPU_select_end(); |