[Bf-blender-cvs] [3f8e2637092] master: Merge branch 'blender2.7'

Brecht Van Lommel noreply at git.blender.org
Mon Feb 11 13:41:30 CET 2019


Commit: 3f8e26370925c94e07f0bbdd51cddad6601fa125
Author: Brecht Van Lommel
Date:   Mon Feb 11 13:37:45 2019 +0100
Branches: master
https://developer.blender.org/rB3f8e26370925c94e07f0bbdd51cddad6601fa125

Merge branch 'blender2.7'

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



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

diff --cc intern/cycles/blender/addon/operators.py
index 00000000000,c39aa386203..ed7f5c6b98c
mode 000000,100644..100644
--- a/intern/cycles/blender/addon/operators.py
+++ b/intern/cycles/blender/addon/operators.py
@@@ -1,0 -1,133 +1,133 @@@
+ #
+ # Copyright 2011-2019 Blender Foundation
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ #
+ 
+ # <pep8 compliant>
+ 
+ import bpy
+ from bpy.types import Operator
+ from bpy.props import StringProperty
+ 
+ 
+ class CYCLES_OT_use_shading_nodes(Operator):
+     """Enable nodes on a material, world or light"""
+     bl_idname = "cycles.use_shading_nodes"
+     bl_label = "Use Nodes"
+ 
+     @classmethod
+     def poll(cls, context):
+         return (getattr(context, "material", False) or getattr(context, "world", False) or
+                 getattr(context, "light", False))
+ 
+     def execute(self, context):
+         if context.material:
+             context.material.use_nodes = True
+         elif context.world:
+             context.world.use_nodes = True
+         elif context.light:
+             context.light.use_nodes = True
+ 
+         return {'FINISHED'}
+ 
+ 
+ class CYCLES_OT_denoise_animation(Operator):
+     """Denoise rendered animation sequence using current scene and view """ \
+     """layer settings. Requires denoising data passes and output to """ \
+     """OpenEXR multilayer files"""
+     bl_idname = "cycles.denoise_animation"
+     bl_label = "Denoise Animation"
+ 
 -    input_filepath = StringProperty(
++    input_filepath: StringProperty(
+         name='Input Filepath',
+         description='File path for frames to denoise. If not specified, uses the render file path from the scene',
+         default='',
+         subtype='FILE_PATH')
+ 
 -    output_filepath = StringProperty(
++    output_filepath: StringProperty(
+         name='Output Filepath',
+         description='If not specified, renders will be denoised in-place',
+         default='',
+         subtype='FILE_PATH')
+ 
+     def execute(self, context):
+         import os
+ 
 -        preferences = context.user_preferences
++        preferences = context.preferences
+         scene = context.scene
 -        render_layer = scene.render.layers.active
++        view_layer = context.view_layer
+ 
+         in_filepath = self.input_filepath
+         out_filepath = self.output_filepath
+ 
+         if in_filepath == '':
+             in_filepath = scene.render.filepath
+         if out_filepath == '':
+             out_filepath = in_filepath
+ 
+         # Backup since we will overwrite the scene path temporarily
+         original_filepath = scene.render.filepath
+ 
+         # Expand filepaths for each frame so we match Blender render output exactly.
+         in_filepaths = []
+         out_filepaths = []
+ 
+         for frame in range(scene.frame_start, scene.frame_end + 1):
+             scene.render.filepath = in_filepath
+             filepath = scene.render.frame_path(frame=frame)
+             in_filepaths.append(filepath)
+ 
+             if not os.path.isfile(filepath):
+                 scene.render.filepath = original_filepath
+                 self.report({'ERROR'}, f"Frame '{filepath}' not found, animation must be complete.")
+                 return {'CANCELLED'}
+ 
+             scene.render.filepath = out_filepath
+             filepath = scene.render.frame_path(frame=frame)
+             out_filepaths.append(filepath)
+ 
+         scene.render.filepath = original_filepath
+ 
+         # Run denoiser
+         # TODO: support cancel and progress reports.
+         import _cycles
+         try:
+             _cycles.denoise(preferences.as_pointer(),
+                             scene.as_pointer(),
 -                            render_layer.as_pointer(),
++                            view_layer.as_pointer(),
+                             input=in_filepaths,
+                             output=out_filepaths)
+         except Exception as e:
+             self.report({'ERROR'}, str(e))
+             return {'FINISHED'}
+ 
+         self.report({'INFO'}, "Denoising completed.")
+         return {'FINISHED'}
+ 
+ 
+ classes = (
+     CYCLES_OT_use_shading_nodes,
+     CYCLES_OT_denoise_animation
+ )
+ 
+ def register():
+     from bpy.utils import register_class
+     for cls in classes:
+         register_class(cls)
+ 
+ 
+ def unregister():
+     from bpy.utils import unregister_class
+     for cls in classes:
+         unregister_class(cls)
diff --cc intern/cycles/blender/addon/properties.py
index c60db9ffc2b,1106923f529..c14d7014234
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@@ -1236,163 -1219,209 +1236,169 @@@ def update_render_passes(self, context)
  
  
  class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
 -    @classmethod
 -    def register(cls):
 -        bpy.types.SceneRenderLayer.cycles = PointerProperty(
 -            name="Cycles SceneRenderLayer Settings",
 -            description="Cycles SceneRenderLayer Settings",
 -            type=cls,
 -        )
 -        cls.pass_debug_bvh_traversed_nodes = BoolProperty(
 -            name="Debug BVH Traversed Nodes",
 -            description="Store Debug BVH Traversed Nodes pass",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.pass_debug_bvh_traversed_instances = BoolProperty(
 -            name="Debug BVH Traversed Instances",
 -            description="Store Debug BVH Traversed Instances pass",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.pass_debug_bvh_intersections = BoolProperty(
 -            name="Debug BVH Intersections",
 -            description="Store Debug BVH Intersections",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.pass_debug_ray_bounces = BoolProperty(
 -            name="Debug Ray Bounces",
 -            description="Store Debug Ray Bounces pass",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.pass_debug_render_time = BoolProperty(
 -            name="Debug Render Time",
 -            description="Render time in milliseconds per sample and pixel",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.use_pass_volume_direct = BoolProperty(
 -            name="Volume Direct",
 -            description="Deliver direct volumetric scattering pass",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.use_pass_volume_indirect = BoolProperty(
 -            name="Volume Indirect",
 -            description="Deliver indirect volumetric scattering pass",
 -            default=False,
 -            update=update_render_passes,
 -        )
  
 -        cls.use_denoising = BoolProperty(
 -            name="Use Denoising",
 -            description="Denoise the rendered image",
 -            default=False,
 -            update=update_render_passes,
 -        )
 -        cls.denoising_diffuse_direct = BoolProperty(
 -            name="Diffuse Direct",
 -            description="Denoise the direct diffuse lighting",
 -            default=True,
 -        )
 -        cls.denoising_diffuse_indirect = BoolProperty(
 -            name="Diffuse Indirect",
 -            description="Denoise the indirect diffuse lighting",
 -            default=True,
 -        )
 -        cls.denoising_glossy_direct = BoolProperty(
 -            name="Glossy Direct",
 -            description="Denoise the direct glossy lighting",
 -            default=True,
 -        )
 -        cls.denoising_glossy_indirect = BoolProperty(
 -            name="Glossy Indirect",
 -            description="Denoise the indirect glossy lighting",
 -            default=True,
 -        )
 -        cls.denoising_transmission_direct = BoolProperty(
 -            name="Transmission Direct",
 -            description="Denoise the direct transmission lighting",
 -            default=True,
 -        )
 -        cls.denoising_transmission_indirect = BoolProperty(
 -            name="Transmission Indirect",
 -            description="Denoise the indirect transmission lighting",
 -            default=True,
 -        )
 -        cls.denoising_subsurface_direct = BoolProperty(
 -            name="Subsurface Direct",
 -            description="Denoise the direct subsurface lighting",
 -            default=True,
 -        )
 -        cls.denoising_subsurface_indirect = BoolProperty(
 -            name="Subsurface Indirect",
 -            description="Denoise the indirect subsurface lighting",
 -            default=True,
 -        )
 -        cls.denoising_strength = FloatProperty(
 -            name="Denoising Strength",
 -            description="Controls neighbor pixel weighting for the denoising filter (lower values preserve more detail, but aren't as smooth)",
 -            min=0.0, max=1.0,
 -            default=0.5,
 -        )
 -        cls.denoising_feature_strength = FloatProperty(
 -            name="Denoising Feature Strength",
 -            description="Controls removal of noisy image feature passes (lower values preserve more detail, but aren't as smooth)",
 -            min=0.0, max=1.0,
 -            default=0.5,
 -        )
 -        cls.denoising_radius = IntProperty(
 -            name="Denoising Radius",
 -            description="Size of the image area that's used to denoise a pixel (higher values are smoother, but might lose detail and are slower)",
 -            min=1, max=25,
 -            default=8,
 -        )
 -        cls.denoising_relative_pca = BoolProperty(
 -            name="Relative filter",
 -            

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list