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.py139
1 files changed, 139 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py
index 2fbb01ba5b8..221b1437128 100644
--- a/intern/cycles/blender/addon/version_update.py
+++ b/intern/cycles/blender/addon/version_update.py
@@ -100,6 +100,77 @@ def mapping_node_order_flip(node):
node.rotation = quat.to_euler('XYZ')
+def vector_curve_node_remap(node):
+ """
+ Remap values of vector curve node from normalized to absolute values
+ """
+ from mathutils import Vector
+ if node.bl_idname == 'ShaderNodeVectorCurve':
+ node.mapping.use_clip = False
+ for curve in node.mapping.curves:
+ for point in curve.points:
+ point.location.x = (point.location.x * 2.0) - 1.0
+ point.location.y = (point.location.y - 0.5) * 2.0
+ node.mapping.update()
+
+
+def custom_bake_remap(scene):
+ """
+ Remap bake types into the new types and set the flags accordingly
+ """
+ bake_lookup = (
+ 'COMBINED',
+ 'AO',
+ 'SHADOW',
+ 'NORMAL',
+ 'UV',
+ 'EMIT',
+ 'ENVIRONMENT',
+ 'DIFFUSE_DIRECT',
+ 'DIFFUSE_INDIRECT',
+ 'DIFFUSE_COLOR',
+ 'GLOSSY_DIRECT',
+ 'GLOSSY_INDIRECT',
+ 'GLOSSY_COLOR',
+ 'TRANSMISSION_DIRECT',
+ 'TRANSMISSION_INDIRECT',
+ 'TRANSMISSION_COLOR',
+ 'SUBSURFACE_DIRECT',
+ 'SUBSURFACE_INDIRECT',
+ 'SUBSURFACE_COLOR')
+
+ diffuse_direct_idx = bake_lookup.index('DIFFUSE_DIRECT')
+
+ cscene = scene.cycles
+
+ # Old bake type
+ bake_type_idx = cscene.get("bake_type")
+
+ if bake_type_idx is None:
+ cscene.bake_type = 'COMBINED'
+ return
+
+ # File doesn't need versioning
+ if bake_type_idx < diffuse_direct_idx:
+ return
+
+ # File needs versioning
+ bake_type = bake_lookup[bake_type_idx]
+ cscene.bake_type, end = bake_type.split('_')
+
+ if end == 'DIRECT':
+ scene.render.bake.use_pass_indirect = False
+ scene.render.bake.use_pass_color = False
+
+ elif end == 'INDIRECT':
+ scene.render.bake.use_pass_direct = False
+ scene.render.bake.use_pass_color = False
+
+ elif end == 'COLOR':
+ scene.render.bake.use_pass_direct = False
+ scene.render.bake.use_pass_indirect = False
+
+
@persistent
def do_versions(self):
# We don't modify startup file because it assumes to
@@ -140,3 +211,71 @@ def do_versions(self):
# 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'
+
+ for lamp in bpy.data.lamps:
+ clamp = lamp.cycles
+
+ # MIS
+ if not clamp.is_property_set("use_multiple_importance_sampling"):
+ clamp.use_multiple_importance_sampling = False
+
+ for mat in bpy.data.materials:
+ cmat = mat.cycles
+
+ # Volume Sampling
+ if not cmat.is_property_set("volume_sampling"):
+ cmat.volume_sampling = 'DISTANCE'
+
+ if bpy.data.version <= (2, 76, 9):
+ for world in bpy.data.worlds:
+ cworld = world.cycles
+
+ # World MIS
+ if not cworld.is_property_set("sample_as_light"):
+ cworld.sample_as_light = False
+
+ # World MIS Samples
+ if not cworld.is_property_set("samples"):
+ cworld.samples = 4
+
+ # World MIS Resolution
+ if not cworld.is_property_set("sample_map_resolution"):
+ cworld.sample_map_resolution = 256
+
+ if bpy.data.version <= (2, 76, 10):
+ for scene in bpy.data.scenes:
+ 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'