diff options
author | Sergey Sharybin <sergey@blender.org> | 2021-09-21 18:03:22 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2021-10-05 17:19:14 +0300 |
commit | 6e268a749fee16b442bcb3fba6cb6e08850d8389 (patch) | |
tree | effa2244461bc000856218ec44b8990305aac91c /intern/cycles/integrator/pass_accessor_gpu.cpp | |
parent | 758f3f7456ac1e31f411c4ac1b19760ad6e5539c (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.cpp | 15 |
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)}; |