39 if (
output->is_logically_linked()) {
53 if (
output->is_logically_linked()) {
90 const std::string layer_name = layer_names.
contains(
data->layer_name) ?
data->layer_name :
100 const char *cryptomatte_type_name =
nullptr;
117 if (!cryptomatte_type_name) {
123 for (
const int i :
IndexRange(cryptomatte_layers_count)) {
124 used_passes.
add(fmt::format(
"{}{:02}", cryptomatte_type_name,
i));
132 const bool is_root_tree,
136 if (node_tree ==
nullptr) {
140 node_tree->ensure_topology_cache();
141 for (
const bNode *node : node_tree->all_nodes()) {
142 if (node->is_muted()) {
146 switch (node->type_legacy) {
150 if (node_trees_already_searched.
add(node_group_tree)) {
152 node_group_tree, view_layer,
false, node_trees_already_searched, used_passes);
195 const View3D &view_3d =
reinterpret_cast<const View3D &
>(space);
Scene * CTX_data_scene(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
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
#define LISTBASE_FOREACH(type, var, list)
@ 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
@ V3D_SHADING_USE_COMPOSITOR_DISABLED
BMesh const char void * data
bool contains(const T &value) const
static void add_passes_used_by_group_input_node(const bNode *node, Set< std::string > &used_passes)
static void add_passes_used_by_cryptomatte_node(const bNode *node, const ViewLayer *view_layer, Set< std::string > &used_passes)
bool is_viewport_compositor_used(const bContext &context)
static void add_used_passes_recursive(const bNodeTree *node_tree, const ViewLayer *view_layer, const bool is_root_tree, 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 * compositing_node_group
bScreen * WM_window_get_active_screen(const wmWindow *win)