Cycles: add experimental preference to replace magic debug value 256
authorBrecht Van Lommel <brecht@blender.org>
Thu, 11 Jun 2020 18:32:39 +0000 (20:32 +0200)
committerBrecht Van Lommel <brecht@blender.org>
Fri, 26 Jun 2020 11:19:34 +0000 (13:19 +0200)
Previously you'd have to run with --debug-value 256, now just make it
a preference so the Debug panel can be always available for developers.

intern/cycles/blender/addon/engine.py
intern/cycles/blender/addon/ui.py
release/scripts/startup/bl_ui/space_userpref.py
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_userdef.c

index e7ea5e7a1f629aed286506b0d12accdc4e8fc151..7566ca28dd72becfe7836f5e5133346d6c629d6f 100644 (file)
@@ -179,7 +179,8 @@ def reset(engine, data, depsgraph):
     import _cycles
     import bpy
 
-    if bpy.app.debug_value == 256:
+    prefs = bpy.context.preferences
+    if prefs.experimental.use_cycles_debug and prefs.view.show_developer_ui:
         _cycles.debug_flags_update(depsgraph.scene.as_pointer())
     else:
         _cycles.debug_flags_reset()
index aa0a47eb9c7f57badce2c039d171bec712d31671..cfb22885eab6e6a7b1b032973c6d6478966a6872 100644 (file)
@@ -1987,7 +1987,10 @@ class CYCLES_RENDER_PT_debug(CyclesButtonsPanel, Panel):
 
     @classmethod
     def poll(cls, context):
-        return CyclesButtonsPanel.poll(context) and bpy.app.debug_value == 256
+        prefs = bpy.context.preferences
+        return (CyclesButtonsPanel.poll(context)
+                and prefs.experimental.use_cycles_debug
+                and prefs.view.show_developer_ui)
 
     def draw(self, context):
         layout = self.layout
index c1502165e448dc7c1d4349701ad3fb103548545b..e5171df597aa83eb7d0b2e04225d7ae5c67ff9c9 100644 (file)
@@ -2114,8 +2114,10 @@ class ExperimentalPanel:
             split = layout.split(factor=0.66)
             col = split.split()
             col.prop(experimental, **prop_keywords)
-            col = split.split()
-            col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
+
+            if task:
+                col = split.split()
+                col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
 
 """
 # Example panel, leave it here so we always have a template to follow even
@@ -2163,6 +2165,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel):
         self._draw_items(
             context, (
                 ({"property": "use_undo_legacy"}, "T60695"),
+                ({"property": "use_cycles_debug"}, None),
             ),
         )
 
index 9ea62183b87a8247c60ed0724784cbd653a26e79..d751ad9ac47389d73c85a9518d76ecfe70c43725 100644 (file)
@@ -621,8 +621,9 @@ typedef struct UserDef_Experimental {
   char use_undo_legacy;
   char use_new_particle_system;
   char use_new_hair_type;
+  char use_cycles_debug;
   /** `makesdna` does not allow empty structs. */
-  char _pad0[5];
+  char _pad0[4];
 } UserDef_Experimental;
 
 #define USER_EXPERIMENTAL_TEST(userdef, member) \
index 6a6d9f3054f9302063bbe0deadef8694335f9524..c31b313d8270b3c4b642808ab11aba64110dabbf 100644 (file)
@@ -6079,6 +6079,11 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
   prop = RNA_def_property(srna, "use_new_hair_type", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "use_new_hair_type", 1);
   RNA_def_property_ui_text(prop, "New Hair Type", "Enable the new hair type in the ui");
+
+  prop = RNA_def_property(srna, "use_cycles_debug", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "use_cycles_debug", 1);
+  RNA_def_property_ui_text(prop, "Cycles Debug", "Enable Cycles debugging options for developers");
+  RNA_def_property_update(prop, 0, "rna_userdef_update");
 }
 
 static void rna_def_userdef_addon_collection(BlenderRNA *brna, PropertyRNA *cprop)