diff options
-rw-r--r-- | source/blender/compositor/intern/COM_CompositorContext.h | 6 | ||||
-rw-r--r-- | source/blender/compositor/nodes/COM_CryptomatteNode.cc | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/compositor/intern/COM_CompositorContext.h b/source/blender/compositor/intern/COM_CompositorContext.h index 403ec62e359..c6e83f93777 100644 --- a/source/blender/compositor/intern/COM_CompositorContext.h +++ b/source/blender/compositor/intern/COM_CompositorContext.h @@ -239,6 +239,12 @@ class CompositorContext { this->m_hasActiveOpenCLDevices = hasAvtiveOpenCLDevices; } + /** Whether it has a view with a specific name and not the default one. */ + bool has_explicit_view() const + { + return m_viewName && m_viewName[0] != '\0'; + } + /** * \brief get the active rendering view */ diff --git a/source/blender/compositor/nodes/COM_CryptomatteNode.cc b/source/blender/compositor/nodes/COM_CryptomatteNode.cc index 4032a655633..5835f051ce3 100644 --- a/source/blender/compositor/nodes/COM_CryptomatteNode.cc +++ b/source/blender/compositor/nodes/COM_CryptomatteNode.cc @@ -124,6 +124,10 @@ void CryptomatteNode::input_operations_from_render_source( RenderLayer *render_layer = RE_GetRenderLayer(render_result, view_layer->name); if (render_layer) { LISTBASE_FOREACH (RenderPass *, render_pass, &render_layer->passes) { + if (context.has_explicit_view() && !STREQ(render_pass->view, context.getViewName())) { + continue; + } + const std::string combined_name = combined_layer_pass_name(render_layer, render_pass); if (blender::StringRef(combined_name).startswith(prefix)) { RenderLayersProg *op = new RenderLayersProg( |