[Bf-blender-cvs] [a6340a5068f] blender2.8: Viewport: in Lookdev shading, disable scene lights and world by default.

Brecht Van Lommel noreply at git.blender.org
Fri Jul 6 20:24:59 CEST 2018


Commit: a6340a5068fd6ed8117ce8618f8b5901f324204d
Author: Brecht Van Lommel
Date:   Fri Jul 6 18:53:51 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa6340a5068fd6ed8117ce8618f8b5901f324204d

Viewport: in Lookdev shading, disable scene lights and world by default.

Now we light with just a user defined HDRI by default, which is useful
for material setup and texture painting and lighting without having to
set up any scene lights.

Previously it would use the scene world without lights by default, which
in some files is just black.

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

D	release/datafiles/studiolights/world/sl02.jpg
M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenkernel/BKE_studiolight.h
M	source/blender/draw/engines/eevee/eevee_lookdev.c
M	source/blender/draw/engines/eevee/eevee_private.h
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/datafiles/studiolights/world/sl02.jpg b/release/datafiles/studiolights/world/sl02.jpg
deleted file mode 100644
index 1c9ce99a0d8..00000000000
Binary files a/release/datafiles/studiolights/world/sl02.jpg and /dev/null differ
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index ce764ef98c7..fa37197f3ff 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -3755,14 +3755,18 @@ class VIEW3D_PT_shading_lighting(Panel):
                 sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
 
         elif shading.type == 'MATERIAL':
-            row = layout.row()
-            row.template_icon_view(shading, "studio_light", show_labels=True)
-            sub = row.column()
-            sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
-            if shading.selected_studio_light.orientation == 'WORLD':
-                layout.row().prop(shading, "studiolight_rotate_z")
-                layout.row().prop(shading, "studiolight_background_alpha")
-            layout.prop(shading, "use_scene_light")
+            col = layout.column(align=True)
+            col.prop(shading, "use_scene_lights")
+            col.prop(shading, "use_scene_world")
+
+            if not shading.use_scene_world:
+                row = layout.row()
+                row.template_icon_view(shading, "studio_light", show_labels=True)
+                sub = row.column()
+                sub.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES')
+                if shading.selected_studio_light.orientation == 'WORLD':
+                    layout.row().prop(shading, "studiolight_rotate_z")
+                    layout.row().prop(shading, "studiolight_background_alpha")
 
 
 class VIEW3D_PT_shading_color(Panel):
