diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-06-04 19:41:45 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-06-04 19:41:45 +0400 |
commit | 5d18bef7622a202cf741bb907f62d857cad63576 (patch) | |
tree | 23b0a5497219b35097933494de3129d53a10fa56 /intern/cycles | |
parent | 601e5ad2f44bb73e58fb9465f75e969a4160fe7e (diff) |
Fix #35614: cycles objects on mask layer in render layers were writing passes
such as motion/uv/normal but they should have been excluded from them.
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/kernel/kernel_path.h | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h index 3e815ffe400..5d02f059ec8 100644 --- a/intern/cycles/kernel/kernel_path.h +++ b/intern/cycles/kernel/kernel_path.h @@ -326,19 +326,6 @@ __device float4 kernel_path_progressive(KernelGlobals *kg, RNG *rng, int sample, float rbsdf = path_rng(kg, rng, sample, rng_offset + PRNG_BSDF); shader_eval_surface(kg, &sd, rbsdf, state.flag, SHADER_CONTEXT_MAIN); - kernel_write_data_passes(kg, buffer, &L, &sd, sample, state.flag, throughput); - - /* blurring of bsdf after bounces, for rays that have a small likelihood - * of following this particular path (diffuse, rough glossy) */ - if(kernel_data.integrator.filter_glossy != FLT_MAX) { - float blur_pdf = kernel_data.integrator.filter_glossy*min_ray_pdf; - - if(blur_pdf < 1.0f) { - float blur_roughness = sqrtf(1.0f - blur_pdf)*0.5f; - shader_bsdf_blur(kg, &sd, blur_roughness); - } - } - /* holdout */ #ifdef __HOLDOUT__ if((sd.flag & (SD_HOLDOUT|SD_HOLDOUT_MASK)) && (state.flag & PATH_RAY_CAMERA)) { @@ -359,6 +346,20 @@ __device float4 kernel_path_progressive(KernelGlobals *kg, RNG *rng, int sample, } #endif + /* holdout mask objects do not write data passes */ + kernel_write_data_passes(kg, buffer, &L, &sd, sample, state.flag, throughput); + + /* blurring of bsdf after bounces, for rays that have a small likelihood + * of following this particular path (diffuse, rough glossy) */ + if(kernel_data.integrator.filter_glossy != FLT_MAX) { + float blur_pdf = kernel_data.integrator.filter_glossy*min_ray_pdf; + + if(blur_pdf < 1.0f) { + float blur_roughness = sqrtf(1.0f - blur_pdf)*0.5f; + shader_bsdf_blur(kg, &sd, blur_roughness); + } + } + #ifdef __EMISSION__ /* emission */ if(sd.flag & SD_EMISSION) { @@ -993,8 +994,6 @@ __device float4 kernel_path_non_progressive(KernelGlobals *kg, RNG *rng, int sam shader_eval_surface(kg, &sd, rbsdf, state.flag, SHADER_CONTEXT_MAIN); shader_merge_closures(kg, &sd); - kernel_write_data_passes(kg, buffer, &L, &sd, sample, state.flag, throughput); - /* holdout */ #ifdef __HOLDOUT__ if((sd.flag & (SD_HOLDOUT|SD_HOLDOUT_MASK))) { @@ -1015,6 +1014,9 @@ __device float4 kernel_path_non_progressive(KernelGlobals *kg, RNG *rng, int sam } #endif + /* holdout mask objects do not write data passes */ + kernel_write_data_passes(kg, buffer, &L, &sd, sample, state.flag, throughput); + #ifdef __EMISSION__ /* emission */ if(sd.flag & SD_EMISSION) { |