Commit: 9d0d4b8601dfb9de335dd7af32562cbfb94238a6
Author: Patrick Mours
Date:   Fri Nov 12 18:59:50 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rB9d0d4b8601dfb9de335dd7af32562cbfb94238a6

Fix T93029: OptiX denoising artifacts at high sample counts in specific scenes

Partially reverts commit rB440a3475b8f5410e5c41bfbed5ce82771b41356f because
"optixDenoiserComputeIntensity" does not currently support input images that 
are not packed (the
"pixelStrideInBytes" field is not zero). As a result the intensity calculation 
would take into account
data from other passes in the image, some of which was scaled by the number of 
samples still and
therefore produce widely incorrect results that then caused artifacts in the 
denoised image.

Maniphest Tasks: T93029

===================================================================

M       intern/cycles/device/optix/device_impl.cpp

===================================================================

diff --git a/intern/cycles/device/optix/device_impl.cpp 
b/intern/cycles/device/optix/device_impl.cpp
index 8e554d0ba2f..bb690551c04 100644
--- a/intern/cycles/device/optix/device_impl.cpp
+++ b/intern/cycles/device/optix/device_impl.cpp
@@ -886,8 +886,7 @@ bool 
OptiXDevice::denoise_configure_if_needed(DenoiseContext &context)
   denoiser_.scratch_offset = sizes.stateSizeInBytes;
 
   /* Allocate denoiser state if tile size has changed since last setup. */
-  denoiser_.state.alloc_to_device(denoiser_.scratch_offset + 
denoiser_.scratch_size +
-                                  sizeof(float));
+  denoiser_.state.alloc_to_device(denoiser_.scratch_offset + 
denoiser_.scratch_size);
 
   /* Initialize denoiser state for the current tile size. */
   const OptixResult result = optixDenoiserSetup(
@@ -971,16 +970,6 @@ bool OptiXDevice::denoise_run(DenoiseContext &context, 
const DenoisePass &pass)
 
   /* Finally run denoising. */
   OptixDenoiserParams params = {}; /* All parameters are disabled/zero. */
-  params.hdrIntensity = denoiser_.state.device_pointer + 
denoiser_.scratch_offset +
-                        denoiser_.scratch_size;
-
-  optix_assert(
-      optixDenoiserComputeIntensity(denoiser_.optix_denoiser,
-                                    denoiser_.queue.stream(),
-                                    &color_layer,
-                                    params.hdrIntensity,
-                                    denoiser_.state.device_pointer + 
denoiser_.scratch_offset,
-                                    denoiser_.scratch_size));
 
   OptixDenoiserLayer image_layers = {};
   image_layers.input = color_layer;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to