Blender V4.3
denoiser_oidn.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#pragma once
6
8#include "util/thread.h"
9#include "util/unique_ptr.h"
10
12
13/* Implementation of a CPU based denoiser which uses OpenImageDenoise library. */
14class OIDNDenoiser : public Denoiser {
15 public:
16 /* Forwardly declared state which might be using compile-flag specific fields, such as
17 * OpenImageDenoise device and filter handles. */
18 class State;
19
20 OIDNDenoiser(Device *denoiser_device, const DenoiseParams &params);
21
22 virtual bool denoise_buffer(const BufferParams &buffer_params,
23 RenderBuffers *render_buffers,
24 const int num_samples,
25 bool allow_inplace_modification) override;
26
27 protected:
28 virtual uint get_device_type_mask() const override;
29
30 /* We only perform one denoising at a time, since OpenImageDenoise itself is multithreaded.
31 * Use this mutex whenever images are passed to the OIDN and needs to be denoised. */
33};
34
unsigned int uint
virtual bool denoise_buffer(const BufferParams &buffer_params, RenderBuffers *render_buffers, const int num_samples, bool allow_inplace_modification) override
OIDNDenoiser(Device *denoiser_device, const DenoiseParams &params)
virtual uint get_device_type_mask() const override
static thread_mutex mutex_
#define CCL_NAMESPACE_END
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex
Definition thread.h:29