Cycles: Fallback to bottom-top tile order when rendering from the command line
[blender-staging.git] / intern / cycles / blender / addon / __init__.py
1 #
2 # Copyright 2011-2013 Blender Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16
17 # <pep8 compliant>
18
19 bl_info = {
20     "name": "Cycles Render Engine",
21     "author": "",
22     "blender": (2, 70, 0),
23     "location": "Info header, render engine menu",
24     "description": "Cycles Render Engine integration",
25     "warning": "",
26     "wiki_url": "http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles",
27     "tracker_url": "",
28     "support": 'OFFICIAL',
29     "category": "Render"}
30
31 import bpy
32
33 from . import engine
34 from . import version_update
35
36
37 class CyclesRender(bpy.types.RenderEngine):
38     bl_idname = 'CYCLES'
39     bl_label = "Cycles Render"
40     bl_use_shading_nodes = True
41     bl_use_preview = True
42     bl_use_exclude_layers = True
43     bl_use_save_buffers = True
44
45     def __init__(self):
46         self.session = None
47
48     def __del__(self):
49         engine.free(self)
50
51     # final render
52     def update(self, data, scene):
53         if self.is_preview:
54             if not self.session:
55                 cscene = bpy.context.scene.cycles
56                 use_osl = cscene.shading_system and cscene.device == 'CPU'
57
58                 engine.create(self, data, scene,
59                               None, None, None, use_osl)
60         else:
61             if not self.session:
62                 engine.create(self, data, scene, background=bpy.app.background)
63             else:
64                 engine.reset(self, data, scene)
65
66         engine.update(self, data, scene)
67
68     def render(self, scene):
69         engine.render(self)
70
71     def bake(self, scene, obj, pass_type, pixel_array, num_pixels, depth, result):
72         engine.bake(self, obj, pass_type, pixel_array, num_pixels, depth, result)
73
74     # viewport render
75     def view_update(self, context):
76         if not self.session:
77             engine.create(self, context.blend_data, context.scene,
78                           context.region, context.space_data, context.region_data)
79         engine.update(self, context.blend_data, context.scene)
80
81     def view_draw(self, context):
82         engine.draw(self, context.region, context.space_data, context.region_data)
83
84     def update_script_node(self, node):
85         if engine.with_osl():
86             from . import osl
87             osl.update_script_node(node, self.report)
88         else:
89             self.report({'ERROR'}, "OSL support disabled in this build.")
90
91
92 def register():
93     from . import ui
94     from . import properties
95     from . import presets
96
97     engine.init()
98
99     properties.register()
100     ui.register()
101     presets.register()
102     bpy.utils.register_module(__name__)
103
104     bpy.app.handlers.version_update.append(version_update.do_versions)
105
106
107 def unregister():
108     from . import ui
109     from . import properties
110     from . import presets
111
112     bpy.app.handlers.version_update.remove(version_update.do_versions)
113
114     ui.unregister()
115     properties.unregister()
116     presets.unregister()
117     bpy.utils.unregister_module(__name__)