[af3dfd81ba1] temp_cryptomatte: Merged Lukas’ UI changes

Stefan Werner noreply at git.blender.org
Fri Nov 3 21:09:33 CET 2017


Commit: af3dfd81ba1c3248a1e26378bab6762bef3a96b2
Author: Stefan Werner
Date:   Thu Mar 30 13:36:51 2017 +0200
Branches: temp_cryptomatte
https://developer.blender.org/rBaf3dfd81ba1c3248a1e26378bab6762bef3a96b2

Merged Lukas’ UI changes

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

M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/addon/ui.py
M	intern/cycles/blender/blender_sync.cpp

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

diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index a8a0f0bfc70..ebd4f8e2d9b 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -140,6 +140,11 @@ enum_texture_limit = (
     ('8192', "8192", "Limit texture size to 8192 pixels", 7),
     )
 
+enum_aov_types = (
+    ('VALUE', "Value", "Write a Value pass", 0),
+    ('COLOR', "Color", "Write a color pass", 1),
+    )
+
 class CyclesRenderSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -1166,6 +1171,12 @@ class CyclesCurveRenderSettings(bpy.types.PropertyGroup):
     def unregister(cls):
         del bpy.types.Scene.cycles_curves
 
+class CyclesAOVSettings(bpy.types.PropertyGroup):
+    @classmethod
+    def register(cls):
+        cls.name = StringProperty(name="Name")
+        cls.type = EnumProperty(name="Type", items=enum_aov_types, default='COLOR')
+
 class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -1194,6 +1205,8 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
                 description="Store Debug Ray Bounces pass",
                 default=False,
                 )
+        cls.aovs = bpy.props.CollectionProperty(type=CyclesAOVSettings)
+        cls.active_aov = IntProperty(default=0)
 
     @classmethod
     def unregister(cls):
@@ -1357,6 +1370,7 @@ def register():
     bpy.utils.register_class(CyclesCurveSettings)
     bpy.utils.register_class(CyclesDeviceSettings)
     bpy.utils.register_class(CyclesPreferences)
+    bpy.utils.register_class(CyclesAOVSettings)
     bpy.utils.register_class(CyclesRenderLayerSettings)
 
 
@@ -1373,4 +1387,5 @@ def unregister():
     bpy.utils.unregister_class(CyclesCurveSettings)
     bpy.utils.unregister_class(CyclesDeviceSettings)
     bpy.utils.unregister_class(CyclesPreferences)
+    bpy.utils.unregister_class(CyclesAOVSettings)
     bpy.utils.unregister_class(CyclesRenderLayerSettings)
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index ea5bc8979c0..1f3950a1898 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -433,6 +433,41 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel):
         row.active = not cscene.debug_use_spatial_splits
         row.prop(cscene, "debug_bvh_time_steps")
 
+class CyclesRender_AOV_add(bpy.types.Operator):
+    """Add an AOV pass"""
+    bl_idname="scenerenderlayer.aov_add"
+    bl_label="Add AOV"
+
+    def execute(self, context):
+        scene = context.scene
+        rd = scene.render
+        rl = rd.layers.active
+        crl = rl.cycles
+
+        crl.aovs.add()
+        return {'FINISHED'}
+
+class CyclesRender_AOV_delete(bpy.types.Operator):
+    """Delete an AOV pass"""
+    bl_idname="scenerenderlayer.aov_delete"
+    bl_label="Delete AOV"
+
+    def execute(self, context):
+        scene = context.scene
+        rd = scene.render
+        rl = rd.layers.active
+        crl = rl.cycles
+
+        crl.aovs.remove(crl.active_aov)
+        return {'FINISHED'}
+
+class CyclesAOVList(bpy.types.UIList):
+    def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
+        row = layout.row()
+        row.label("", icon='RENDER_RESULT')
+        split = row.split(percentage=0.65, align=True)
+        split.prop(item, "name", text="")
+        split.prop(item, "type", text="")
 
 class CyclesRender_PT_layer_options(CyclesButtonsPanel, Panel):
     bl_label = "Layer"
@@ -537,6 +572,13 @@ class CyclesRender_PT_layer_passes(CyclesButtonsPanel, Panel):
           col.prop(crl, "pass_debug_bvh_intersections")
           col.prop(crl, "pass_debug_ray_bounces")
 
+        layout.label("AOVs:")
+        crl = rl.cycles
+        row = layout.row()
+        row.template_list("CyclesAOVList", "", crl, "aovs", crl, "active_aov")
+        sub = row.column(align=True)
+        sub.operator("scenerenderlayer.aov_add", icon='ZOOMIN', text="")
+        sub.operator("scenerenderlayer.aov_delete", icon='ZOOMOUT', text="")
 
 class CyclesRender_PT_views(CyclesButtonsPanel, Panel):
     bl_label = "Views"
@@ -1765,6 +1807,9 @@ classes = (
     CyclesRender_PT_debug,
     CyclesParticle_PT_CurveSettings,
     CyclesScene_PT_simplify,
+    CyclesAOVList,
+    CyclesRender_AOV_add,
+    CyclesRender_AOV_delete,
 )
 
 
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 17d2378b7ab..7dd168a6a3d 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -544,8 +544,8 @@ array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
 			Pass::add(pass_type, passes);
 	}
 
-#ifdef __KERNEL_DEBUG__
 	PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
+#ifdef __KERNEL_DEBUG__
 	if(get_boolean(crp, "pass_debug_bvh_traversed_nodes")) {
 		b_engine.add_pass("Debug BVH Traversed Nodes", 1, "X", b_srlay.name().c_str());
 		Pass::add(PASS_BVH_TRAVERSED_NODES, passes);
@@ -564,6 +564,15 @@ array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
 	}
 #endif
 
+	RNA_BEGIN(&crp, b_aov, "aovs") {
+		bool is_color = RNA_enum_get(&b_aov, "type");
+		string name = get_string(b_aov, "name");
+		AOV aov = { ustring(name), 9999, is_color };
+		passes.add(aov);
+		string passname = string_printf("AOV %s", name.c_str());
+		b_engine.add_pass(is_color ? 3 : 1, passname.c_str(), b_srlay.name().c_str(), NULL, is_color ? "RGB" : "X");
+	} RNA_END
+
 	return passes;
 }



More information about the Bf-blender-cvs mailing list