Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-28 20:37:05 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-28 20:59:33 +0300
commit3f4e3f718fdc1163cc52a84d85978fa94b230211 (patch)
tree21bdaae3f63721ac481493a58d9abd37395243ce /source/blender
parenta7c5f4f20657e12b43337e32bc62a876cbbe6292 (diff)
Cycles: restore old sample and material override settings for view layers.
Since there will be no view layer overrides in 2.80, this is needed still.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_layer.h10
-rw-r--r--source/blender/blenkernel/intern/layer.c33
-rw-r--r--source/blender/blenkernel/intern/library_query.c2
-rw-r--r--source/blender/blenloader/intern/versioning_280.c27
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc4
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc4
-rw-r--r--source/blender/makesdna/DNA_layer_types.h3
-rw-r--r--source/blender/makesdna/DNA_scene_types.h4
-rw-r--r--source/blender/makesrna/intern/rna_internal.h1
-rw-r--r--source/blender/makesrna/intern/rna_scene.c20
-rw-r--r--source/blender/render/intern/source/render_result.c1
11 files changed, 37 insertions, 72 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 2abdaf103f9..9ac0c56d93f 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -117,16 +117,6 @@ bool BKE_layer_collection_has_selected_objects(
void BKE_base_set_visible(struct Scene *scene, struct ViewLayer *view_layer, struct Base *base, bool extend);
void BKE_layer_collection_set_visible(struct Scene *scene, struct ViewLayer *view_layer, struct LayerCollection *lc, bool extend);
-/* override */
-
-void BKE_override_view_layer_datablock_add(
- struct ViewLayer *view_layer, int id_type, const char *data_path, const struct ID *owner_id);
-void BKE_override_view_layer_int_add(
- struct ViewLayer *view_layer, int id_type, const char *data_path, const int value);
-
-void BKE_override_layer_collection_boolean_add(
- struct LayerCollection *layer_collection, int id_type, const char *data_path, const bool value);
-
/* evaluation */
void BKE_layer_eval_view_layer(
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 3fedd380f72..572dba4d83b 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1057,39 +1057,6 @@ bool BKE_scene_has_object(Scene *scene, Object *ob)
return false;
}
-/* ---------------------------------------------------------------------- */
-/* Override */
-
-/**
- * Add a new datablock override
- */
-void BKE_override_view_layer_datablock_add(
- ViewLayer *view_layer, int id_type, const char *data_path, const ID *owner_id)
-{
- UNUSED_VARS(view_layer, id_type, data_path, owner_id);
- TODO_LAYER_OVERRIDE;
-}
-
-/**
- * Add a new int override
- */
-void BKE_override_view_layer_int_add(
- ViewLayer *view_layer, int id_type, const char *data_path, const int value)
-{
- UNUSED_VARS(view_layer, id_type, data_path, value);
- TODO_LAYER_OVERRIDE;
-}
-
-/**
- * Add a new boolean override
- */
-void BKE_override_layer_collection_boolean_add(
- struct LayerCollection *layer_collection, int id_type, const char *data_path, const bool value)
-{
- UNUSED_VARS(layer_collection, id_type, data_path, value);
- TODO_LAYER_OVERRIDE;
-}
-
/** \} */
/* Iterators */
diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c
index ab50cf8b0a8..2134c02b63d 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -438,6 +438,8 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
ViewLayer *view_layer;
for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
+ CALLBACK_INVOKE(view_layer->mat_override, IDWALK_CB_USER);
+
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
CALLBACK_INVOKE(base->object, IDWALK_CB_NOP);
}
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 1529e6693fb..ab5f1a30d04 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -460,28 +460,6 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
for (SceneRenderLayer *srl = scene->r.layers.first; srl; srl = srl->next) {
ViewLayer *view_layer = BKE_view_layer_add(scene, srl->name);
- if (srl->samples != 0) {
- have_override = true;
-
- /* It is up to the external engine to handle
- * its own doversion in this case. */
- BKE_override_view_layer_int_add(
- view_layer,
- ID_SCE,
- "samples",
- srl->samples);
- }
-
- if (srl->mat_override) {
- have_override = true;
-
- BKE_override_view_layer_datablock_add(
- view_layer,
- ID_MA,
- "self",
- (ID *)srl->mat_override);
- }
-
if (srl->layflag & SCE_LAY_DISABLE) {
view_layer->flag &= ~VIEW_LAYER_RENDER;
}
@@ -490,12 +468,11 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
view_layer->flag &= ~VIEW_LAYER_FREESTYLE;
}
- /* XXX If we are to keep layflag it should be merged with flag (dfelinto). */
view_layer->layflag = srl->layflag;
- /* XXX Not sure if we should keep the passes (dfelinto). */
view_layer->passflag = srl->passflag;
- view_layer->pass_xor = srl->pass_xor;
view_layer->pass_alpha_threshold = srl->pass_alpha_threshold;
+ view_layer->samples = srl->samples;
+ view_layer->mat_override = srl->mat_override;
BKE_freestyle_config_free(&view_layer->freestyle_config, true);
view_layer->freestyle_config = srl->freestyleConfig;
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
index 70bd533647c..ce3b2538274 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
@@ -151,6 +151,10 @@ void DepsgraphNodeBuilder::build_view_layer(
LISTBASE_FOREACH (MovieClip *, clip, &bmain_->movieclip) {
build_movieclip(clip);
}
+ /* Material override. */
+ if (view_layer->mat_override != NULL) {
+ build_material(view_layer->mat_override);
+ }
/* Collections. */
add_operation_node(&scene->id,
DEG_NODE_TYPE_LAYER_COLLECTIONS,
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
index 866b5e63031..f77d47874a2 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
@@ -132,6 +132,10 @@ void DepsgraphRelationBuilder::build_view_layer(Scene *scene, ViewLayer *view_la
LISTBASE_FOREACH (MovieClip *, clip, &bmain_->movieclip) {
build_movieclip(clip);
}
+ /* Material override. */
+ if (view_layer->mat_override != NULL) {
+ build_material(view_layer->mat_override);
+ }
/* Build all set scenes. */
if (scene->set != NULL) {
ViewLayer *set_view_layer = BKE_view_layer_default_render(scene->set);
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index c3e819c5538..d959d54b07f 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -76,9 +76,10 @@ typedef struct ViewLayer {
/* Old SceneRenderLayer data. */
int layflag;
int passflag; /* pass_xor has to be after passflag */
- int pass_xor;
float pass_alpha_threshold;
+ int samples;
+ struct Material *mat_override;
struct IDProperty *id_properties; /* Equivalent to datablocks ID properties. */
struct FreestyleConfig freestyle_config;
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 2d0838a04c5..d100449c353 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -194,7 +194,7 @@ typedef struct SceneRenderLayer {
char name[64] DNA_DEPRECATED; /* MAX_NAME */
- struct Material *mat_override DNA_DEPRECATED; /* Converted to ViewLayer override. */
+ struct Material *mat_override DNA_DEPRECATED; /* Converted to ViewLayer setting. */
unsigned int lay DNA_DEPRECATED; /* Converted to LayerCollection cycles camera visibility override. */
unsigned int lay_zmask DNA_DEPRECATED; /* Converted to LayerCollection cycles holdout override. */
@@ -205,7 +205,7 @@ typedef struct SceneRenderLayer {
int passflag DNA_DEPRECATED; /* pass_xor has to be after passflag */
int pass_xor DNA_DEPRECATED; /* Converted to ViewLayer passflag and flag. */
- int samples DNA_DEPRECATED; /* Converted to ViewLayer override. */
+ int samples DNA_DEPRECATED; /* Converted to ViewLayer setting. */
float pass_alpha_threshold DNA_DEPRECATED; /* Converted to ViewLayer pass_alpha_threshold. */
IDProperty *prop DNA_DEPRECATED; /* Converted to ViewLayer id_properties. */
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 155c030587d..6e69de774e9 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -274,6 +274,7 @@ void rna_Scene_use_view_map_cache_update(struct Main *bmain, struct Scene *scene
void rna_Scene_glsl_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
void rna_Scene_freestyle_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr);
void rna_ViewLayer_name_set(struct PointerRNA *ptr, const char *value);
+void rna_ViewLayer_material_override_update(struct Main *bmain, struct Scene *activescene, struct PointerRNA *ptr);
void rna_ViewLayer_pass_update(struct Main *bmain, struct Scene *activescene, struct PointerRNA *ptr);
/* named internal so as not to conflict with obj.update() rna func */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 9389dcf81ef..f3f5371b458 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1424,6 +1424,13 @@ static void rna_SceneRenderView_name_set(PointerRNA *ptr, const char *value)
BLI_uniquename(&scene->r.views, rv, DATA_("RenderView"), '.', offsetof(SceneRenderView, name), sizeof(rv->name));
}
+void rna_ViewLayer_material_override_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
+{
+ Scene *scene = (Scene *)ptr->id.data;
+ rna_Scene_glsl_update(bmain, scene, ptr);
+ DEG_relations_tag_update(bmain);
+}
+
void rna_ViewLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr)
{
Scene *scene = (Scene *)ptr->id.data;
@@ -3227,6 +3234,19 @@ void rna_def_view_layer_common(StructRNA *srna, int scene)
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
if (scene) {
+ prop = RNA_def_property(srna, "material_override", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "mat_override");
+ RNA_def_property_struct_type(prop, "Material");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Material Override",
+ "Material to override all other materials in this view layer");
+ RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_ViewLayer_material_override_update");
+
+ prop = RNA_def_property(srna, "samples", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_ui_text(prop, "Samples", "Override number of render samples for this view 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);
RNA_def_property_ui_text(prop, "Alpha Threshold",
"Z, Index, normal, UV and vector passes are only affected by surfaces with "
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index fc99be81ba3..7efe0a5da60 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -307,7 +307,6 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
BLI_strncpy(rl->name, view_layer->name, sizeof(rl->name));
rl->layflag = view_layer->layflag;
rl->passflag = view_layer->passflag; /* for debugging: view_layer->passflag | SCE_PASS_RAYHITS; */
- rl->pass_xor = view_layer->pass_xor;
rl->rectx = rectx;
rl->recty = recty;