Blender V4.3
denoise.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "device/denoise.h"
6
8
10{
11 switch (type) {
12 case DENOISER_OPTIX:
13 return "OptiX";
15 return "OpenImageDenoise";
16
17 case DENOISER_NUM:
18 case DENOISER_NONE:
19 case DENOISER_ALL:
20 return "UNKNOWN";
21 }
22
23 return "UNKNOWN";
24}
25
27{
28 static NodeEnum type_enum;
29
30 if (type_enum.empty()) {
31 type_enum.insert("optix", DENOISER_OPTIX);
32 type_enum.insert("openimageio", DENOISER_OPENIMAGEDENOISE);
33 }
34
35 return &type_enum;
36}
37
39{
40 static NodeEnum prefilter_enum;
41
42 if (prefilter_enum.empty()) {
43 prefilter_enum.insert("none", DENOISER_PREFILTER_NONE);
44 prefilter_enum.insert("fast", DENOISER_PREFILTER_FAST);
45 prefilter_enum.insert("accurate", DENOISER_PREFILTER_ACCURATE);
46 }
47
48 return &prefilter_enum;
49}
50
52{
53 static NodeEnum quality_enum;
54
55 if (quality_enum.empty()) {
56 quality_enum.insert("high", DENOISER_QUALITY_HIGH);
57 quality_enum.insert("balanced", DENOISER_QUALITY_BALANCED);
58 quality_enum.insert("fast", DENOISER_QUALITY_FAST);
59 }
60
61 return &quality_enum;
62}
63
65{
66 NodeType *type = NodeType::add("denoise_params", create);
67
68 const NodeEnum *type_enum = get_type_enum();
69 const NodeEnum *prefilter_enum = get_prefilter_enum();
70 const NodeEnum *quality_enum = get_quality_enum();
71
72 SOCKET_BOOLEAN(use, "Use", false);
73
74 SOCKET_ENUM(type, "Type", *type_enum, DENOISER_OPENIMAGEDENOISE);
75
76 SOCKET_INT(start_sample, "Start Sample", 0);
77
78 SOCKET_BOOLEAN(use_pass_albedo, "Use Pass Albedo", true);
79 SOCKET_BOOLEAN(use_pass_normal, "Use Pass Normal", false);
80
81 SOCKET_BOOLEAN(temporally_stable, "Temporally Stable", false);
82
83 SOCKET_ENUM(prefilter, "Prefilter", *prefilter_enum, DENOISER_PREFILTER_FAST);
84 SOCKET_ENUM(quality, "Quality", *quality_enum, DENOISER_QUALITY_HIGH);
85
86 return type;
87}
88
89DenoiseParams::DenoiseParams() : Node(get_node_type()) {}
90
static const NodeEnum * get_quality_enum()
Definition denoise.cpp:51
static const NodeEnum * get_prefilter_enum()
Definition denoise.cpp:38
static const NodeEnum * get_type_enum()
Definition denoise.cpp:26
CCL_NAMESPACE_BEGIN const char * denoiserTypeToHumanReadable(DenoiserType type)
Definition denoise.cpp:9
@ DENOISER_QUALITY_FAST
Definition denoise.h:46
@ DENOISER_QUALITY_BALANCED
Definition denoise.h:45
@ DENOISER_QUALITY_HIGH
Definition denoise.h:44
@ DENOISER_PREFILTER_FAST
Definition denoise.h:34
@ DENOISER_PREFILTER_NONE
Definition denoise.h:30
@ DENOISER_PREFILTER_ACCURATE
Definition denoise.h:38
DenoiserType
Definition denoise.h:13
@ DENOISER_NONE
Definition denoise.h:18
@ DENOISER_OPTIX
Definition denoise.h:14
@ DENOISER_OPENIMAGEDENOISE
Definition denoise.h:15
@ DENOISER_ALL
Definition denoise.h:19
@ DENOISER_NUM
Definition denoise.h:16
#define CCL_NAMESPACE_END
#define SOCKET_INT(name, ui_name, default_value,...)
Definition node_type.h:194
#define NODE_DEFINE(structname)
Definition node_type.h:148
#define SOCKET_BOOLEAN(name, ui_name, default_value,...)
Definition node_type.h:192
#define SOCKET_ENUM(name, ui_name, values, default_value,...)
Definition node_type.h:216
bool empty() const
Definition node_enum.h:17
void insert(const char *x, int y)
Definition node_enum.h:21
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=NULL)