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-03-28 13:07:35 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-03-28 13:07:35 +0400
commitd87995a6b1d03aaa647c9233ca2e6469f2ef7805 (patch)
treedb84209b2664e7f58397f368ba60e086b37ac021 /intern
parent33740c5eb56884929b70a394e5b3dc7ceb0cfc91 (diff)
Cycles: add rendered draw mode option in 3d view header to show the active
render layer rather than the viewport layers.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/addon/properties.py5
-rw-r--r--intern/cycles/blender/addon/ui.py2
-rw-r--r--intern/cycles/blender/blender_sync.cpp51
3 files changed, 39 insertions, 19 deletions
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 86f726f7828..da4de1aeafd 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -74,6 +74,11 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
description="Pause all viewport preview renders",
default=False,
)
+ cls.preview_active_layer = BoolProperty(
+ name="Preview Active Layer",
+ description="Preview active render layer in viewport",
+ default=False,
+ )
cls.no_caustics = BoolProperty(
name="No Caustics",
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 39f55aafa39..3b78be6c6c9 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -804,7 +804,9 @@ def draw_pause(self, context):
if view.viewport_shade == 'RENDERED':
cscene = scene.cycles
+ layername = scene.render.layers.active.name
layout.prop(cscene, "preview_pause", icon="PAUSE", text="")
+ layout.prop(cscene, "preview_active_layer", icon="RENDERLAYERS", text=layername)
def get_panels():
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 9fb2c6e1328..e88f74eea68 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -189,29 +189,42 @@ void BlenderSync::sync_film()
void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
{
+ string layername;
+
+ /* 3d view */
if(b_v3d) {
- render_layer.scene_layer = get_layer(b_v3d.layers());
- render_layer.layer = render_layer.scene_layer;
- render_layer.holdout_layer = 0;
- render_layer.material_override = PointerRNA_NULL;
+ PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
+
+ if(RNA_boolean_get(&cscene, "preview_active_layer")) {
+ BL::RenderLayers layers(b_scene.render().ptr);
+ layername = layers.active().name();
+ layer = layername.c_str();
+ }
+ else {
+ render_layer.scene_layer = get_layer(b_v3d.layers());
+ render_layer.layer = render_layer.scene_layer;
+ render_layer.holdout_layer = 0;
+ render_layer.material_override = PointerRNA_NULL;
+ return;
+ }
}
- else {
- BL::RenderSettings r = b_scene.render();
- BL::RenderSettings::layers_iterator b_rlay;
- bool first_layer = true;
-
- for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) {
- if((!layer && first_layer) || (layer && b_rlay->name() == layer)) {
- render_layer.name = b_rlay->name();
- render_layer.scene_layer = get_layer(b_scene.layers());
- render_layer.layer = get_layer(b_rlay->layers());
- render_layer.holdout_layer = get_layer(b_rlay->layers_zmask());
- render_layer.layer |= render_layer.holdout_layer;
- render_layer.material_override = b_rlay->material_override();
- }
- first_layer = false;
+ /* render layer */
+ BL::RenderSettings r = b_scene.render();
+ BL::RenderSettings::layers_iterator b_rlay;
+ bool first_layer = true;
+
+ for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) {
+ if((!layer && first_layer) || (layer && b_rlay->name() == layer)) {
+ render_layer.name = b_rlay->name();
+ render_layer.scene_layer = get_layer(b_scene.layers());
+ render_layer.layer = get_layer(b_rlay->layers());
+ render_layer.holdout_layer = get_layer(b_rlay->layers_zmask());
+ render_layer.layer |= render_layer.holdout_layer;
+ render_layer.material_override = b_rlay->material_override();
}
+
+ first_layer = false;
}
}