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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-08 00:51:33 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-08 00:51:33 +0400
commit54c7f374c8bc25fbca40ab950c83635fd7f18655 (patch)
tree5cc4da5ac1b463bbf963e6e53e5f90b11338e10e /intern
parent2bfaade0acc7ee421b0e52820a9a33751fc7bbc5 (diff)
Fix #30061: cycles single render layer through python operator parameter not
working.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/blender_session.cpp10
-rw-r--r--intern/cycles/blender/blender_sync.cpp20
-rw-r--r--intern/cycles/blender/blender_sync.h5
3 files changed, 22 insertions, 13 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 5ea3f2ce16e..cc6ba073188 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -191,14 +191,8 @@ void BlenderSession::render()
BL::RenderResult::layers_iterator b_iter;
BL::RenderLayers b_rr_layers(r.ptr);
- int active = 0;
-
/* render each layer */
- for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter, ++active) {
- /* single layer render */
- if(r.use_single_layer())
- active = b_rr_layers.active_index();
-
+ for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter) {
/* set layer */
b_rlay = *b_iter;
@@ -226,7 +220,7 @@ void BlenderSession::render()
session->reset(buffer_params, session_params.samples);
/* update scene */
- sync->sync_data(b_v3d, active);
+ sync->sync_data(b_v3d, b_iter->name().c_str());
/* render */
session->start();
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 29ab0ebef1f..91996d52bea 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -122,7 +122,7 @@ bool BlenderSync::sync_recalc()
return recalc;
}
-void BlenderSync::sync_data(BL::SpaceView3D b_v3d, int layer)
+void BlenderSync::sync_data(BL::SpaceView3D b_v3d, const char *layer)
{
sync_render_layers(b_v3d);
sync_integrator(layer);
@@ -133,7 +133,7 @@ void BlenderSync::sync_data(BL::SpaceView3D b_v3d, int layer)
/* Integrator */
-void BlenderSync::sync_integrator(int layer)
+void BlenderSync::sync_integrator(const char *layer)
{
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
@@ -155,7 +155,20 @@ void BlenderSync::sync_integrator(int layer)
integrator->no_caustics = get_boolean(cscene, "no_caustics");
integrator->seed = get_int(cscene, "seed");
- integrator->layer_flag = render_layers[layer].layer;
+
+ /* render layer */
+ int active_layer = 0;
+
+ if(layer) {
+ for(int i = 0; i < render_layers.size(); i++) {
+ if(render_layers[i].name == layer) {
+ active_layer = i;
+ break;
+ }
+ }
+ }
+
+ integrator->layer_flag = render_layers[active_layer].layer;
if(integrator->modified(previntegrator))
integrator->tag_update(scene);
@@ -208,6 +221,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d)
/* single layer for now */
RenderLayerInfo rlay;
+ rlay.name = b_rlay->name();
rlay.scene_layer = get_layer(b_scene.layers());
rlay.layer = get_layer(b_rlay->layers());
rlay.material_override = b_rlay->material_override();
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index 5e76a0a0b1e..b0bd3004492 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -54,7 +54,7 @@ public:
/* sync */
bool sync_recalc();
- void sync_data(BL::SpaceView3D b_v3d, int layer = 0);
+ void sync_data(BL::SpaceView3D b_v3d, const char *layer = 0);
void sync_camera(int width, int height);
void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height);
@@ -70,7 +70,7 @@ private:
void sync_materials();
void sync_objects(BL::SpaceView3D b_v3d);
void sync_film();
- void sync_integrator(int layer);
+ void sync_integrator(const char *layer);
void sync_view();
void sync_world();
void sync_render_layers(BL::SpaceView3D b_v3d);
@@ -110,6 +110,7 @@ private:
material_override(PointerRNA_NULL)
{}
+ string name;
uint scene_layer;
uint layer;
BL::Material material_override;