10#ifdef WITH_OPENIMAGEDENOISE
45 Device *best_device =
nullptr;
53 best_device = sub_device;
58 best_device = sub_device;
64 best_device = sub_device;
79 OptiXDenoiser::is_device_supported(denoiser_device->
info));
81 (void)denoiser_device;
89#ifdef WITH_OPENIMAGEDENOISE
91 OIDNDenoiserGPU::is_device_supported(denoiser_device->
info));
93 (void)denoiser_device;
100 Device *cpu_fallback_device,
102 Device *&single_denoiser_device)
108 single_denoiser_device =
nullptr;
111 single_denoiser_device = denoiser_device;
120 if (single_denoiser_device ==
nullptr) {
121 single_denoiser_device = cpu_fallback_device;
125 if (is_cpu_denoiser_device ==
false) {
130 return effective_denoise_params;
136 effective_denoise_params.
use_gpu =
false;
138 return effective_denoise_params;
142 Device *cpu_fallback_device,
146 Device *single_denoiser_device;
148 denoiser_device, cpu_fallback_device,
params, single_denoiser_device);
151 if (is_cpu_denoiser_device ==
false) {
154 return make_unique<OptiXDenoiser>(single_denoiser_device, effective_denoiser_params);
158#ifdef WITH_OPENIMAGEDENOISE
161 return make_unique<OIDNDenoiserGPU>(single_denoiser_device, effective_denoiser_params);
167 return make_unique<OIDNDenoiser>(is_cpu_denoiser_device ? single_denoiser_device :
169 effective_denoiser_params);
174#ifdef WITH_OPENIMAGEDENOISE
176 OIDNDenoiserGPU::is_device_supported(denoise_device_info))
181 (void)denoise_device_info;
185 if (OptiXDenoiser::is_device_supported(denoise_device_info)) {
190#ifdef WITH_OPENIMAGEDENOISE
200 : denoiser_device_(denoiser_device), denoise_kernels_are_loaded_(
false), params_(
params)
214 LOG(ERROR) <<
"Attempt to change denoiser type.";
231 progress->
set_status(
"Loading denoising kernels (may take a few minutes the first time)");
235 set_error(
"No device available to denoise on");
242 if (message.empty()) {
243 message =
"Failed loading denoising kernel, see console for errors";
void set_error(const string &error)
void set_params(const DenoiseParams ¶ms)
static DenoiserType automatic_viewport_denoiser_type(const DeviceInfo &denoise_device_info)
Denoiser(Device *denoiser_device, const DenoiseParams ¶ms)
virtual bool load_kernels(Progress *progress)
bool denoise_kernels_are_loaded_
Device * get_denoiser_device() const
static unique_ptr< Denoiser > create(Device *denoise_device, Device *cpu_fallback_device, const DenoiseParams ¶ms)
Device * denoiser_device_
const DenoiseParams & get_params() const
vector< DeviceInfo > multi_devices
DenoiserTypeMask denoisers
virtual const string & error_message()
virtual bool load_kernels(uint)
virtual void foreach_device(const function< void(Device *)> &callback)
virtual bool should_use_graphics_interop()
void set_status(const string &status_, const string &substatus_="")
@ DENOISER_OPENIMAGEDENOISE
bool use_gpu_oidn_denoiser(Device *denoiser_device, const DenoiseParams ¶ms)
DenoiseParams get_effective_denoise_params(Device *denoiser_device, Device *cpu_fallback_device, const DenoiseParams ¶ms, Device *&single_denoiser_device)
static Device * find_best_device(Device *device, const DenoiserType type)
bool use_optix_denoiser(Device *denoiser_device, const DenoiseParams ¶ms)
static CCL_NAMESPACE_BEGIN bool is_single_device(const Device *device)
bool use_gpu_oidn_denoiser(Device *denoiser_device, const DenoiseParams ¶ms)
DenoiseParams get_effective_denoise_params(Device *denoiser_device, Device *cpu_fallback_device, const DenoiseParams ¶ms, Device *&single_denoiser_device)
bool use_optix_denoiser(Device *denoiser_device, const DenoiseParams ¶ms)
#define CCL_NAMESPACE_END
#define KERNEL_FEATURE_DENOISING
#define DCHECK(expression)
static CCL_NAMESPACE_BEGIN bool openimagedenoise_supported()