diff options
author | Hristo Gueorguiev <prem.nirved@gmail.com> | 2017-03-08 19:39:40 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-03-09 19:09:37 +0300 |
commit | 06c051363b509f7c3c40a803b87739fe0e2a8576 (patch) | |
tree | 83f6023d3927c98175082bf44f3f6623afc856b1 /intern/cycles/kernel/kernels | |
parent | e8b5a5bf5b63ef1c8980f8da95be32cad4d2cf0e (diff) |
Cycles: split kernel_shadow_blocked to AO & DL parts
Reduces memory allocation for split kernel.
This allows for faster rendering due to bigger global size,
specially when GPU memory is limited.
Perfromance results:
R9 290 total render time
Before After Change
BMW 4:37 4:34 -1.1 %
Classroom 14:43 14:30 -1.5 %
Fishy Cat 11:20 11:04 -2.4 %
Koro 12:11 12:04 -1.0 %
Pabellon Barcelona 22:01 20:44 -5.8 %
Pabellon Barcelona(*) 15:32 15:09 -2.5 %
(*) without glossy connected to volume
Diffstat (limited to 'intern/cycles/kernel/kernels')
-rw-r--r-- | intern/cycles/kernel/kernels/cpu/kernel_cpu.h | 3 | ||||
-rw-r--r-- | intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h | 9 | ||||
-rw-r--r-- | intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_ao.cl (renamed from intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked.cl) | 6 | ||||
-rw-r--r-- | intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl | 26 | ||||
-rw-r--r-- | intern/cycles/kernel/kernels/opencl/kernel_split.cl | 3 |
5 files changed, 39 insertions, 8 deletions
diff --git a/intern/cycles/kernel/kernels/cpu/kernel_cpu.h b/intern/cycles/kernel/kernels/cpu/kernel_cpu.h index 8ce420d8a48..896b80d783e 100644 --- a/intern/cycles/kernel/kernels/cpu/kernel_cpu.h +++ b/intern/cycles/kernel/kernels/cpu/kernel_cpu.h @@ -81,7 +81,8 @@ DECLARE_SPLIT_KERNEL_FUNCTION(shader_eval) DECLARE_SPLIT_KERNEL_FUNCTION(holdout_emission_blurring_pathtermination_ao) DECLARE_SPLIT_KERNEL_FUNCTION(subsurface_scatter) DECLARE_SPLIT_KERNEL_FUNCTION(direct_lighting) -DECLARE_SPLIT_KERNEL_FUNCTION(shadow_blocked) +DECLARE_SPLIT_KERNEL_FUNCTION(shadow_blocked_ao) +DECLARE_SPLIT_KERNEL_FUNCTION(shadow_blocked_dl) DECLARE_SPLIT_KERNEL_FUNCTION(next_iteration_setup) DECLARE_SPLIT_KERNEL_FUNCTION(indirect_subsurface) DECLARE_SPLIT_KERNEL_FUNCTION(buffer_update) diff --git a/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h b/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h index 8c519a21d95..ba6b1033915 100644 --- a/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h +++ b/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h @@ -48,7 +48,8 @@ # include "split/kernel_holdout_emission_blurring_pathtermination_ao.h" # include "split/kernel_subsurface_scatter.h" # include "split/kernel_direct_lighting.h" -# include "split/kernel_shadow_blocked.h" +# include "split/kernel_shadow_blocked_ao.h" +# include "split/kernel_shadow_blocked_dl.h" # include "split/kernel_next_iteration_setup.h" # include "split/kernel_indirect_subsurface.h" # include "split/kernel_buffer_update.h" @@ -177,7 +178,8 @@ DEFINE_SPLIT_KERNEL_FUNCTION(shader_eval) DEFINE_SPLIT_KERNEL_FUNCTION(holdout_emission_blurring_pathtermination_ao) DEFINE_SPLIT_KERNEL_FUNCTION(subsurface_scatter) DEFINE_SPLIT_KERNEL_FUNCTION(direct_lighting) -DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked) +DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked_ao) +DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked_dl) DEFINE_SPLIT_KERNEL_FUNCTION(next_iteration_setup) DEFINE_SPLIT_KERNEL_FUNCTION(indirect_subsurface) DEFINE_SPLIT_KERNEL_FUNCTION(buffer_update) @@ -204,7 +206,8 @@ void KERNEL_FUNCTION_FULL_NAME(register_functions)(void(*reg)(const char* name, REGISTER(holdout_emission_blurring_pathtermination_ao); REGISTER(subsurface_scatter); REGISTER(direct_lighting); - REGISTER(shadow_blocked); + REGISTER(shadow_blocked_ao); + REGISTER(shadow_blocked_dl); REGISTER(next_iteration_setup); REGISTER(indirect_subsurface); REGISTER(buffer_update); diff --git a/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked.cl b/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_ao.cl index 3693f7f9c9d..1c96d67fec2 100644 --- a/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked.cl +++ b/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_ao.cl @@ -16,11 +16,11 @@ #include "kernel_compat_opencl.h" #include "split/kernel_split_common.h" -#include "split/kernel_shadow_blocked.h" +#include "split/kernel_shadow_blocked_ao.h" -__kernel void kernel_ocl_path_trace_shadow_blocked( +__kernel void kernel_ocl_path_trace_shadow_blocked_ao( KernelGlobals *kg, ccl_constant KernelData *data) { - kernel_shadow_blocked(kg); + kernel_shadow_blocked_ao(kg); } diff --git a/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl b/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl new file mode 100644 index 00000000000..2231f767c0c --- /dev/null +++ b/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl @@ -0,0 +1,26 @@ +/* + * Copyright 2011-2015 Blender Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "kernel_compat_opencl.h" +#include "split/kernel_split_common.h" +#include "split/kernel_shadow_blocked_dl.h" + +__kernel void kernel_ocl_path_trace_shadow_blocked_dl( + KernelGlobals *kg, + ccl_constant KernelData *data) +{ + kernel_shadow_blocked_dl(kg); +} diff --git a/intern/cycles/kernel/kernels/opencl/kernel_split.cl b/intern/cycles/kernel/kernels/opencl/kernel_split.cl index 7a947c48e60..2d9e64824e7 100644 --- a/intern/cycles/kernel/kernels/opencl/kernel_split.cl +++ b/intern/cycles/kernel/kernels/opencl/kernel_split.cl @@ -27,7 +27,8 @@ #include "kernel_holdout_emission_blurring_pathtermination_ao.cl" #include "kernel_subsurface_scatter.cl" #include "kernel_direct_lighting.cl" -#include "kernel_shadow_blocked.cl" +#include "kernel_shadow_blocked_ao.cl" +#include "kernel_shadow_blocked_dl.cl" #include "kernel_next_iteration_setup.cl" #include "kernel_indirect_subsurface.cl" #include "kernel_buffer_update.cl" |