[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