[Bf-blender-cvs] [d4e76712d4f] master: Cryptomatte: Fix When Image based Cryptomatte Aren't On The First Render Layer.

Jeroen Bakker noreply at git.blender.org
Tue Mar 30 16:06:22 CEST 2021


Commit: d4e76712d4fdf55815cf59df52ffa35df84ed09a
Author: Jeroen Bakker
Date:   Tue Mar 30 11:05:10 2021 +0200
Branches: master
https://developer.blender.org/rBd4e76712d4fdf55815cf59df52ffa35df84ed09a

Cryptomatte: Fix When Image based Cryptomatte Aren't On The First Render Layer.

The image user wasn't updated to reflect the correct render layer.

===================================================================

M	source/blender/compositor/nodes/COM_CryptomatteNode.cc

===================================================================

diff --git a/source/blender/compositor/nodes/COM_CryptomatteNode.cc b/source/blender/compositor/nodes/COM_CryptomatteNode.cc
index f5025285a34..89caff047b4 100644
--- a/source/blender/compositor/nodes/COM_CryptomatteNode.cc
+++ b/source/blender/compositor/nodes/COM_CryptomatteNode.cc
@@ -178,7 +178,12 @@ void CryptomatteNode::input_operations_from_image_source(
     }
 
     const std::string prefix = prefix_from_node(node);
-    LISTBASE_FOREACH (RenderLayer *, render_layer, &image->rr->layers) {
+    int layer_index;
+    LISTBASE_FOREACH_INDEX (RenderLayer *, render_layer, &image->rr->layers, layer_index) {
+      if (!blender::StringRef(prefix).startswith(blender::StringRef(
+              render_layer->name, BLI_strnlen(render_layer->name, sizeof(render_layer->name))))) {
+        continue;
+      }
       LISTBASE_FOREACH (RenderPass *, render_pass, &render_layer->passes) {
         const std::string combined_name = combined_layer_pass_name(render_layer, render_pass);
         if (blender::StringRef(combined_name).startswith(prefix)) {
@@ -186,10 +191,12 @@ void CryptomatteNode::input_operations_from_image_source(
               render_layer, render_pass, view);
           op->setImage(image);
           op->setImageUser(iuser);
+          iuser->layer = layer_index;
           op->setFramenumber(context.getFramenumber());
           r_input_operations.append(op);
         }
       }
+      break;
     }
   }
   BKE_image_release_ibuf(image, ibuf, nullptr);



More information about the Bf-blender-cvs mailing list