[Bf-blender-cvs] [d04aa1fd44d] experimental-build: Squashed D3203: Baking system overhaul: Move baking settings from render settings into BakePasses

Lukas Stockner noreply at git.blender.org
Sat Feb 23 04:15:10 CET 2019


Commit: d04aa1fd44db55422d84bc23f54cc4753ec2b06b
Author: Lukas Stockner
Date:   Sat Feb 23 04:13:46 2019 +0100
Branches: experimental-build
https://developer.blender.org/rBd04aa1fd44db55422d84bc23f54cc4753ec2b06b

Squashed D3203: Baking system overhaul: Move baking settings from render settings into BakePasses

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

M	intern/cycles/blender/addon/__init__.py
M	intern/cycles/blender/addon/engine.py
M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/addon/ui.py
M	intern/cycles/blender/blender_python.cpp
M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/blender/blender_session.h
M	intern/cycles/render/scene.h
M	release/scripts/startup/bl_ui/properties_object.py
M	source/blender/blenkernel/BKE_object.h
M	source/blender/blenkernel/intern/library_query.c
M	source/blender/blenkernel/intern/object.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/render/render_intern.h
M	source/blender/editors/render/render_ops.c
M	source/blender/editors/render/render_shading.c
M	source/blender/editors/space_outliner/outliner_tree.c
M	source/blender/makesdna/DNA_image_types.h
M	source/blender/makesdna/DNA_object_types.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_object.c
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/render/extern/include/RE_bake.h
M	source/blender/render/extern/include/RE_engine.h
M	source/blender/render/intern/source/bake_api.c
M	source/blender/render/intern/source/external_engine.c

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

diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index 93a1271b4b4..1873a373319 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -83,8 +83,8 @@ class CyclesRender(bpy.types.RenderEngine):
     def render(self, depsgraph):
         engine.render(self, depsgraph)
 
-    def bake(self, depsgraph, obj, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result):
-        engine.bake(self, depsgraph, obj, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result)
+    def bake(self, depsgraph, bakepass, obj, object_id, pixel_array, result):
+        engine.bake(self, depsgraph, bakepass, obj, object_id, pixel_array, result)
 
     # viewport render
     def view_update(self, context):
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index b8bc74f9e35..56637cd1459 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -164,11 +164,11 @@ def render(engine, depsgraph):
         _cycles.render(engine.session, depsgraph.as_pointer())
 
 
-def bake(engine, depsgraph, obj, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result):
+def bake(engine, depsgraph, bakepass, obj, object_id, pixel_array, result):
     import _cycles
     session = getattr(engine, "session", None)
     if session is not None:
-        _cycles.bake(engine.session, depsgraph.as_pointer(), obj.as_pointer(), pass_type, pass_filter, object_id, pixel_array.as_pointer(), num_pixels, depth, result.as_pointer())
+        _cycles.bake(engine.session, depsgraph.as_pointer(), bakepass.as_pointer(), obj.as_pointer(), object_id, pixel_array.as_pointer(), result.as_pointer())
 
 
 def reset(engine, data, depsgraph):
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 11f75b668a9..7e95478cad2 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -569,26 +569,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
         default=False,
     )
 
