Cycles: render layer "Exclude Layers" added.
Scene layers (all object that influence the render, directly or indirectly) are shared between all render layers. However sometimes it's useful to leave out some object influence for a particular render layer. That's what this option allows you to do.
This commit is contained in:
parent
4f158eee25
commit
cd78d3cdce
|
@ -178,10 +178,7 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
|
|||
|
||||
col = split.column()
|
||||
col.prop(scene, "layers", text="Scene")
|
||||
col.label(text="Material:")
|
||||
col.prop(rl, "material_override", text="")
|
||||
|
||||
col.prop(rl, "use_sky", "Use Environment")
|
||||
col.prop(rl, "layers_exclude", text="Exclude")
|
||||
|
||||
col = split.column()
|
||||
col.prop(rl, "layers", text="Layer")
|
||||
|
@ -190,6 +187,15 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
|
|||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Material:")
|
||||
col.prop(rl, "material_override", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(rl, "use_sky", "Use Environment")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Passes:")
|
||||
col.prop(rl, "use_pass_combined")
|
||||
|
|
|
@ -222,7 +222,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
|||
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.scene_layer = get_layer(b_scene.layers()) & ~get_layer(b_rlay->layers_exclude());
|
||||
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;
|
||||
|
|
|
@ -176,12 +176,11 @@ typedef struct SceneRenderLayer {
|
|||
struct Material *mat_override;
|
||||
struct Group *light_override;
|
||||
|
||||
unsigned int lay; /* scene->lay itself has priority over this */
|
||||
unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
|
||||
unsigned int lay; /* scene->lay itself has priority over this */
|
||||
unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
|
||||
unsigned int lay_exclude; /* not used by internal, exclude */
|
||||
int layflag;
|
||||
|
||||
int pad;
|
||||
|
||||
int passflag; /* pass_xor has to be after passflag */
|
||||
int pass_xor;
|
||||
} SceneRenderLayer;
|
||||
|
|
|
@ -1905,6 +1905,13 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
|
|||
if (scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_Scene_glsl_update");
|
||||
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
|
||||
prop = RNA_def_property(srna, "layers_exclude", PROP_BOOLEAN, PROP_LAYER);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "lay_exclude", 1);
|
||||
RNA_def_property_array(prop, 20);
|
||||
RNA_def_property_ui_text(prop, "Exclude Layers", "Exclude scene layers from having any influence");
|
||||
if (scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_Scene_glsl_update");
|
||||
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
|
||||
/* layer options */
|
||||
prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "layflag", SCE_LAY_DISABLE);
|
||||
|
|
|
@ -82,7 +82,7 @@ typedef struct RenderLayer {
|
|||
|
||||
/* copy of RenderData */
|
||||
char name[RE_MAXNAME];
|
||||
unsigned int lay, lay_zmask;
|
||||
unsigned int lay, lay_zmask, lay_exclude;
|
||||
int layflag, passflag, pass_xor;
|
||||
|
||||
struct Material *mat_override;
|
||||
|
|
|
@ -458,6 +458,7 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
|
|||
BLI_strncpy(rl->name, srl->name, sizeof(rl->name));
|
||||
rl->lay= srl->lay;
|
||||
rl->lay_zmask= srl->lay_zmask;
|
||||
rl->lay_exclude= srl->lay_exclude;
|
||||
rl->layflag= srl->layflag;
|
||||
rl->passflag= srl->passflag; // for debugging: srl->passflag|SCE_PASS_RAYHITS;
|
||||
rl->pass_xor= srl->pass_xor;
|
||||
|
|
Loading…
Reference in New Issue