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.
This commit is contained in:
parent
aed09d4329
commit
a6340a5068
Notes:
blender-bot
2024-04-11 14:26:06 +02:00
Referenced by issue #66278, Material tab in Properties Editor Crashes Blender to desktop Referenced by issue #55882, Crash: Sidebar (N) > Opening, Moving & Closing User Preferences Window Referenced by issue #55871, Creating Armature > Single Bone makes 1st Mesh Object in Scene Invisible when Selected. Referenced by issue #55855, Blender crashes Referenced by issue #55843, Blender 2.8 consistent Crash Referenced by issue #55835, Green Scale doesnt work with transfrom selected Referenced by issue #55822, [2.8] Crash when selecting materials Referenced by issue #55823, [2.8] Crash with Curve modifier Referenced by issue #55824, [2.8] Crash when opening files. Referenced by issue #55826, Crash when add any type object in new scene link Referenced by issue #55828, option lineset freestyle only show in first view layer Referenced by issue #55811, Blender crash when nothing is selected and Ctrl+Tab is pressed Referenced by issue #55813, Blender crashes when selecting the lamp settings tab Referenced by issue #55815, Crash when clicking on Material tab Referenced by issue #55805, f12 render crash eevee Referenced by issue #55808, material & lamp properties crash Referenced by issue #55809, Eevee crash on render (F12) Referenced by issue #55810, Crashes Clicking Material Tab in Properties Editor with Eevee Selected
Binary file not shown.
Before Width: | Height: | Size: 48 KiB |
|
@ -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):
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 Light", "Render lights and light probes of the scene");
|
||||
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 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);
|
||||
|
|
Loading…
Reference in New Issue