Blender  V3.3
denoiser_oidn.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #pragma once
5 
6 #include "integrator/denoiser.h"
7 #include "util/thread.h"
8 #include "util/unique_ptr.h"
9 
11 
12 /* Implementation of denoising API which uses OpenImageDenoise library. */
13 class OIDNDenoiser : public Denoiser {
14  public:
15  /* Forwardly declared state which might be using compile-flag specific fields, such as
16  * OpenImageDenoise device and filter handles. */
17  class State;
18 
19  OIDNDenoiser(Device *path_trace_device, const DenoiseParams &params);
20 
21  virtual bool denoise_buffer(const BufferParams &buffer_params,
22  RenderBuffers *render_buffers,
23  const int num_samples,
24  bool allow_inplace_modification) override;
25 
26  protected:
27  virtual uint get_device_type_mask() const override;
28  virtual Device *ensure_denoiser_device(Progress *progress) 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
Definition: BLI_sys_types.h:67
OIDNDenoiser(Device *path_trace_device, const DenoiseParams &params)
virtual bool denoise_buffer(const BufferParams &buffer_params, RenderBuffers *render_buffers, const int num_samples, bool allow_inplace_modification) override
virtual uint get_device_type_mask() const override
static thread_mutex mutex_
Definition: denoiser_oidn.h:32
virtual Device * ensure_denoiser_device(Progress *progress) override
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
ccl_gpu_kernel_postfix ccl_global float int int int int ccl_global const float int int int int int int int int int int int int num_samples
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex
Definition: thread.h:27