[Bf-blender-cvs] [ee3d8cafdd4] master: Fix T59155: Can't select light in-front of other objects

Campbell Barton noreply at git.blender.org
Fri Mar 15 01:27:59 CET 2019


Commit: ee3d8cafdd4d90d0694ae4870f5b13d507737dab
Author: Campbell Barton
Date:   Fri Mar 15 10:57:48 2019 +1100
Branches: master
https://developer.blender.org/rBee3d8cafdd4d90d0694ae4870f5b13d507737dab

Fix T59155: Can't select light in-front of other objects

Enable depth picking by default.

This adds new 'gpu_flag' since it's not so relevant to add GPU drawing
options into uiflag & uiflag2.

This resets the recently added smooth edge flag.

===================================================================

M	source/blender/blenloader/intern/versioning_userdef.c
M	source/blender/draw/modes/edit_mesh_mode.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_userdef.c

===================================================================

diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 84722f3a3f7..0f50ec42b01 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -476,10 +476,6 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
 		        GP_PAINT_DEPRECATED_0);
 	}
 
-	if (!USER_VERSION_ATLEAST(280, 46)) {
-		userdef->uiflag2 |= USER_EDIT_MODE_SMOOTH_WIRE;
-	}
-
 	/**
 	 * Include next version bump.
 	 */
diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c
index 9afb9ce40a0..5ba25b16412 100644
--- a/source/blender/draw/modes/edit_mesh_mode.c
+++ b/source/blender/draw/modes/edit_mesh_mode.c
@@ -197,7 +197,7 @@ static void EDIT_MESH_engine_init(void *vedata)
 			geom_sh_code[0] = NULL;
 		}
 		const char *use_geom_def = use_geom_shader ? "#define USE_GEOM_SHADER\n" : "";
-		const char *use_smooth_def = (U.uiflag2 & USER_EDIT_MODE_SMOOTH_WIRE) ? "#define USE_SMOOTH_WIRE\n" : "";
+		const char *use_smooth_def = (U.gpu_flag & USER_GPU_FLAG_NO_EDIT_MODE_SMOOTH_WIRE) ? "" : "#define USE_SMOOTH_WIRE\n";
 		sh_data->overlay_face = GPU_shader_create_from_arrays({
 		        .vert = (const char *[]){lib, datatoc_edit_mesh_overlay_vert_glsl, NULL},
 		        .frag = (const char *[]){datatoc_gpu_shader_3D_smooth_color_frag_glsl, NULL},
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index e3876abd489..dd258329f66 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -944,7 +944,7 @@ int view3d_opengl_select(
 	rcti rect;
 	int hits = 0;
 	const bool use_obedit_skip = (OBEDIT_FROM_VIEW_LAYER(vc->view_layer) != NULL) && (vc->obedit == NULL);
-	const bool is_pick_select = (U.gpu_select_pick_deph != 0);
+	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));
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 461bfb79f91..9d070ecd8ec 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -573,7 +573,9 @@ typedef struct UserDef {
 	/** #eUserpref_UI_Flag. */
 	int uiflag;
 	/** #eUserpref_UI_Flag2. */
-	int uiflag2;
+	char uiflag2;
+	char gpu_flag;
+	char _pad8[2];
 	/* Experimental flag for app-templates to make changes to behavior
 	 * which are outside the scope of typical preferences. */
 	short app_flag;
@@ -664,8 +666,7 @@ typedef struct UserDef {
 	char  ipo_new;
 	/** Handle types for newly added keyframes. */
 	char  keyhandles_new;
-	char  gpu_select_pick_deph;
-	char  _pad11[2];
+	char  _pad11[3];
 	/** #eZoomFrame_Mode. */
 	char  view_frame_type;
 
@@ -896,14 +897,21 @@ typedef enum eUserpref_UI_Flag {
 	USER_HIDE_SYSTEM_BOOKMARKS  = (1u << 31),
 } eUserpref_UI_Flag;
 
-/** #UserDef.uiflag2 */
+/** #UserDef.uiflag2
+ *
+ * \note don't add new flags here, use 'uiflag' which has flags free. */
 typedef enum eUserpref_UI_Flag2 {
-	USER_UIFLAG2_DEPRECATED_0   = (1 << 0),
+	USER_UIFLAG2_DEPRECATED_0   = (1 << 0),  /* cleared */
 	USER_REGION_OVERLAP			= (1 << 1),
 	USER_TRACKPAD_NATURAL		= (1 << 2),
-	USER_EDIT_MODE_SMOOTH_WIRE	= (1 << 3),
+	USER_UIFLAG2_DEPRECATED_3	= (1 << 3),  /* dirty */
 } eUserpref_UI_Flag2;
 
+typedef enum eUserpref_GPU_Flag {
+	USER_GPU_FLAG_NO_DEPT_PICK              = (1 << 0),
+	USER_GPU_FLAG_NO_EDIT_MODE_SMOOTH_WIRE  = (1 << 1),
+} eUserpref_GPU_Flag;
+
 /** #UserDef.tablet_api */
 typedef enum eUserpref_TableAPI {
 	USER_TABLET_AUTOMATIC = 0,
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 197a53a8972..f8908cba195 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -4428,7 +4428,7 @@ static void rna_def_userdef_system(BlenderRNA *brna)
 	RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");
 
 	prop = RNA_def_property(srna, "use_edit_mode_smooth_wire", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "uiflag2", USER_EDIT_MODE_SMOOTH_WIRE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "gpu_flag", USER_GPU_FLAG_NO_EDIT_MODE_SMOOTH_WIRE);
 	RNA_def_property_ui_text(prop, "Edit-Mode Smooth Wires",
 	                         "Enable Edit-Mode edge smoothing, reducing aliasing, requires restart");
 	RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");
@@ -4516,8 +4516,11 @@ static void rna_def_userdef_system(BlenderRNA *brna)
 	/* Select */
 
 	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");
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "gpu_flag", USER_GPU_FLAG_NO_DEPT_PICK);
+	RNA_def_property_ui_text(
+	        prop, "OpenGL Depth Picking",
+	        "Use the depth buffer for picking 3D View selection "
+	        "(without this the front most object may not be selected first)");
 
 	/* Audio */



More information about the Bf-blender-cvs mailing list