diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-11-15 17:08:59 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-11-22 12:13:33 +0300 |
commit | d276e45ee6c2ae6d67177552f4c5f27cd99bdd83 (patch) | |
tree | 890c5e98fa2512a1d5946a3738ef73beac4443f5 /source/blender/blenloader/intern | |
parent | e22ca0fb860ed945eb3438bfe6dba8040cfd7cf3 (diff) |
SceneRenderLayer > SceneLayer: Convert Z-Mask
Note: Cycles still need to implement the per-object holdout
(similar to how we do shadow catcher).
Diffstat (limited to 'source/blender/blenloader/intern')
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index f6801d22a53..44ce2014e99 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -330,9 +330,14 @@ void do_versions_after_linking_280(Main *main) /* Add new collection bases. */ for (int layer = 0; layer < 20; layer++) { - if ((scene->lay & (1 << layer)) && - (srl->lay & (1 << layer)) && - ((srl->lay_exclude & (1 << layer)) == 0)) + if (( + (scene->lay & (1 << layer)) && + (srl->lay & (1 << layer)) && + ((srl->lay_exclude & (1 << layer)) == 0)) || + ( + (srl->lay_zmask & (1 << layer)) && + ((scene->lay | srl->lay_exclude) & (1 << layer))) + ) { if (collections[DO_VERSION_COLLECTION_VISIBLE].created & (1 << layer)) { @@ -340,6 +345,14 @@ void do_versions_after_linking_280(Main *main) layer_collection_parent = BKE_collection_link(scene_layer, collections[DO_VERSION_COLLECTION_VISIBLE].collections[layer]); + if (srl->lay_zmask & (1 << layer)) { + BKE_override_layer_collection_boolean_add( + layer_collection_parent, + ID_OB, + "cycles.is_holdout", + true); + } + LayerCollection *layer_collection_child; layer_collection_child = layer_collection_parent->layer_collections.first; @@ -350,6 +363,7 @@ void do_versions_after_linking_280(Main *main) if (collections[j].flag_render & COLLECTION_DISABLED) { BKE_collection_disable(scene_layer, layer_collection_child); } + layer_collection_child = layer_collection_child->next; } } |