Cycles: per render layer Samples control, leaving it to 0 will use the common

scene setting.
This commit is contained in:
Brecht Van Lommel
2012-04-18 15:23:13 +00:00
parent cf6d854806
commit 27ffa5dfdf
6 changed files with 20 additions and 4 deletions

View File

@@ -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()

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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 */

View File

@@ -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);