Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/blender/addon/version_update.py')
-rw-r--r--intern/cycles/blender/addon/version_update.py53
1 files changed, 45 insertions, 8 deletions
diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py
index dc28bc647b5..922ea9d9d7f 100644
--- a/intern/cycles/blender/addon/version_update.py
+++ b/intern/cycles/blender/addon/version_update.py
@@ -271,6 +271,40 @@ def custom_bake_remap(scene):
scene.render.bake.use_pass_indirect = False
+def ambient_occlusion_node_relink(material, nodetree, traversed):
+ if nodetree in traversed:
+ return
+ traversed.add(nodetree)
+
+ for node in nodetree.nodes:
+ if node.bl_idname == 'ShaderNodeAmbientOcclusion':
+ node.samples = 1
+ node.only_local = False
+ node.inputs['Distance'].default_value = 0.0
+ elif node.bl_idname == 'ShaderNodeGroup':
+ ambient_occlusion_node_relink(material, node.node_tree, traversed)
+
+ # Gather links to replace
+ ao_links = []
+ for link in nodetree.links:
+ if link.from_node.bl_idname == 'ShaderNodeAmbientOcclusion':
+ ao_links.append(link)
+
+ # Replace links
+ for link in ao_links:
+ from_node = link.from_node
+ to_socket = link.to_socket
+
+ nodetree.links.remove(link)
+ nodetree.links.new(from_node.outputs['Color'], to_socket)
+
+def ambient_occlusion_nodes_relink():
+ traversed = set()
+ for material in bpy.data.materials:
+ if check_is_new_shading_material(material):
+ ambient_occlusion_node_relink(material, material.node_tree, traversed)
+
+
@persistent
def do_versions(self):
if bpy.context.user_preferences.version <= (2, 78, 1):
@@ -428,11 +462,14 @@ def do_versions(self):
# Switch to squared roughness convention
square_roughness_nodes_insert()
- for world in bpy.data.worlds:
- cworld = world.cycles
- # World MIS
- if not cworld.is_property_set("sampling_method"):
- if cworld.get("sample_as_light", False):
- cworld.sampling_method = 'MANUAL'
- else:
- cworld.sampling_method = 'NONE'
+ if bpy.data.version <= (2, 79, 4):
+ for world in bpy.data.worlds:
+ cworld = world.cycles
+ # World MIS
+ if not cworld.is_property_set("sampling_method"):
+ if cworld.get("sample_as_light", False):
+ cworld.sampling_method = 'MANUAL'
+ else:
+ cworld.sampling_method = 'NONE'
+
+ ambient_occlusion_nodes_relink()