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:
authorSergey Sharybin <sergey@blender.org>2021-09-21 18:03:22 +0300
committerSergey Sharybin <sergey@blender.org>2021-10-05 17:19:14 +0300
commit6e268a749fee16b442bcb3fba6cb6e08850d8389 (patch)
treeeffa2244461bc000856218ec44b8990305aac91c /intern/cycles/integrator/pass_accessor_gpu.cpp
parent758f3f7456ac1e31f411c4ac1b19760ad6e5539c (diff)
Fix adaptive sampling artifacts on tile boundaries
Implement an overscan support for tiles, so that adaptive sampling can rely on the pixels neighbourhood. Differential Revision: https://developer.blender.org/D12599
Diffstat (limited to 'intern/cycles/integrator/pass_accessor_gpu.cpp')
-rw-r--r--intern/cycles/integrator/pass_accessor_gpu.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/intern/cycles/integrator/pass_accessor_gpu.cpp b/intern/cycles/integrator/pass_accessor_gpu.cpp
index eb80ba99655..7b01d061708 100644
--- a/intern/cycles/integrator/pass_accessor_gpu.cpp
+++ b/intern/cycles/integrator/pass_accessor_gpu.cpp
@@ -43,10 +43,13 @@ void PassAccessorGPU::run_film_convert_kernels(DeviceKernel kernel,
KernelFilmConvert kfilm_convert;
init_kernel_film_convert(&kfilm_convert, buffer_params, destination);
- const int work_size = buffer_params.width * buffer_params.height;
+ const int work_size = buffer_params.window_width * buffer_params.window_height;
const int destination_stride = destination.stride != 0 ? destination.stride :
- buffer_params.width;
+ buffer_params.window_width;
+
+ const int offset = buffer_params.window_x * buffer_params.pass_stride +
+ buffer_params.window_y * buffer_params.stride * buffer_params.pass_stride;
if (destination.d_pixels) {
DCHECK_EQ(destination.stride, 0) << "Custom stride for float destination is not implemented.";
@@ -55,8 +58,8 @@ void PassAccessorGPU::run_film_convert_kernels(DeviceKernel kernel,
const_cast<device_ptr *>(&destination.d_pixels),
const_cast<device_ptr *>(&render_buffers->buffer.device_pointer),
const_cast<int *>(&work_size),
- const_cast<int *>(&buffer_params.width),
- const_cast<int *>(&buffer_params.offset),
+ const_cast<int *>(&buffer_params.window_width),
+ const_cast<int *>(&offset),
const_cast<int *>(&buffer_params.stride),
const_cast<int *>(&destination.offset),
const_cast<int *>(&destination_stride)};
@@ -70,8 +73,8 @@ void PassAccessorGPU::run_film_convert_kernels(DeviceKernel kernel,
const_cast<device_ptr *>(&destination.d_pixels_half_rgba),
const_cast<device_ptr *>(&render_buffers->buffer.device_pointer),
const_cast<int *>(&work_size),
- const_cast<int *>(&buffer_params.width),
- const_cast<int *>(&buffer_params.offset),
+ const_cast<int *>(&buffer_params.window_width),
+ const_cast<int *>(&offset),
const_cast<int *>(&buffer_params.stride),
const_cast<int *>(&destination.offset),
const_cast<int *>(&destination_stride)};