[Bf-blender-cvs] [90ac23d0fc8] cycles-x: Cycles X: Log effective list of passes
Sergey Sharybin
noreply at git.blender.org
Thu Jun 10 10:51:23 CEST 2021
Commit: 90ac23d0fc8b312cfe1e74a1652fee09cb77655a
Author: Sergey Sharybin
Date: Wed Jun 9 15:00:47 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB90ac23d0fc8b312cfe1e74a1652fee09cb77655a
Cycles X: Log effective list of passes
Useful for debugging purposes.
Log level can be tweaked to become 3 if 2 is considered
too low for this type of info.
Differential Revision: https://developer.blender.org/D11554
===================================================================
M intern/cycles/render/pass.cpp
M intern/cycles/render/pass.h
M intern/cycles/render/scene.cpp
===================================================================
diff --git a/intern/cycles/render/pass.cpp b/intern/cycles/render/pass.cpp
index cb1e0060284..c542ea7abae 100644
--- a/intern/cycles/render/pass.cpp
+++ b/intern/cycles/render/pass.cpp
@@ -35,6 +35,128 @@ static PassFlags pass_flags_combine(const PassFlags flags_a, const PassFlags fla
return result;
}
+/* Convcert bitmask of pass flags to a human-readable string. */
+static string pass_flags_to_string(const PassFlags pass_flags)
+{
+ string result;
+
+#define CHECK_AND_APPEND(flag_suffix) \
+ do { \
+ if ((pass_flags) & (PASS_FLAG_##flag_suffix)) { \
+ if (!result.empty()) { \
+ result += ", "; \
+ } \
+ result += #flag_suffix; \
+ } \
+ } while (false)
+
+ CHECK_AND_APPEND(UNALIGNED);
+ CHECK_AND_APPEND(AUTO);
+
+#undef CHECK_AND_APPEND
+
+ return result;
+}
+
+const char *pass_type_as_string(const PassType type)
+{
+ switch (type) {
+ case PASS_NONE:
+ return "NONE";
+
+ case PASS_COMBINED:
+ return "COMBINED";
+ case PASS_EMISSION:
+ return "EMISSION";
+ case PASS_BACKGROUND:
+ return "BACKGROUND";
+ case PASS_AO:
+ return "AO";
+ case PASS_SHADOW:
+ return "SHADOW";
+ case PASS_DIFFUSE_DIRECT:
+ return "DIFFUSE_DIRECT";
+ case PASS_DIFFUSE_INDIRECT:
+ return "DIFFUSE_INDIRECT";
+ case PASS_GLOSSY_DIRECT:
+ return "GLOSSY_DIRECT";
+ case PASS_GLOSSY_INDIRECT:
+ return "GLOSSY_INDIRECT";
+ case PASS_TRANSMISSION_DIRECT:
+ return "TRANSMISSION_DIRECT";
+ case PASS_TRANSMISSION_INDIRECT:
+ return "TRANSMISSION_INDIRECT";
+ case PASS_VOLUME_DIRECT:
+ return "VOLUME_DIRECT";
+ case PASS_VOLUME_INDIRECT:
+ return "VOLUME_INDIRECT";
+
+ case PASS_DEPTH:
+ return "DEPTH";
+ case PASS_NORMAL:
+ return "NORMAL";
+ case PASS_ROUGHNESS:
+ return "ROUGHNESS";
+ case PASS_UV:
+ return "UV";
+ case PASS_OBJECT_ID:
+ return "OBJECT_ID";
+ case PASS_MATERIAL_ID:
+ return "MATERIAL_ID";
+ case PASS_MOTION:
+ return "MOTION";
+ case PASS_MOTION_WEIGHT:
+ return "MOTION_WEIGHT";
+ case PASS_RENDER_TIME:
+ return "RENDER_TIME";
+ case PASS_CRYPTOMATTE:
+ return "CRYPTOMATTE";
+ case PASS_AOV_COLOR:
+ return "AOV_COLOR";
+ case PASS_AOV_VALUE:
+ return "AOV_VALUE";
+ case PASS_ADAPTIVE_AUX_BUFFER:
+ return "ADAPTIVE_AUX_BUFFER";
+ case PASS_SAMPLE_COUNT:
+ return "SAMPLE_COUNT";
+ case PASS_DIFFUSE_COLOR:
+ return "DIFFUSE_COLOR";
+ case PASS_GLOSSY_COLOR:
+ return "GLOSSY_COLOR";
+ case PASS_TRANSMISSION_COLOR:
+ return "TRANSMISSION_COLOR";
+ case PASS_MIST:
+ return "MIST";
+ case PASS_DENOISING_COLOR:
+ return "DENOISING_COLOR";
+ case PASS_DENOISING_NORMAL:
+ return "DENOISING_NORMAL";
+ case PASS_DENOISING_ALBEDO:
+ return "DENOISING_ALBEDO";
+ case PASS_SHADOW_CATCHER:
+ return "SHADOW_CATCHER";
+ case PASS_SHADOW_CATCHER_MATTE:
+ return "SHADOW_CATCHER_MATTE";
+
+ case PASS_BAKE_PRIMITIVE:
+ return "BAKE_PRIMITIVE";
+ case PASS_BAKE_DIFFERENTIAL:
+ return "BAKE_DIFFERENTIAL";
+
+ case PASS_CATEGORY_LIGHT_END:
+ case PASS_CATEGORY_DATA_END:
+ case PASS_CATEGORY_BAKE_END:
+ case PASS_NUM:
+ LOG(DFATAL) << "Invalid value for the pass type " << static_cast<int>(type)
+ << " (value is reserved for an internal use only).";
+ return "UNKNOWN";
+ }
+
+ LOG(DFATAL) << "Unhandled pass type " << static_cast<int>(type) << ", not supposed to happen.";
+
+ return "UNKNOWN";
+}
+
static bool compare_pass_order(const Pass &a, const Pass &b)
{
if (a.components == b.components)
@@ -469,4 +591,17 @@ int Pass::get_offset(const vector<Pass> &passes, const Pass &pass)
return PASS_UNUSED;
}
+std::ostream &operator<<(std::ostream &os, const Pass &pass)
+{
+ os << "type: " << pass_type_as_string(pass.type);
+ os << ", name: \"" << pass.name << "\"";
+
+ const string flags_as_string = pass_flags_to_string(pass.flags);
+ if (!flags_as_string.empty()) {
+ os << ", " << flags_as_string;
+ }
+
+ return os;
+}
+
CCL_NAMESPACE_END
diff --git a/intern/cycles/render/pass.h b/intern/cycles/render/pass.h
index 4df90f91e68..4c784ee4d0c 100644
--- a/intern/cycles/render/pass.h
+++ b/intern/cycles/render/pass.h
@@ -25,6 +25,8 @@
CCL_NAMESPACE_BEGIN
+const char *pass_type_as_string(const PassType type);
+
enum PassFlag {
PASS_FLAG_NONE = 0,
@@ -94,4 +96,6 @@ class Pass : public Node {
static int get_offset(const vector<Pass> &passes, const Pass &pass);
};
+std::ostream &operator<<(std::ostream &os, const Pass &pass);
+
CCL_NAMESPACE_END
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp
index fac5d85524e..da1facac3d5 100644
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@ -585,6 +585,13 @@ void Scene::update_passes()
}
film->tag_modified();
+
+ if (VLOG_IS_ON(2)) {
+ VLOG(2) << "Effective scene passes:";
+ for (const Pass &pass : passes) {
+ VLOG(2) << "- " << pass;
+ }
+ }
}
bool Scene::load_kernels(Progress &progress, bool lock_scene)
More information about the Bf-blender-cvs
mailing list