[Bf-blender-cvs] [93a8fd1249f] master: Cleanup: Commonize code for checking scene lights/world settings

Jesse Yurkovich noreply at git.blender.org
Fri Oct 15 11:43:18 CEST 2021


Commit: 93a8fd1249ffc64ee089b8c3192908dec247fc07
Author: Jesse Yurkovich
Date:   Fri Oct 15 11:42:21 2021 +0200
Branches: master
https://developer.blender.org/rB93a8fd1249ffc64ee089b8c3192908dec247fc07

Cleanup: Commonize code for checking scene lights/world settings

There were several places attempting to check to see if scene lights
and world were enabled for display. This tries to find a common place
for both of these to reduce duplication.

Honestly, I couldn't find a really good spot for these and settled on
DRW_engine. It's not the best spot since they're not strictly drawing
related, but let's start here.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D12658

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

M	release/scripts/addons
M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/intern/draw_color_management.cc
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesdna/DNA_view3d_types.h

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

diff --git a/release/scripts/addons b/release/scripts/addons
index f10ca8c1561..67f1fbca148 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit f10ca8c156169b24e70027a43f718f99571d280f
+Subproject commit 67f1fbca1482d9d9362a4001332e785c3fd5d230
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 1078cebdbff..50e32040522 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 = V3D_USES_SCENE_LIGHTS(v3d);
+
+    use_scene_world = V3D_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..70035c7c6f8 100644
--- a/source/blender/draw/intern/draw_color_management.cc
+++ b/source/blender/draw/intern/draw_color_management.cc
@@ -30,6 +30,7 @@
 #include "GPU_texture.h"
 
 #include "DNA_space_types.h"
+#include "DNA_view3d_types.h"
 
 #include "BKE_colortools.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 = V3D_USES_SCENE_LIGHTS(&v3d);
+  const bool use_scene_world = V3D_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/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index bda6fa05a63..787cf529483 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -30,6 +30,7 @@
 #include "DNA_material_types.h"
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
+#include "DNA_view3d_types.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -1569,10 +1570,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 = V3D_USES_SCENE_WORLD(v3d);
           if (v3d->flag2 & V3D_HIDE_OVERLAYS || use_scene_world) {
             ED_area_tag_redraw_regiontype(area, RGN_TYPE_WINDOW);
           }
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index fafc470b95a..d5db72ea85a 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -500,6 +500,18 @@ enum {
   V3D_SHADING_STUDIOLIGHT_VIEW_ROTATION = (1 << 14),
 };
 
+#define V3D_USES_SCENE_LIGHTS(v3d) \
+  ((v3d) && \
+   ((((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))))
+
+#define V3D_USES_SCENE_WORLD(v3d) \
+  ((v3d) && \
+   ((((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))))
+
 /** #View3DShading.cavity_type */
 enum {
   V3D_SHADING_CAVITY_SSAO = 0,



More information about the Bf-blender-cvs mailing list