13 const int type_int =
static_cast<int>(type);
17 if (!type_enum->
exists(type_int)) {
18 LOG(DFATAL) <<
"Unhandled pass type " <<
static_cast<int>(type) <<
", not supposed to happen.";
22 return (*type_enum)[type_int].c_str();
34 LOG(DFATAL) <<
"Unhandled pass mode " <<
static_cast<int>(mode) <<
", should never happen.";
48 if (pass_type_enum.
empty()) {
100#ifdef WITH_CYCLES_DEBUG
107 return &pass_type_enum;
114 if (pass_mode_enum.
empty()) {
119 return &pass_mode_enum;
126 const NodeEnum *pass_type_enum = get_type_enum();
127 const NodeEnum *pass_mode_enum = get_mode_enum();
142 return get_info(
type, include_albedo, !lightgroup.empty());
350 LOG(DFATAL) <<
"Unexpected pass type is used " <<
type;
369 for (
const Pass *pass : passes) {
370 if (pass->get_type() !=
type) {
382 for (
const Pass *pass : passes) {
383 if (pass->get_name() ==
name) {
394 const ustring &lightgroup)
396 for (
const Pass *pass : passes) {
397 if (pass->get_type() !=
type || pass->get_mode() != mode ||
398 pass->get_lightgroup() != lightgroup)
412 for (
const Pass *current_pass : passes) {
414 if (current_pass->get_type() == pass->get_type() &&
415 current_pass->get_mode() == pass->get_mode() &&
416 current_pass->get_name() == pass->get_name())
418 if (current_pass->is_written()) {
423 if (current_pass->is_written()) {
424 pass_offset += current_pass->get_info().num_components;
434 os <<
", name: \"" << pass.get_name() <<
"\"";
435 os <<
", mode: " << pass.get_mode();
static const Pass * find(const unique_ptr_vector< Pass > &passes, const string &name)
PassInfo get_info() const
static int get_offset(const unique_ptr_vector< Pass > &passes, const Pass *pass)
static bool contains(const unique_ptr_vector< Pass > &passes, PassType type)
static const NodeEnum * get_type_enum()
static const NodeEnum * get_mode_enum()
#define CCL_NAMESPACE_END
@ PASS_SHADOW_CATCHER_SAMPLE_COUNT
@ PASS_TRANSMISSION_DIRECT
@ PASS_TRANSMISSION_COLOR
@ PASS_SHADOW_CATCHER_MATTE
@ PASS_TRANSMISSION_INDIRECT
@ PASS_GUIDING_PROBABILITY
@ PASS_ADAPTIVE_AUX_BUFFER
@ PASS_GUIDING_AVG_ROUGHNESS
@ PASS_DENOISING_PREVIOUS
@ PASS_CATEGORY_LIGHT_END
#define NODE_DEFINE(structname)
#define SOCKET_BOOLEAN(name, ui_name, default_value,...)
#define SOCKET_STRING(name, ui_name, default_value,...)
#define SOCKET_ENUM(name, ui_name, values, default_value,...)
const char * pass_mode_as_string(PassMode mode)
CCL_NAMESPACE_BEGIN const char * pass_type_as_string(const PassType type)
std::ostream & operator<<(std::ostream &os, PassMode mode)
string string_from_bool(bool var)
void insert(const char *x, const int y)
bool exists(ustring x) const
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=nullptr)
Node(const NodeType *type, ustring name=ustring())
bool use_denoising_albedo