[Bf-blender-cvs] [9d482455080] cycles-x: Cycles X: Convert DenoiseParams to a "lite" Node
Sergey Sharybin
noreply at git.blender.org
Wed Sep 15 19:37:00 CEST 2021
Commit: 9d4824550807c1d373022370d7b45217b02aec02
Author: Sergey Sharybin
Date: Wed Sep 15 09:11:17 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB9d4824550807c1d373022370d7b45217b02aec02
Cycles X: Convert DenoiseParams to a "lite" Node
It is not supposed to be a node of a scene graph, but this change
allows to simplify serialization of the denoising parameters.
The goal is to be able to easily (de)serialize denoiser parameters
to/from image metadata, so that processing of the files can happen
outside of the scene graph (for example, on-disk tile buffer and
animation denoising).
===================================================================
M intern/cycles/device/device_denoise.cpp
M intern/cycles/device/device_denoise.h
===================================================================
diff --git a/intern/cycles/device/device_denoise.cpp b/intern/cycles/device/device_denoise.cpp
index d4845ba7bdf..aea7868f65d 100644
--- a/intern/cycles/device/device_denoise.cpp
+++ b/intern/cycles/device/device_denoise.cpp
@@ -35,4 +35,54 @@ const char *denoiserTypeToHumanReadable(DenoiserType type)
return "UNKNOWN";
}
+const NodeEnum *DenoiseParams::get_type_enum()
+{
+ static NodeEnum type_enum;
+
+ if (type_enum.empty()) {
+ type_enum.insert("optix", DENOISER_OPTIX);
+ type_enum.insert("openimageio", DENOISER_OPENIMAGEDENOISE);
+ }
+
+ return &type_enum;
+}
+
+const NodeEnum *DenoiseParams::get_prefilter_enum()
+{
+ static NodeEnum prefilter_enum;
+
+ if (prefilter_enum.empty()) {
+ prefilter_enum.insert("none", DENOISER_PREFILTER_NONE);
+ prefilter_enum.insert("fast", DENOISER_PREFILTER_FAST);
+ prefilter_enum.insert("accurate", DENOISER_PREFILTER_ACCURATE);
+ }
+
+ return &prefilter_enum;
+}
+
+NODE_DEFINE(DenoiseParams)
+{
+ NodeType *type = NodeType::add("denoise_params", create);
+
+ const NodeEnum *type_enum = get_type_enum();
+ const NodeEnum *prefilter_enum = get_prefilter_enum();
+
+ SOCKET_BOOLEAN(use, "Use", false);
+
+ SOCKET_ENUM(type, "Type", *type_enum, DENOISER_OPENIMAGEDENOISE);
+
+ SOCKET_INT(start_sample, "Start Sample", 0);
+
+ SOCKET_BOOLEAN(use_pass_albedo, "Use Pass Albedo", true);
+ SOCKET_BOOLEAN(use_pass_normal, "Use Pass Normal", false);
+
+ SOCKET_ENUM(prefilter, "Prefilter", *prefilter_enum, DENOISER_PREFILTER_FAST);
+
+ return type;
+}
+
+DenoiseParams::DenoiseParams() : Node(get_node_type())
+{
+}
+
CCL_NAMESPACE_END
diff --git a/intern/cycles/device/device_denoise.h b/intern/cycles/device/device_denoise.h
index 078efc5ee27..494ff940276 100644
--- a/intern/cycles/device/device_denoise.h
+++ b/intern/cycles/device/device_denoise.h
@@ -17,6 +17,7 @@
#pragma once
#include "device/device_memory.h"
+#include "graph/node.h"
#include "render/buffers.h"
CCL_NAMESPACE_BEGIN
@@ -51,8 +52,11 @@ enum DenoiserPrefilter {
DENOISER_PREFILTER_NUM,
};
-class DenoiseParams {
+/* NOTE: Is not a real scene node. Using Node API for ease of (de)serialization. */
+class DenoiseParams : public Node {
public:
+ NODE_DECLARE
+
/* Apply denoiser to image. */
bool use = false;
@@ -70,7 +74,10 @@ class DenoiseParams {
DenoiserPrefilter prefilter = DENOISER_PREFILTER_FAST;
- DenoiseParams() = default;
+ static const NodeEnum *get_type_enum();
+ static const NodeEnum *get_prefilter_enum();
+
+ DenoiseParams();
bool modified(const DenoiseParams &other) const
{
More information about the Bf-blender-cvs
mailing list