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-04-13 16:58:12 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-04-13 16:58:12 +0400
commit88a261c13b8ac203e2a7ea936cd8b277b8a07c9f (patch)
tree1648b66a0eff11279a52c07cee7f94d4d742b57d /intern
parent11d24cb58f527884bfbb36fdff70c016d50c919c (diff)
Cycles: add render layer use environment option to disable world lighting on
individual render layers.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/addon/ui.py2
-rw-r--r--intern/cycles/blender/blender_shader.cpp1
-rw-r--r--intern/cycles/blender/blender_sync.cpp2
-rw-r--r--intern/cycles/blender/blender_sync.h4
-rw-r--r--intern/cycles/render/background.cpp8
-rw-r--r--intern/cycles/render/background.h2
-rw-r--r--intern/cycles/render/scene.h1
-rw-r--r--intern/cycles/render/shader.cpp11
8 files changed, 29 insertions, 2 deletions
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 47aba845ba3..4a8b639b390 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -181,6 +181,8 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
col.label(text="Material:")
col.prop(rl, "material_override", text="")
+ col.prop(rl, "use_sky", "Use Environment")
+
col = split.column()
col.prop(rl, "layers", text="Layer")
col.label(text="Mask Layers:")
diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 74d41208287..52d97753db3 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -728,6 +728,7 @@ void BlenderSync::sync_world()
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
background->transparent = get_boolean(cscene, "film_transparent");
+ background->use = render_layer.use_background;
if(background->modified(prevbackground))
background->tag_update(scene);
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 066e5b776b8..5a286298774 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -207,6 +207,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
render_layer.layer = render_layer.scene_layer;
render_layer.holdout_layer = 0;
render_layer.material_override = PointerRNA_NULL;
+ render_layer.use_background = true;
return;
}
}
@@ -224,6 +225,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
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();
+ render_layer.use_background = b_rlay->use_sky();
}
first_layer = false;
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index bfb530c9f99..db26f304d84 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -107,7 +107,8 @@ private:
struct RenderLayerInfo {
RenderLayerInfo()
: scene_layer(0), layer(0), holdout_layer(0),
- material_override(PointerRNA_NULL)
+ material_override(PointerRNA_NULL),
+ use_background(true)
{}
string name;
@@ -115,6 +116,7 @@ private:
uint layer;
uint holdout_layer;
BL::Material material_override;
+ bool use_background;
} render_layer;
};
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp
index 919bd83f195..76d26dd34b5 100644
--- a/intern/cycles/render/background.cpp
+++ b/intern/cycles/render/background.cpp
@@ -35,6 +35,8 @@ Background::Background()
ao_factor = 0.0f;
ao_distance = FLT_MAX;
+ use = true;
+
transparent = false;
need_update = true;
}
@@ -57,7 +59,10 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene
kbackground->ao_distance = ao_distance;
kbackground->transparent = transparent;
- kbackground->shader = scene->shader_manager->get_shader_id(scene->default_background);
+ if(use)
+ kbackground->shader = scene->shader_manager->get_shader_id(scene->default_background);
+ else
+ kbackground->shader = scene->shader_manager->get_shader_id(scene->default_empty);
need_update = false;
}
@@ -69,6 +74,7 @@ void Background::device_free(Device *device, DeviceScene *dscene)
bool Background::modified(const Background& background)
{
return !(transparent == background.transparent &&
+ use == background.use &&
ao_factor == background.ao_factor &&
ao_distance == background.ao_distance);
}
diff --git a/intern/cycles/render/background.h b/intern/cycles/render/background.h
index 40dacd9d6b1..3c1cd3915e5 100644
--- a/intern/cycles/render/background.h
+++ b/intern/cycles/render/background.h
@@ -32,6 +32,8 @@ public:
float ao_factor;
float ao_distance;
+ bool use;
+
bool transparent;
bool need_update;
diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h
index 0a4f0ef5d95..af4301b1cd9 100644
--- a/intern/cycles/render/scene.h
+++ b/intern/cycles/render/scene.h
@@ -158,6 +158,7 @@ public:
int default_light;
int default_background;
int default_holdout;
+ int default_empty;
/* device */
Device *device;
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 2afa1dd5037..c1f7b3518d2 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -272,6 +272,17 @@ void ShaderManager::add_default(Scene *scene)
scene->shaders.push_back(shader);
scene->default_holdout = scene->shaders.size() - 1;
}
+
+ /* default empty */
+ {
+ graph = new ShaderGraph();
+
+ shader = new Shader();
+ shader->name = "default_empty";
+ shader->graph = graph;
+ scene->shaders.push_back(shader);
+ scene->default_empty = scene->shaders.size() - 1;
+ }
}
CCL_NAMESPACE_END