Cycles: per render layer Samples control, leaving it to 0 will use the common
scene setting.
This commit is contained in:
@@ -192,6 +192,7 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
|
||||
col.prop(rl, "material_override", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(rl, "samples")
|
||||
col.prop(rl, "use_sky", "Use Environment")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@@ -218,12 +218,13 @@ void BlenderSession::render()
|
||||
scene->film->passes = passes;
|
||||
scene->film->tag_update(scene);
|
||||
|
||||
/* update session */
|
||||
session->reset(buffer_params, session_params.samples);
|
||||
|
||||
/* update scene */
|
||||
sync->sync_data(b_v3d, b_iter->name().c_str());
|
||||
|
||||
/* update session */
|
||||
int samples = sync->get_layer_samples();
|
||||
session->reset(buffer_params, (samples == 0)? session_params.samples: samples);
|
||||
|
||||
/* render */
|
||||
session->start();
|
||||
session->wait();
|
||||
|
||||
@@ -210,6 +210,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
||||
render_layer.holdout_layer = 0;
|
||||
render_layer.material_override = PointerRNA_NULL;
|
||||
render_layer.use_background = true;
|
||||
render_layer.samples = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -228,6 +229,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
||||
render_layer.layer |= render_layer.holdout_layer;
|
||||
render_layer.material_override = b_rlay->material_override();
|
||||
render_layer.use_background = b_rlay->use_sky();
|
||||
render_layer.samples = b_rlay->samples();
|
||||
}
|
||||
|
||||
first_layer = false;
|
||||
|
||||
@@ -57,6 +57,7 @@ public:
|
||||
void sync_data(BL::SpaceView3D b_v3d, const char *layer = 0);
|
||||
void sync_camera(BL::Object b_override, int width, int height);
|
||||
void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height);
|
||||
int get_layer_samples() { return render_layer.samples; }
|
||||
|
||||
/* get parameters */
|
||||
static SceneParams get_scene_params(BL::Scene b_scene, bool background);
|
||||
@@ -108,7 +109,8 @@ private:
|
||||
RenderLayerInfo()
|
||||
: scene_layer(0), layer(0), holdout_layer(0),
|
||||
material_override(PointerRNA_NULL),
|
||||
use_background(true)
|
||||
use_background(true),
|
||||
samples(0)
|
||||
{}
|
||||
|
||||
string name;
|
||||
@@ -117,6 +119,7 @@ private:
|
||||
uint holdout_layer;
|
||||
BL::Material material_override;
|
||||
bool use_background;
|
||||
int samples;
|
||||
} render_layer;
|
||||
};
|
||||
|
||||
|
||||
@@ -183,6 +183,9 @@ typedef struct SceneRenderLayer {
|
||||
|
||||
int passflag; /* pass_xor has to be after passflag */
|
||||
int pass_xor;
|
||||
|
||||
int samples;
|
||||
int pad;
|
||||
} SceneRenderLayer;
|
||||
|
||||
/* srl->layflag */
|
||||
|
||||
@@ -1912,6 +1912,12 @@ 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);
|
||||
|
||||
if(scene) {
|
||||
prop = RNA_def_property(srna, "samples", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_ui_text(prop, "Samples", "Override number of render samples for this render layer, 0 will use the scene setting");
|
||||
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
|
||||
}
|
||||
|
||||
/* layer options */
|
||||
prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "layflag", SCE_LAY_DISABLE);
|
||||
|
||||
Reference in New Issue
Block a user