forked from bartvdbraak/blender
Cycles: add render layer use environment option to disable world lighting on
individual render layers.
This commit is contained in:
parent
11d24cb58f
commit
88a261c13b
@ -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:")
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
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);
|
||||
}
|
||||
|
@ -32,6 +32,8 @@ public:
|
||||
float ao_factor;
|
||||
float ao_distance;
|
||||
|
||||
bool use;
|
||||
|
||||
bool transparent;
|
||||
bool need_update;
|
||||
|
||||
|
@ -158,6 +158,7 @@ public:
|
||||
int default_light;
|
||||
int default_background;
|
||||
int default_holdout;
|
||||
int default_empty;
|
||||
|
||||
/* device */
|
||||
Device *device;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user