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

Brecht Van Lommel noreply at git.blender.org
Sun Feb 17 16:27:21 CET 2019


Commit: c5f13ecbc064a3cb2c57492d7c7075e248be5bda
Author: Brecht Van Lommel
Date:   Sun Feb 17 15:57:34 2019 +0100
Branches: master
https://developer.blender.org/rBc5f13ecbc064a3cb2c57492d7c7075e248be5bda

Merge branch 'blender2.7'

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



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

diff --cc intern/cycles/blender/addon/version_update.py
index 178f1162568,f3d60d62e02..76731e1f05a
--- a/intern/cycles/blender/addon/version_update.py
+++ b/intern/cycles/blender/addon/version_update.py
@@@ -22,50 -22,39 +22,39 @@@ import mat
  from bpy.app.handlers import persistent
  
  
- def foreach_notree_node(nodetree, callback, traversed):
-     if nodetree in traversed:
-         return
-     traversed.add(nodetree)
+ def foreach_cycles_nodetree_group(nodetree, traversed):
      for node in nodetree.nodes:
-         callback(node)
          if node.bl_idname == 'ShaderNodeGroup':
-             foreach_notree_node(node.node_tree, callback, traversed)
+             group = node.node_tree
+             if group and group not in traversed:
+                 traversed.add(group)
+                 yield group, group.library
+                 yield from foreach_cycles_nodetree_group(group, traversed)
  
  
- def foreach_cycles_node(callback):
+ def foreach_cycles_nodetree():
      traversed = set()
+ 
      for material in bpy.data.materials:
-         if material.node_tree:
-             foreach_notree_node(
-                 material.node_tree,
-                 callback,
-                 traversed,
-             )
+         nodetree = material.node_tree
+         if nodetree:
+             yield nodetree, material.library
+             yield from foreach_cycles_nodetree_group(nodetree, traversed)
+ 
      for world in bpy.data.worlds:
-         if world.node_tree:
-             foreach_notree_node(
-                 world.node_tree,
-                 callback,
-                 traversed,
-             )
-     for light in bpy.data.lights:
-         if light.node_tree:
-             foreach_notree_node(
-                 light.node_tree,
-                 callback,
-                 traversed,
-             )
+         nodetree = world.node_tree
+         if nodetree:
+             yield nodetree, world.library
+             foreach_cycles_nodetree_group(nodetree, traversed)
  
 -    for lamp in bpy.data.lamps:
 -        nodetree = lamp.node_tree
++    for light in bpy.data.lights:
++        nodetree = light.node_tree
+         if nodetree:
 -            yield nodetree, lamp.library
++            yield nodetree, light.library
+             foreach_cycles_nodetree_group(nodetree, traversed)
  
- def displacement_node_insert(material, nodetree, traversed):
-     if nodetree in traversed:
-         return
-     traversed.add(nodetree)
- 
-     for node in nodetree.nodes:
-         if node.bl_idname == 'ShaderNodeGroup':
-             displacement_node_insert(material, node.node_tree, traversed)
  
+ def displacement_node_insert(nodetree):
      # Gather links to replace
      displacement_links = []
      for link in nodetree.links:
@@@ -95,13 -84,7 +84,6 @@@
          nodetree.links.new(node.outputs['Displacement'], to_socket)
  
  
- def displacement_nodes_insert():
-     traversed = set()
-     for material in bpy.data.materials:
-         if material.node_tree:
-             displacement_node_insert(material, material.node_tree, traversed)
- 
--
  def displacement_principled_nodes(node):
      if node.bl_idname == 'ShaderNodeDisplacement':
          if node.space != 'WORLD':
