Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Mours <pmours@nvidia.com>2021-11-12 20:59:50 +0300
committerPatrick Mours <pmours@nvidia.com>2021-11-12 20:59:50 +0300
commit9d0d4b8601dfb9de335dd7af32562cbfb94238a6 (patch)
tree23cd9ae91b3ad9268fe421cf99a2481732c02304 /intern/cycles/device/optix/device_impl.cpp
parent2b394e1108281bcfe6602b08b3e9cd230003d22b (diff)
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
Diffstat (limited to 'intern/cycles/device/optix/device_impl.cpp')
-rw-r--r--intern/cycles/device/optix/device_impl.cpp13
1 files changed, 1 insertions, 12 deletions
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;