diff options
-rw-r--r-- | release/datafiles/studiolights/world/sl02.jpg | bin | 49661 -> 0 bytes | |||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 20 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_studiolight.h | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lookdev.c | 6 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_private.h | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 31 |
7 files changed, 43 insertions, 22 deletions
diff --git a/release/datafiles/studiolights/world/sl02.jpg b/release/datafiles/studiolights/world/sl02.jpg Binary files differdeleted file mode 100644 index 1c9ce99a0d8..00000000000 --- a/release/datafiles/studiolights/world/sl02.jpg +++ /dev/null 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); |