diff options
Diffstat (limited to 'intern/cycles/blender/blender_sync.cpp')
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index ea5d0a1a3c6..b9d35a02a78 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -118,6 +118,7 @@ void BlenderSync::sync_data(BL::SpaceView3D b_v3d) { sync_integrator(); sync_film(); + sync_render_layer(b_v3d); sync_shaders(); sync_objects(b_v3d); } @@ -172,6 +173,29 @@ void BlenderSync::sync_film() filter->tag_update(scene); } +/* Render Layer */ + +void BlenderSync::sync_render_layer(BL::SpaceView3D b_v3d) +{ + if(b_v3d) { + render_layer.scene_layer = get_layer(b_v3d.layers()); + render_layer.layer = render_layer.scene_layer; + render_layer.material_override = PointerRNA_NULL; + } + else { + BL::RenderSettings r = b_scene.render(); + BL::RenderSettings::layers_iterator b_rlay; + + for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) { + render_layer.scene_layer = get_layer(b_scene.layers()); + render_layer.layer = get_layer(b_rlay->layers()); + render_layer.material_override = b_rlay->material_override(); + + break; /* single layer for now */ + } + } +} + /* Scene Parameters */ SceneParams BlenderSync::get_scene_params(BL::Scene b_scene) |