Commit: aa5426d96bac0335e15c48b961dbf3b405cfec3a
Author: Sergey Sharybin
Date:   Tue Jun 15 14:44:19 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBaa5426d96bac0335e15c48b961dbf3b405cfec3a

Fix OptiX denoiser for transparent film in Cycles X

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

M       intern/cycles/device/optix/device_impl.cpp
M       intern/cycles/kernel/device/cuda/kernel.cu

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

diff --git a/intern/cycles/device/optix/device_impl.cpp 
b/intern/cycles/device/optix/device_impl.cpp
index b9f624f0ba0..46369e18f49 100644
--- a/intern/cycles/device/optix/device_impl.cpp
+++ b/intern/cycles/device/optix/device_impl.cpp
@@ -616,8 +616,8 @@ bool 
OptiXDevice::denoise_filter_convert_from_rgb(OptiXDeviceQueue *queue,
 {
   const int work_size = task.buffer_params.width * task.buffer_params.height;
 
-  const int pass_combined_denoised = 
task.buffer_params.get_pass_offset(PASS_COMBINED,
-                                                                        
PassMode::DENOISED);
+  const int pass_noisy = task.buffer_params.get_pass_offset(PASS_COMBINED, 
PassMode::NOISY);
+  const int pass_denoised = task.buffer_params.get_pass_offset(PASS_COMBINED, 
PassMode::DENOISED);
   const int pass_sample_count = 
task.buffer_params.get_pass_offset(PASS_SAMPLE_COUNT);
 
   void *args[] = {const_cast<device_ptr *>(&d_input_rgb),
@@ -630,7 +630,8 @@ bool 
OptiXDevice::denoise_filter_convert_from_rgb(OptiXDeviceQueue *queue,
                   const_cast<int *>(&task.buffer_params.stride),
                   const_cast<int *>(&task.buffer_params.pass_stride),
                   const_cast<int *>(&task.num_samples),
-                  const_cast<int *>(&pass_combined_denoised),
+                  const_cast<int *>(&pass_noisy),
+                  const_cast<int *>(&pass_denoised),
                   const_cast<int *>(&pass_sample_count)};
 
   return queue->enqueue(DEVICE_KERNEL_FILTER_CONVERT_FROM_RGB, work_size, 
args);
diff --git a/intern/cycles/kernel/device/cuda/kernel.cu 
b/intern/cycles/kernel/device/cuda/kernel.cu
index 13f89c7d9c1..3cedaa3623a 100644
--- a/intern/cycles/kernel/device/cuda/kernel.cu
+++ b/intern/cycles/kernel/device/cuda/kernel.cu
@@ -681,6 +681,7 @@ extern "C" __global__ void 
CUDA_LAUNCH_BOUNDS(CUDA_KERNEL_BLOCK_NUM_THREADS,
                                         int stride,
                                         int pass_stride,
                                         int num_samples,
+                                        int pass_noisy,
                                         int pass_denoised,
                                         int pass_sample_count)
 {
@@ -705,11 +706,13 @@ extern "C" __global__ void 
CUDA_LAUNCH_BOUNDS(CUDA_KERNEL_BLOCK_NUM_THREADS,
     pixel_scale = __float_as_uint(buffer[pass_sample_count]);
   }
 
+  const float *noisy_pixel = buffer + pass_noisy;
   float *denoised_pixel = buffer + pass_denoised;
 
   denoised_pixel[0] = in[0] * pixel_scale;
   denoised_pixel[1] = in[1] * pixel_scale;
   denoised_pixel[2] = in[2] * pixel_scale;
+  denoised_pixel[3] = noisy_pixel[3];
 }
 
 #endif

_______________________________________________
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