@@@ -272,18 -236,11 +235,11 @@@ def ambient_occlusion_node_relink(nodet
          nodetree.links.new(from_node.outputs['Color'], to_socket)
  
  
- def ambient_occlusion_nodes_relink():
-     traversed = set()
-     for material in bpy.data.materials:
-         if material.node_tree:
-             ambient_occlusion_node_relink(material, material.node_tree, traversed)
- 
- 
  @persistent
  def do_versions(self):
 -    if bpy.context.user_preferences.version <= (2, 78, 1):
 -        prop = bpy.context.user_preferences.addons[__package__].preferences
 -        system = bpy.context.user_preferences.system
 +    if bpy.context.preferences.version <= (2, 78, 1):
 +        prop = bpy.context.preferences.addons[__package__].preferences
 +        system = bpy.context.preferences.system
          if not prop.is_property_set("compute_device_type"):
              # Device might not currently be available so this can fail
              try:
@@@ -304,168 -261,186 +260,199 @@@
      if not bpy.data.is_saved:
          return
  
-     # Clamp Direct/Indirect separation in 270
-     if bpy.data.version <= (2, 70, 0):
-         for scene in bpy.data.scenes:
-             cscene = scene.cycles
-             sample_clamp = cscene.get("sample_clamp", False)
-             if (sample_clamp and
-                 not cscene.is_property_set("sample_clamp_direct") and
-                     not cscene.is_property_set("sample_clamp_indirect")):
- 
-                 cscene.sample_clamp_direct = sample_clamp
-                 cscene.sample_clamp_indirect = sample_clamp
+     # Map of versions used by libraries.
+     library_versions = {}
+     library_versions[bpy.data.version] = [None]
+     for library in bpy.data.libraries:
+         library_versions.setdefault(library.version, []).append(library)
  
-     # Change of Volume Bounces in 271
-     if bpy.data.version <= (2, 71, 0):
-         for scene in bpy.data.scenes:
-             cscene = scene.cycles
-             if not cscene.is_property_set("volume_bounces"):
-                 cscene.volume_bounces = 1
+     # Do versioning per library, since they might have different versions.
+     max_need_versioning = (2, 79, 6)
+     for version, libraries in library_versions.items():
+         if version > max_need_versioning:
+             continue
  
-     # Caustics Reflective/Refractive separation in 272
-     if bpy.data.version <= (2, 72, 0):
+         # Scenes
          for scene in bpy.data.scenes:
-             cscene = scene.cycles
-             if (cscene.get("no_caustics", False) and
-                 not cscene.is_property_set("caustics_reflective") and
+             if scene.library not in libraries:
+                 continue
+ 
+             # Clamp Direct/Indirect separation in 270
+             if version <= (2, 70, 0):
+                 cscene = scene.cycles
+                 sample_clamp = cscene.get("sample_clamp", False)
 -                if (
 -                    sample_clamp and
++                if (sample_clamp and
+                     not cscene.is_property_set("sample_clamp_direct") and
 -                        not cscene.is_property_set("sample_clamp_indirect")
 -                ):
 -
++                        not cscene.is_property_set("sample_clamp_indirect")):
+                     cscene.sample_clamp_direct = sample_clamp
+                     cscene.sample_clamp_indirect = sample_clamp
+ 
+             # Change of Volume Bounces in 271
+             if version <= (2, 71, 0):
+                 cscene = scene.cycles
+                 if not cscene.is_property_set("volume_bounces"):
+                     cscene.volume_bounces = 1
+ 
+             # Caustics Reflective/Refractive separation in 272
+             if version <= (2, 72, 0):
+                 cscene = scene.cycles
 -                if (
 -                    cscene.get("no_caustics", False) and
++                if (cscene.get("no_caustics", False) and
+                     not cscene.is_property_set("caustics_reflective") and
 -                    not cscene.is_property_set("caustics_refractive")
 -                ):
 +                    not cscene.is_property_set("caustics_refractive")):
- 
-                 cscene.caustics_reflective = False
-                 cscene.caustics_refractive = False
- 
-     # Euler order was ZYX in previous versions.
-     if bpy.data.version <= (2, 73, 4):
-         foreach_cycles_node(mapping_node_order_flip)
- 
-     if bpy.data.version <= (2, 76, 5):
-         foreach_cycles_node(vector_curve_node_remap)
- 
-     # Baking types changed
-     if bpy.data.version <= (2, 76, 6):
-         for scene in bpy.data.scenes:
-             custom_bake_remap(scene)
- 
-     # Several default changes for 2.77
-     if bpy.data.version <= (2, 76, 8):
-         for scene in bpy.data.scenes:
-             cscene = scene.cycles
- 
-             # Samples
-             if not cscene.is_property_set("samples"):
-                 cscene.samples = 10
- 
-             # Preview Samples
-             if not cscene.is_property_set("preview_samples"):
-                 cscene.preview_samples = 10
- 
-             # Filter
-             if not cscene.is_property_set("filter_type"):
-                 cscene.pixel_filter_type = 'GAUSSIAN'
- 
-             # Tile Order
-             if not cscene.is_property_set("tile_order"):
-                 cscene.tile_order = 'CENTER'
- 
+                     cscene.caustics_reflective = False
+                     cscene.caustics_refractive = False
+ 
+             # Baking types changed
+             if version <= (2, 76, 6):
+                 custom_bake_remap(scene)
+ 
+             # Several default changes for 2.77
+             if version <= (2, 76, 8):
+                 cscene = scene.cycles
+ 
+                 # Samples
+                 if not cscene.is_property_set("samples"):
+                     cscene.samples = 10
+ 
+                 # Preview Samples
+                 if not cscene.is_property_set("preview_samples"):
+                     cscene.preview_samples = 10
+ 
+                 # Filter
+                 if not cscene.is_property_set("filter_type"):
+                     cscene.pixel_filter_type = 'GAUSSIAN'
+ 
+                 # Tile Order
+                 if not cscene.is_property_set("tile_order"):
+                     cscene.tile_order = 'CENTER'
+ 
+             if version <= (2, 76, 10):
+                 cscene = scene.cycles
+                 if cscene.is_property_set("filter_type"):
+                     if not cscene.is_property_set("pixel_filter_type"):
+                         cscene.pixel_filter_type = cscene.filter_type
+                     if cscene.filter_type == 'BLACKMAN_HARRIS':
+                         cscene.filter_type = 'GAUSSIAN'
+ 
+             if version <= (2, 78, 2):
+                 cscene = scene.cycles
+                 if not cscene.is_property_set("light_sampling_threshold"):
+                     cscene.light_sampling_threshold = 0.0
+ 
+  

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list