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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-04 19:41:45 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-04 19:41:45 +0400
commit5d18bef7622a202cf741bb907f62d857cad63576 (patch)
tree23b0a5497219b35097933494de3129d53a10fa56 /intern
parent601e5ad2f44bb73e58fb9465f75e969a4160fe7e (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')
-rw-r--r--intern/cycles/kernel/kernel_path.h32
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) {