[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57230] trunk/blender/intern/cycles/kernel /kernel_path.h: Fix #35614: cycles objects on mask layer in render layers were writing passes

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Jun 4 17:41:45 CEST 2013


Revision: 57230
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57230
Author:   blendix
Date:     2013-06-04 15:41:45 +0000 (Tue, 04 Jun 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_path.h

Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_path.h	2013-06-04 15:36:00 UTC (rev 57229)
+++ trunk/blender/intern/cycles/kernel/kernel_path.h	2013-06-04 15:41:45 UTC (rev 57230)
@@ -326,19 +326,6 @@
 		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 @@
 		}
 #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 @@
 		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 @@
 		}
 #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) {




More information about the Bf-blender-cvs mailing list