33 if (
output->is_logically_linked()) {
70 const std::string layer_name = layer_names.
contains(
data->layer_name) ?
data->layer_name :
80 const char *cryptomatte_type_name =
nullptr;
97 if (!cryptomatte_type_name) {
103 for (
const int i :
IndexRange(cryptomatte_layers_count)) {
104 used_passes.
add(fmt::format(
"{}{:02}", cryptomatte_type_name,
i));
115 if (node_tree ==
nullptr) {
119 node_tree->ensure_topology_cache();
120 for (
const bNode *node : node_tree->all_nodes()) {
121 if (node->is_muted()) {
125 switch (node->type_legacy) {
129 if (node_trees_already_searched.
add(node_group_tree)) {
131 node_group_tree, view_layer, node_trees_already_searched, used_passes);
struct CryptomatteSession * BKE_cryptomatte_init_from_scene(const struct Scene *scene, bool build_meta_data)
#define NODE_CUSTOM_GROUP
#define CMP_NODE_CRYPTOMATTE
#define CMP_NODE_R_LAYERS
@ VIEW_LAYER_CRYPTOMATTE_MATERIAL
@ VIEW_LAYER_CRYPTOMATTE_ASSET
@ VIEW_LAYER_CRYPTOMATTE_OBJECT
@ CMP_NODE_CRYPTOMATTE_SOURCE_RENDER
#define RE_PASSNAME_COMBINED
#define RE_PASSNAME_CRYPTOMATTE_MATERIAL
#define RE_PASSNAME_CRYPTOMATTE_ASSET
#define RE_PASSNAME_CRYPTOMATTE_OBJECT
BMesh const char void * data
bool contains(const T &value) const
static void add_passes_used_by_cryptomatte_node(const bNode *node, const ViewLayer *view_layer, Set< std::string > &used_passes)
static void add_used_passes_recursive(const bNodeTree *node_tree, const ViewLayer *view_layer, Set< const bNodeTree * > &node_trees_already_searched, Set< std::string > &used_passes)
Set< std::string > get_used_passes(const Scene &scene, const ViewLayer *view_layer)
static void add_passes_used_by_render_layer_node(const bNode *node, Set< std::string > &used_passes)
std::unique_ptr< CryptomatteSession, CryptomatteSessionDeleter > CryptomatteSessionPtr
const blender::Vector< std::string > & BKE_cryptomatte_layer_names_get(const CryptomatteSession &session)
struct bNodeTree * nodetree