20 return make_unique<OptiXDenoiser>(path_trace_device,
params);
26 return make_unique<OIDNDenoiser>(path_trace_device, oidn_params);
30 : path_trace_device_(path_trace_device), params_(
params)
43 LOG(ERROR) <<
"Attempt to change denoiser type.";
56 if (!denoiser_device) {
62 << denoiser_device->
info.
id <<
")";
98 Device *best_device =
nullptr;
106 best_device = sub_device;
112 best_device = sub_device;
126 for (
const DeviceInfo &device_info : device_infos) {
127 if ((device_info.denoisers & denoiser_type) == 0) {
145 const uint device_type_mask,
149 if (device_infos.empty()) {
159 unique_ptr<Device> denoiser_device(
162 if (!denoiser_device) {
166 if (denoiser_device->have_error()) {
175 return denoiser_device;
199 progress->
set_status(
"Loading denoising kernels (may take a few minutes the first time)");
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
virtual Device * ensure_denoiser_device(Progress *progress)
static unique_ptr< Denoiser > create(Device *path_trace_device, const DenoiseParams ¶ms)
bool device_creation_attempted_
void set_params(const DenoiseParams ¶ms)
unique_ptr< Device > local_denoiser_device_
virtual bool load_kernels(Progress *progress)
virtual uint get_device_type_mask() const =0
Device * get_denoiser_device() const
Device * denoiser_device_
const DenoiseParams & get_params() const
Denoiser(Device *path_trace_device, const DenoiseParams ¶ms)
Device * path_trace_device_
vector< DeviceInfo > multi_devices
DenoiserTypeMask denoisers
static vector< DeviceInfo > available_devices(uint device_type_mask=DEVICE_MASK_ALL)
static Device * create(const DeviceInfo &info, Stats &stats, Profiler &profiler)
virtual void foreach_device(const function< void(Device *)> &callback)
virtual void set_error(const string &error)
virtual bool should_use_graphics_interop()
void set_status(const string &status_, const string &substatus_="")
#define CCL_NAMESPACE_END
@ DENOISER_OPENIMAGEDENOISE
static unique_ptr< Device > create_denoiser_device(Device *path_trace_device, const uint device_type_mask, DenoiserType denoiser_type)
static DeviceInfo find_best_denoiser_device_info(const vector< DeviceInfo > &device_infos, DenoiserType denoiser_type)
static bool is_single_supported_device(Device *device, DenoiserType type)
static Device * find_best_device(Device *device, DenoiserType type)
@ KERNEL_FEATURE_DENOISING
#define DCHECK(expression)