SceneRenderLayer > SceneLayer: Convert samples_override

Note: Cycles still need to handle its own doversion for theses cases and

(1) Remove the override as it is
(2) Add a new override (scene.cycles.samples) if scene.cycles.use_layer_samples != IGNORE

Respecting the expected behaviour when scene.cycles.use_layer_samples == BOUNDED.
This commit is contained in:
Dalai Felinto
2017-11-15 12:17:54 -02:00
parent 05306d9766
commit e22ca0fb86
8 changed files with 25 additions and 25 deletions

View File

@@ -204,13 +204,6 @@ class CYCLES_RENDER_PT_sampling(CyclesButtonsPanel, Panel):
col.prop(cscene, "sample_all_lights_indirect") col.prop(cscene, "sample_all_lights_indirect")
layout.row().prop(cscene, "sampling_pattern", text="Pattern") layout.row().prop(cscene, "sampling_pattern", text="Pattern")
for rl in scene.render.layers:
if rl.samples > 0:
layout.separator()
layout.row().prop(cscene, "use_layer_samples")
break
draw_samples_info(layout, context) draw_samples_info(layout, context)

View File

@@ -378,7 +378,6 @@ void BlenderSync::sync_film()
void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer) void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer)
{ {
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
string layername; string layername;
/* 3d view */ /* 3d view */
@@ -391,7 +390,6 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer)
/* render layer */ /* render layer */
BL::RenderSettings r = b_scene.render(); BL::RenderSettings r = b_scene.render();
BL::RenderSettings::layers_iterator b_rlay; BL::RenderSettings::layers_iterator b_rlay;
int use_layer_samples = get_enum(cscene, "use_layer_samples");
bool first_layer = true; bool first_layer = true;
uint layer_override = get_layer(b_engine.layer_override()); uint layer_override = get_layer(b_engine.layer_override());
uint scene_layers = layer_override ? layer_override : get_layer(b_scene.layers()); uint scene_layers = layer_override ? layer_override : get_layer(b_scene.layers());
@@ -415,14 +413,8 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer)
render_layer.use_surfaces = b_rlay->use_solid(); render_layer.use_surfaces = b_rlay->use_solid();
render_layer.use_hair = b_rlay->use_strand(); render_layer.use_hair = b_rlay->use_strand();
render_layer.bound_samples = (use_layer_samples == 1); render_layer.bound_samples = false;
if(use_layer_samples != 2) { render_layer.samples = 0;
int samples = b_rlay->samples();
if(get_boolean(cscene, "use_square_samples"))
render_layer.samples = samples * samples;
else
render_layer.samples = samples;
}
} }
first_layer = false; first_layer = false;

View File

@@ -207,8 +207,8 @@ private:
bool use_background_ao; bool use_background_ao;
bool use_surfaces; bool use_surfaces;
bool use_hair; bool use_hair;
int samples; int samples; /* This can be safely removed from Cycles. */
bool bound_samples; bool bound_samples; /* This can be safely removed from Cycles. */
} render_layer; } render_layer;
Progress &progress; Progress &progress;

View File

@@ -109,6 +109,7 @@ void BKE_layer_sync_object_unlink(const struct Scene *scene, struct SceneCollect
/* override */ /* override */
void BKE_override_scene_layer_datablock_add(struct SceneLayer *scene_layer, int id_type, const char *data_path, const struct ID *id); void BKE_override_scene_layer_datablock_add(struct SceneLayer *scene_layer, int id_type, const char *data_path, const struct ID *id);
void BKE_override_scene_layer_int_add(struct SceneLayer *scene_layer, int id_type, const char *data_path, const int value);
/* engine settings */ /* engine settings */
typedef void (*EngineSettingsCB)(struct RenderEngine *engine, struct IDProperty *props); typedef void (*EngineSettingsCB)(struct RenderEngine *engine, struct IDProperty *props);

View File

@@ -1066,6 +1066,15 @@ void BKE_override_scene_layer_datablock_add(SceneLayer *scene_layer, int id_type
TODO_LAYER_OVERRIDE; TODO_LAYER_OVERRIDE;
} }
/**
* Add a new int override
*/
void BKE_override_scene_layer_int_add(SceneLayer *scene_layer, int id_type, const char *data_path, const int value)
{
UNUSED_VARS(scene_layer, id_type, data_path, value);
TODO_LAYER_OVERRIDE;
}
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
/* Engine Settings */ /* Engine Settings */

View File

@@ -306,6 +306,16 @@ void do_versions_after_linking_280(Main *main)
SceneLayer *scene_layer = BKE_scene_layer_add(scene, srl->name); SceneLayer *scene_layer = BKE_scene_layer_add(scene, srl->name);
if (srl->samples != 0) {
/* It is up to the external engine to handle
* its own doversion in this case. */
BKE_override_scene_layer_int_add(
scene_layer,
ID_SCE,
"samples",
srl->samples);
}
if (srl->mat_override) { if (srl->mat_override) {
BKE_override_scene_layer_datablock_add( BKE_override_scene_layer_datablock_add(
scene_layer, scene_layer,

View File

@@ -184,7 +184,7 @@ typedef struct SceneRenderLayer {
int passflag; /* pass_xor has to be after passflag */ int passflag; /* pass_xor has to be after passflag */
int pass_xor; int pass_xor;
int samples; int samples DNA_DEPRECATED; /* Converted to SceneLayer override. */
float pass_alpha_threshold; float pass_alpha_threshold;
IDProperty *prop; IDProperty *prop;

View File

@@ -3301,11 +3301,6 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
else RNA_def_property_clear_flag(prop, PROP_EDITABLE); else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
if (scene) { 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);
prop = RNA_def_property(srna, "pass_alpha_threshold", PROP_FLOAT, PROP_FACTOR); prop = RNA_def_property(srna, "pass_alpha_threshold", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_ui_text(prop, "Alpha Threshold", RNA_def_property_ui_text(prop, "Alpha Threshold",
"Z, Index, normal, UV and vector passes are only affected by surfaces with " "Z, Index, normal, UV and vector passes are only affected by surfaces with "