diff options
Diffstat (limited to 'intern/cycles/kernel/kernel_accumulate.h')
-rw-r--r-- | intern/cycles/kernel/kernel_accumulate.h | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/intern/cycles/kernel/kernel_accumulate.h b/intern/cycles/kernel/kernel_accumulate.h index d4bb1ef8685..5f32150d33c 100644 --- a/intern/cycles/kernel/kernel_accumulate.h +++ b/intern/cycles/kernel/kernel_accumulate.h @@ -473,10 +473,8 @@ ccl_device_inline void kernel_accum_transparent(KernelGlobals kg, ConstIntegratorState state, const uint32_t path_flag, const float transparent, - ccl_global float *ccl_restrict render_buffer) + ccl_global float *ccl_restrict buffer) { - ccl_global float *buffer = kernel_accum_pixel_render_buffer(kg, state, render_buffer); - if (kernel_data.film.light_pass_flag & PASSMASK(COMBINED)) { kernel_write_pass_float(buffer + kernel_data.film.pass_combined + 3, transparent); } @@ -484,6 +482,17 @@ ccl_device_inline void kernel_accum_transparent(KernelGlobals kg, kernel_accum_shadow_catcher_transparent_only(kg, path_flag, transparent, buffer); } +/* Write holdout to render buffer. */ +ccl_device_inline void kernel_accum_holdout(KernelGlobals kg, + ConstIntegratorState state, + const uint32_t path_flag, + const float transparent, + ccl_global float *ccl_restrict render_buffer) +{ + ccl_global float *buffer = kernel_accum_pixel_render_buffer(kg, state, render_buffer); + kernel_accum_transparent(kg, state, path_flag, transparent, buffer); +} + /* Write background contribution to render buffer. * * Includes transparency, matching kernel_accum_transparent. */ @@ -501,7 +510,7 @@ ccl_device_inline void kernel_accum_background(KernelGlobals kg, const uint32_t path_flag = INTEGRATOR_STATE(state, path, flag); if (is_transparent_background_ray) { - kernel_accum_transparent(kg, state, path_flag, transparent, render_buffer); + kernel_accum_transparent(kg, state, path_flag, transparent, buffer); } else { const int sample = INTEGRATOR_STATE(state, path, sample); |