Fix: Respect Blender Cycles setting for GPU denoising

Previously, GPU denoisers were ignoring settings about render
configuration and were using any available GPU. With these changes,
GPU denoisers will use the device selected in Blender Cycles
settings.
This allows any GPU denoiser to be used with CPU rendering.

Pull Request: https://projects.blender.org/blender/blender/pulls/118841
This commit is contained in:
Nikita Sirgienko
2024-06-03 22:41:25 +02:00
committed by Nikita Sirgienko
parent a331ebb324
commit 4651f8a08f
22 changed files with 384 additions and 343 deletions

View File

@@ -50,9 +50,20 @@ Session::Session(const SessionParams &params_, const SceneParams &scene_params)
scene = new Scene(scene_params, device);
if (params.device == params.denoise_device) {
denoise_device = device;
}
else {
denoise_device = Device::create(params.denoise_device, stats, profiler);
if (denoise_device->have_error()) {
progress.set_error(denoise_device->error_message());
}
}
/* Configure path tracer. */
path_trace_ = make_unique<PathTrace>(
device, scene->film, &scene->dscene, render_scheduler_, tile_manager_);
device, denoise_device, scene->film, &scene->dscene, render_scheduler_, tile_manager_);
path_trace_->set_progress(&progress);
path_trace_->progress_update_cb = [&]() { update_status_time(); };
@@ -91,6 +102,9 @@ Session::~Session()
/* Destroy scene and device. */
delete scene;
if (denoise_device != device) {
delete denoise_device;
}
delete device;
/* Stop task scheduler. */