diff --git a/source/blender/blenkernel/BKE_studiolight.h b/source/blender/blenkernel/BKE_studiolight.h
index f8a9498724e..fee01fa8abb 100644
--- a/source/blender/blenkernel/BKE_studiolight.h
+++ b/source/blender/blenkernel/BKE_studiolight.h
@@ -103,7 +103,7 @@ enum StudioLightFlag {
 
 #define STUDIOLIGHT_FLAG_ALL (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_EXTERNAL_FILE)
 #define STUDIOLIGHT_FLAG_ORIENTATIONS (STUDIOLIGHT_ORIENTATION_CAMERA | STUDIOLIGHT_ORIENTATION_WORLD | STUDIOLIGHT_ORIENTATION_VIEWNORMAL)
-#define STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_ORIENTATION_WORLD)
+#define STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE (STUDIOLIGHT_ORIENTATION_WORLD)
 #define STUDIOLIGHT_ORIENTATIONS_SOLID (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_ORIENTATION_CAMERA | STUDIOLIGHT_ORIENTATION_WORLD)
 
 typedef void StudioLightFreeFunction(struct StudioLight *, void *data);
diff --git a/source/blender/draw/engines/eevee/eevee_lookdev.c b/source/blender/draw/engines/eevee/eevee_lookdev.c
index e083c9b5eb5..01599177fa4 100644
--- a/source/blender/draw/engines/eevee/eevee_lookdev.c
+++ b/source/blender/draw/engines/eevee/eevee_lookdev.c
@@ -41,9 +41,9 @@ void EEVEE_lookdev_cache_init(
 	EEVEE_StorageList *stl = vedata->stl;
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 	View3D *v3d = draw_ctx->v3d;
-	if (LOOK_DEV_MODE_ENABLED(v3d)) {
-		StudioLight *sl = BKE_studiolight_find(v3d->shading.studio_light, STUDIOLIGHT_INTERNAL | STUDIOLIGHT_ORIENTATION_WORLD);
-		if ((sl->flag & STUDIOLIGHT_ORIENTATION_WORLD)) {
+	if (LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d)) {
+		StudioLight *sl = BKE_studiolight_find(v3d->shading.studio_light, STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE);
+		if (sl && (sl->flag & STUDIOLIGHT_ORIENTATION_WORLD)) {
 			struct Gwn_Batch *geom = DRW_cache_fullscreen_quad_get();
 			GPUTexture *tex = NULL;
 
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index c2f9d16361d..e9ba6585943 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -95,7 +95,8 @@ extern struct DrawEngineType draw_engine_eevee_type;
 #define OVERLAY_ENABLED(v3d) ((v3d) && (v3d->flag2 & V3D_RENDER_OVERRIDE) == 0)
 #define LOOK_DEV_MODE_ENABLED(v3d) ((v3d) && (v3d->drawtype == OB_MATERIAL))
 #define LOOK_DEV_OVERLAY_ENABLED(v3d) (LOOK_DEV_MODE_ENABLED(v3d) && OVERLAY_ENABLED(v3d) && (v3d->overlay.flag & V3D_OVERLAY_LOOK_DEV))
-#define USE_SCENE_LIGHT(v3d) ((!v3d) || (!LOOK_DEV_MODE_ENABLED(v3d)) || ((LOOK_DEV_MODE_ENABLED(v3d) && (v3d->shading.flag & V3D_SHADING_SCENE_LIGHT))))
+#define USE_SCENE_LIGHT(v3d) ((!v3d) || (!LOOK_DEV_MODE_ENABLED(v3d)) || ((LOOK_DEV_MODE_ENABLED(v3d) && (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS))))
+#define LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d) (LOOK_DEV_MODE_ENABLED(v3d) && !(v3d->shading.flag & V3D_SHADING_SCENE_WORLD))
 
 /* World shader variations */
 enum {
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 806d6f925ba..331eb216f61 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -361,10 +361,11 @@ enum {
 	V3D_SHADING_OBJECT_OUTLINE      = (1 << 0),
 	V3D_SHADING_XRAY                = (1 << 1),
 	V3D_SHADING_SHADOW              = (1 << 2),
-	V3D_SHADING_SCENE_LIGHT         = (1 << 3),
+	V3D_SHADING_SCENE_LIGHTS        = (1 << 3),
 	V3D_SHADING_SPECULAR_HIGHLIGHT  = (1 << 4),
 	V3D_SHADING_CAVITY              = (1 << 5),
 	V3D_SHADING_MATCAP_FLIP_X       = (1 << 6),
+	V3D_SHADING_SCENE_WORLD         = (1 << 7),
 };
 
 /* View3DShading->color_type */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 4d85d845081..ab83cedd232 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -800,8 +800,13 @@ static int rna_View3DShading_studio_light_get(PointerRNA *ptr)
 		flag = STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE;
 	}
 	StudioLight *sl = BKE_studiolight_find(dna_storage, flag);
-	BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
-	return sl->index;
+	if (sl) {
+		BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
+		return sl->index;
+	}
+	else {
+		return 0;
+	}
 }
 
 static void rna_View3DShading_studio_light_set(PointerRNA *ptr, int value)
@@ -818,7 +823,9 @@ static void rna_View3DShading_studio_light_set(PointerRNA *ptr, int value)
 		flag = STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE;
 	}
 	StudioLight *sl = BKE_studiolight_findindex(value, flag);
-	BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
+	if (sl) {
+		BLI_strncpy(dna_storage, sl->name, FILE_MAXFILE);
+	}
 }
 
 static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
@@ -846,8 +853,10 @@ static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
 			bool show_studiolight = false;
 
 			if (sl->flag & STUDIOLIGHT_INTERNAL) {
-				/* always show internal lights */
-				show_studiolight = true;
+				/* always show internal lights for solid */
+				if (v3d->drawtype == OB_SOLID) {
+					show_studiolight = true;
+				}
 			}
 			else {
 				switch (v3d->drawtype) {
@@ -2479,10 +2488,16 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
 	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-	prop = RNA_def_property(srna, "use_scene_light", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "shading.flag", V3D_SHADING_SCENE_LIGHT);
+	prop = RNA_def_property(srna, "use_scene_lights", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "shading.flag", V3D_SHADING_SCENE_LIGHTS);
+	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+	RNA_def_property_ui_text(prop, "Scene Lights", "Render lights and light probes of the scene");
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+	prop = RNA_def_property(srna, "use_scene_world", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "shading.flag", V3D_SHADING_SCENE_WORLD);
 	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
-	RNA_def_property_ui_text(prop, "Scene Light", "Render lights and light probes of the scene");
+	RNA_def_property_ui_text(prop, "Scene World", "Use scene world for lighting");
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
 	prop = RNA_def_property(srna, "show_specular_highlight", PROP_BOOLEAN, PROP_NONE);



More information about the Bf-blender-cvs mailing list