14 const int type_int =
static_cast<int>(type);
18 if (!type_enum->
exists(type_int)) {
19 LOG_DFATAL <<
"Unhandled pass type " <<
static_cast<int>(type) <<
", not supposed to happen.";
23 return (*type_enum)[type_int].c_str();
35 LOG_DFATAL <<
"Unhandled pass mode " <<
static_cast<int>(mode) <<
", should never happen.";
49 if (pass_type_enum.
empty()) {
106#ifdef WITH_CYCLES_DEBUG
113 return &pass_type_enum;
120 if (pass_mode_enum.
empty()) {
125 return &pass_mode_enum;
132 const NodeEnum *pass_type_enum = get_type_enum();
133 const NodeEnum *pass_mode_enum = get_mode_enum();
148 return get_info(
type, mode, include_albedo, !lightgroup.empty());
158 const bool include_albedo,
159 const bool is_lightgroup)
402 for (
const Pass *pass : passes) {
403 if (pass->get_type() !=
type) {
415 for (
const Pass *pass : passes) {
416 if (pass->get_name() ==
name) {
427 const ustring &lightgroup)
429 for (
const Pass *pass : passes) {
430 if (pass->get_type() !=
type || pass->get_mode() != mode ||
431 pass->get_lightgroup() != lightgroup)
445 for (
const Pass *current_pass : passes) {
447 if (current_pass->get_type() == pass->get_type() &&
448 current_pass->get_mode() == pass->get_mode() &&
449 current_pass->get_name() == pass->get_name())
451 if (current_pass->is_written()) {
456 if (current_pass->is_written()) {
457 pass_offset += current_pass->get_info().num_components;
467 os <<
", name: \"" << pass.get_name() <<
"\"";
468 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_VOLUME_MAJORANT_SAMPLE_COUNT
@ 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)
bool is_volume_guiding_pass(const PassType pass_type)
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
uint64_t time_fast_frequency()