From 9b2deb37a04c3d26c8772bf30536ce82b3fa6864 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 30 Oct 2023 14:37:25 +0100 Subject: [PATCH] Fix Cycles render not stopping on OpenImageDenoise error Stop so that render farms do not save an image that failed to be denoised properly and assume it is correct. --- intern/cycles/integrator/denoiser.h | 5 +++++ intern/cycles/integrator/denoiser_oidn.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/intern/cycles/integrator/denoiser.h b/intern/cycles/integrator/denoiser.h index 035bdb99bec..04d161cea39 100644 --- a/intern/cycles/integrator/denoiser.h +++ b/intern/cycles/integrator/denoiser.h @@ -97,6 +97,11 @@ class Denoiser { return is_cancelled_cb(); } + void set_error(const string &error) + { + path_trace_device_->set_error(error); + } + protected: Denoiser(Device *path_trace_device, const DenoiseParams ¶ms); diff --git a/intern/cycles/integrator/denoiser_oidn.cpp b/intern/cycles/integrator/denoiser_oidn.cpp index 621b8f02812..e0a24856a7f 100644 --- a/intern/cycles/integrator/denoiser_oidn.cpp +++ b/intern/cycles/integrator/denoiser_oidn.cpp @@ -181,7 +181,7 @@ class OIDNDenoiseContext { const char *error_message; const oidn::Error error = oidn_device.getError(error_message); if (error != oidn::Error::None && error != oidn::Error::Cancelled) { - LOG(ERROR) << "OpenImageDenoise error: " << error_message; + denoiser_->set_error("OpenImageDenoise error: " + string(error_message)); } postprocess_output(oidn_color_pass, oidn_output_pass);