Doversion: We should always add the old RenderLayer

We cannot assume a render layer does not have a setting that was needed for
compositing. Even if:

```
(scene->lay & render_layer->lay) != (scene_lay) &&
(render_layer->lay | render_layer->lay_exclude) == 0))
```

Which would mean use the scene layers just as they are.
This commit is contained in:
Dalai Felinto 2017-11-15 13:52:47 -02:00
parent cb67be3f22
commit 0a6df6b173
1 changed files with 33 additions and 35 deletions

View File

@ -324,45 +324,43 @@ void do_versions_after_linking_280(Main *main)
(ID *)srl->mat_override);
}
if (srl->lay != scene->lay) {
/* unlink master collection */
BKE_collection_unlink(scene_layer, scene_layer->layer_collections.first);
/* unlink master collection */
BKE_collection_unlink(scene_layer, scene_layer->layer_collections.first);
/* Add new collection bases. */
for (int layer = 0; layer < 20; layer++) {
if ((scene->lay & srl->lay & ~(srl->lay_exclude) & (1 << layer)) ||
(srl->lay_zmask & (scene->lay | srl->lay_exclude) & (1 << layer)))
{
if (collections[DO_VERSION_COLLECTION_VISIBLE].created & (1 << layer)) {
/* Add new collection bases. */
for (int layer = 0; layer < 20; layer++) {
if ((scene->lay & srl->lay & ~(srl->lay_exclude) & (1 << layer)) ||
(srl->lay_zmask & (scene->lay | srl->lay_exclude) & (1 << layer)))
{
if (collections[DO_VERSION_COLLECTION_VISIBLE].created & (1 << layer)) {
LayerCollection *layer_collection_parent;
layer_collection_parent = BKE_collection_link(scene_layer,
collections[DO_VERSION_COLLECTION_VISIBLE].collections[layer]);
LayerCollection *layer_collection_parent;
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;
for (int j = 1; j < 4; j++) {
if (collections[j].created & (1 << layer)) {
layer_collection_child->flag = collections[j].flag_render & (~COLLECTION_DISABLED);
if (collections[j].flag_render & COLLECTION_DISABLED) {
BKE_collection_disable(scene_layer, layer_collection_child);
}
layer_collection_child = layer_collection_child->next;
}
}
BLI_assert(layer_collection_child == NULL);
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;
for (int j = 1; j < 4; j++) {
if (collections[j].created & (1 << layer)) {
layer_collection_child->flag = collections[j].flag_render & (~COLLECTION_DISABLED);
if (collections[j].flag_render & COLLECTION_DISABLED) {
BKE_collection_disable(scene_layer, layer_collection_child);
}
layer_collection_child = layer_collection_child->next;
}
}
BLI_assert(layer_collection_child == NULL);
}
}
}