-    bake_type: EnumProperty(
-        name="Bake Type",
-        default='COMBINED',
-        description="Type of pass to bake",
-        items=(
-            ('COMBINED', "Combined", ""),
-            ('AO', "Ambient Occlusion", ""),
-            ('SHADOW', "Shadow", ""),
-            ('NORMAL', "Normal", ""),
-            ('UV', "UV", ""),
-            ('ROUGHNESS', "Roughness", ""),
-            ('EMIT', "Emit", ""),
-            ('ENVIRONMENT', "Environment", ""),
-            ('DIFFUSE', "Diffuse", ""),
-            ('GLOSSY', "Glossy", ""),
-            ('TRANSMISSION', "Transmission", ""),
-            ('SUBSURFACE', "Subsurface", ""),
-        ),
-    )
-
     use_camera_cull: BoolProperty(
         name="Use Camera Cull",
         description="Allow objects to be culled based on the camera frustum",
@@ -1407,6 +1387,94 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
         del bpy.types.ViewLayer.cycles
 
 
+class CyclesBakePassSettings(bpy.types.PropertyGroup):
+
+    bake_type: EnumProperty(
+        name="Bake Type",
+        default='COMBINED',
+        description="Type of pass to bake",
+        items=(
+            ('COMBINED', "Combined", ""),
+            ('AO', "Ambient Occlusion", ""),
+            ('SHADOW', "Shadow", ""),
+            ('NORMAL', "Normal", ""),
+            ('UV', "UV", ""),
+            ('ROUGHNESS', "Roughness", ""),
+            ('EMIT', "Emit", ""),
+            ('ENVIRONMENT', "Environment", ""),
+            ('DIFFUSE', "Diffuse", ""),
+            ('GLOSSY', "Glossy", ""),
+            ('TRANSMISSION', "Transmission", ""),
+            ('SUBSURFACE', "Subsurface", ""),
+        ),
+    )
+
+    use_pass_ambient_occlusion: BoolProperty(
+        name="AO",
+        description="Add ambient occlusion contribution",
+        default=True,
+        )
+    use_pass_emit: BoolProperty(
+        name="Emit",
+        description="Add emission contribution",
+        default=True,
+        )
+    use_pass_direct: BoolProperty(
+        name="Direct",
+        description="Add direct lighting contribution",
+        default=True,
+        )
+    use_pass_indirect: BoolProperty(
+        name="Indirect",
+        description="Add indirect lighting contribution",
+        default=True,
+        )
+    use_pass_color: BoolProperty(
+        name="Color",
+        description="Color the pass",
+        default=True,
+        )
+    use_pass_diffuse: BoolProperty(
+        name="Diffuse",
+        description="Add diffuse contribution",
+        default=True,
+        )
+    use_pass_glossy: BoolProperty(
+        name="Glossy",
+        description="Add glossy contribution",
+        default=True,
+        )
+    use_pass_transmission: BoolProperty(
+        name="Transmission",
+        description="Add transmission contribution",
+        default=True,
+        )
+    use_pass_subsurface: BoolProperty(
+        name="Subsurface",
+        description="Add subsurface contribution",
+        default=True,
+        )
+
+    samples: IntProperty(
+        name="Samples",
+        description="Override number of render samples for this bake pass, 0 will use the scene setting",
+        default=0,
+        min=0,
+    )
+
+    @classmethod
+    def register(cls):
+        bpy.types.BakePass.cycles = PointerProperty(
+            name="Cycles Bake Pass Settings",
+            description="Cycles Bake Pass Settings",
+            type=cls,
+        )
+
+    @classmethod
+    def unregister(cls):
+        del bpy.types.BakePass.cycles
+
+
 class CyclesDeviceSettings(bpy.types.PropertyGroup):
     id: StringProperty(name="ID")
     name: StringProperty(name="Name")
@@ -1542,6 +1610,7 @@ def register():
     bpy.utils.register_class(CyclesDeviceSettings)
     bpy.utils.register_class(CyclesPreferences)
     bpy.utils.register_class(CyclesRenderLayerSettings)
+    bpy.utils.register_class(CyclesBakePassSettings)
 
 
 def unregister():
@@ -1557,3 +1626,4 @@ def unregister():
     bpy.utils.unregister_class(CyclesDeviceSettings)
     bpy.utils.unregister_class(CyclesPreferences)
     bpy.utils.unregister_class(CyclesRenderLayerSettings)
+    bpy.utils.unregister_class(CyclesBakePassSettings)
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 542f02f1a6d..d67866984db 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -1738,155 +1738,61 @@ class CYCLES_MATERIAL_PT_settings_volume(CyclesButtonsPanel, Panel):
 
 
 class CYCLES_RENDER_PT_bake(CyclesButtonsPanel, Panel):
-    bl_label = "Bake"
-    bl_context = "render"
-    bl_options = {'DEFAULT_CLOSED'}
-    COMPAT_ENGINES = {'CYCLES'}
-
-    def draw(self, context):
-        layout = self.layout
-        layout.use_property_split = True
-        layout.use_property_decorate = False  # No animation.
-
-        scene = context.scene
-        cscene = scene.cycles
-        cbk = scene.render.bake
-        rd = scene.render
-
-        if rd.use_bake_multires:
-            layout.operator("object.bake_image", icon='RENDER_STILL')
-            layout.prop(rd, "use_bake_multires")
-            layout.prop(rd, "bake_type")
-
-        else:
-            layout.operator("object.bake", icon='RENDER_STILL').type = cscene.bake_type
-            layout.prop(rd, "use_bake_multires")
-            layout.prop(cscene, "bake_type")
-
-
-class CYCLES_RENDER_PT_bake_influence(CyclesButtonsPanel, Panel):
-    bl_label = "Influence"
-    bl_context = "render"
-    bl_parent_id = "CYCLES_RENDER_PT_bake"
+    bl_label = "Cycles Baking"
+    bl_context = "object"
+    bl_parent_id = "OBJECT_PT_bake_passes"
     COMPAT_ENGINES = {'CYCLES'}
     @classmethod
     def poll(cls, context):
         scene = context.scene
-        cscene = scene.cycles
         rd = scene.render
-        if rd.use_bake_multires == False and cscene.bake_type in {
-                'NORMAL', 'COMBINED', 'DIFFUSE', 'GLOSSY', 'TRANSMISSION', 'SUBSURFACE'}:
-            return True
+        bp = context.object.bake_passes.active
+        return context.engine in cls.COMPAT_ENGINES \
+               and not rd.use_bake_multires and bp
 
     def draw(self, context):
         layout = self.layout
         layout.use_property_split = True
         layout.use_property_decorate = False  # No animation.
 
-        scene = context.scene
-        cscene = scene.cycles
-        cbk = scene.render.bake
-        rd = scene.render
+        bp = context.object.bake_passes.active
+        cbp = bp.cycles
+
+        layout.prop(cbp, "bake_type")
+        layout.prop(cbp, "samples")
 
         col = layout.column()
 
-        if cscene.bake_type == 'NORMAL':
-            col.prop(cbk, "normal_space", text="Space")
+        if cbp.bake_type == 'NORMAL':
+            col.prop(bp, "normal_space", text="Space")
 
             sub = col.column(align=True)
-            sub.prop(cbk, "normal_r", text="Swizzle R")
-            sub.prop(cbk, "normal_g", text="G")
-            sub.prop(cbk, "normal_b", text="B")
+            sub.prop(bp, "normal_r", text="Swizzle R")
+            sub.prop(bp, "normal_g", text="G")
+            sub.prop(bp, "normal_b", text="B")
 
-        elif cscene.bake_type == 'COMBINED':
+        elif cbp.bake_type == 'COMBINED':
             row = col.row(align=True)
             row.use_property_split = False
-            row.prop(cbk, "use_pass_direct", toggle=True)
-            row.prop(cbk, "use_pass_indirect", toggle=True)
+            row.prop(cbp, "use_pass_direct", toggle=True)
+            row.prop(cbp, "use_pass_indirect", toggle=True)
 
             flow = col.grid_flow(row_major=False, columns=0, even_columns=False, even_rows=False, align=True)
 
-            flow.active = cbk.use_pass_direct or cbk.use_pass_indirect
-            flow.prop(cbk, "use_pass_diffuse")
-            flow.prop(cbk, "use_pass_glossy")
-            flow.prop(cbk, "use_pass_transmission")
-            flow.prop(cbk, "use_pass_subsurface")
-            flow.prop(cbk, "use_pass_ambient_occlusion")
-            flow.prop(cbk, "use_pass_emi

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list