diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h index 5e7b812c37b..975049eb6e8 100644 --- a/source/blender/draw/DRW_engine.h +++ b/source/blender/draw/DRW_engine.h @@ -134,6 +134,9 @@ void DRW_draw_select_id(struct Depsgraph *depsgraph, struct View3D *v3d, const struct rcti *rect); +bool DRW_shading_uses_scene_lights(const struct View3D *v3d); +bool DRW_shading_uses_scene_world(const struct View3D *v3d); + /* grease pencil render */ bool DRW_render_check_grease_pencil(struct Depsgraph *depsgraph); void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph); diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c index 1078cebdbff..e5cd33ebc68 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.c +++ b/source/blender/draw/engines/gpencil/gpencil_engine.c @@ -120,15 +120,9 @@ void GPENCIL_engine_init(void *ved) bool use_scene_world = false; if (v3d) { - use_scene_lights = ((v3d->shading.type == OB_MATERIAL) && - (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS)) || - ((v3d->shading.type == OB_RENDER) && - (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS_RENDER)); - - use_scene_world = ((v3d->shading.type == OB_MATERIAL) && - (v3d->shading.flag & V3D_SHADING_SCENE_WORLD)) || - ((v3d->shading.type == OB_RENDER) && - (v3d->shading.flag & V3D_SHADING_SCENE_WORLD_RENDER)); + use_scene_lights = DRW_shading_uses_scene_lights(v3d); + + use_scene_world = DRW_shading_uses_scene_world(v3d); stl->pd->v3d_color_type = (v3d->shading.type == OB_SOLID) ? v3d->shading.color_type : -1; /* Special case: If Vertex Paint mode, use always Vertex mode. */ diff --git a/source/blender/draw/intern/draw_color_management.cc b/source/blender/draw/intern/draw_color_management.cc index 23fa18c83c5..cb7a4954134 100644 --- a/source/blender/draw/intern/draw_color_management.cc +++ b/source/blender/draw/intern/draw_color_management.cc @@ -22,6 +22,7 @@ #include "draw_manager.h" +#include "DRW_engine.h" #include "DRW_render.h" #include "GPU_batch.h" @@ -60,14 +61,8 @@ static eDRWColorManagementType drw_color_management_type_for_v3d(const Scene &sc { const bool use_workbench = BKE_scene_uses_blender_workbench(&scene); - const bool use_scene_lights = ((v3d.shading.type == OB_MATERIAL) && - (v3d.shading.flag & V3D_SHADING_SCENE_LIGHTS)) || - ((v3d.shading.type == OB_RENDER) && - (v3d.shading.flag & V3D_SHADING_SCENE_LIGHTS_RENDER)); - const bool use_scene_world = ((v3d.shading.type == OB_MATERIAL) && - (v3d.shading.flag & V3D_SHADING_SCENE_WORLD)) || - ((v3d.shading.type == OB_RENDER) && - (v3d.shading.flag & V3D_SHADING_SCENE_WORLD_RENDER)); + const bool use_scene_lights = DRW_shading_uses_scene_lights(&v3d); + const bool use_scene_world = DRW_shading_uses_scene_world(&v3d); if ((use_workbench && v3d.shading.type == OB_RENDER) || use_scene_lights || use_scene_world) { return eDRWColorManagementType::UseRenderSettings; diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index e65fdce5f2e..3e9907760a0 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -309,6 +309,29 @@ struct DupliObject *DRW_object_get_dupli(const Object *UNUSED(ob)) return DST.dupli_source; } +bool DRW_shading_uses_scene_lights(const View3D *v3d) +{ + if (v3d) { + return ((v3d->shading.type == OB_MATERIAL) && + (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS)) || + ((v3d->shading.type == OB_RENDER) && + (v3d->shading.flag & V3D_SHADING_SCENE_LIGHTS_RENDER)); + } + + return false; +} + +bool DRW_shading_uses_scene_world(const View3D *v3d) +{ + if (v3d) { + return ((v3d->shading.type == OB_MATERIAL) && (v3d->shading.flag & V3D_SHADING_SCENE_WORLD)) || + ((v3d->shading.type == OB_RENDER) && + (v3d->shading.flag & V3D_SHADING_SCENE_WORLD_RENDER)); + } + + return false; +} + /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 4bee9633ece..018e01c512e 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -1567,10 +1567,7 @@ static void space_view3d_listener(const wmSpaceTypeListenerParams *params) case NC_SCENE: switch (wmn->data) { case ND_WORLD: { - const bool use_scene_world = ((v3d->shading.type == OB_MATERIAL) && - (v3d->shading.flag & V3D_SHADING_SCENE_WORLD)) || - ((v3d->shading.type == OB_RENDER) && - (v3d->shading.flag & V3D_SHADING_SCENE_WORLD_RENDER)); + const bool use_scene_world = DRW_shading_uses_scene_world(v3d); if (v3d->flag2 & V3D_HIDE_OVERLAYS || use_scene_world) { ED_area_tag_redraw_regiontype(area, RGN_TYPE_WINDOW); }