[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55728] trunk/blender/intern/cycles/kernel : Cycles: small code cleanup + fix SSS closure mixed with other closures doing

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Apr 2 18:37:29 CEST 2013


Revision: 55728
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55728
Author:   blendix
Date:     2013-04-02 16:37:28 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Cycles: small code cleanup + fix SSS closure mixed with other closures doing
a bit too much work.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_displace.h
    trunk/blender/intern/cycles/kernel/kernel_emission.h
    trunk/blender/intern/cycles/kernel/kernel_path.h
    trunk/blender/intern/cycles/kernel/kernel_shader.h
    trunk/blender/intern/cycles/kernel/kernel_subsurface.h
    trunk/blender/intern/cycles/kernel/kernel_types.h

Modified: trunk/blender/intern/cycles/kernel/kernel_displace.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_displace.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_displace.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -66,8 +66,6 @@
 		out = shader_eval_background(kg, &sd, flag, SHADER_CONTEXT_MAIN);
 	}
 	
-	shader_release(kg, &sd);
-	
 	/* write output */
 	output[i] = make_float4(out.x, out.y, out.z, 0.0f);
 }

Modified: trunk/blender/intern/cycles/kernel/kernel_emission.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_emission.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_emission.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -69,8 +69,6 @@
 	
 	eval *= ls->eval_fac;
 
-	shader_release(kg, &sd);
-
 	return eval;
 }
 
@@ -207,7 +205,6 @@
 	ShaderData sd;
 	shader_setup_from_background(kg, &sd, ray);
 	float3 L = shader_eval_background(kg, &sd, path_flag, SHADER_CONTEXT_EMISSION);
-	shader_release(kg, &sd);
 
 #ifdef __BACKGROUND_MIS__
 	/* check if background light exists or if we should skip pdf */

Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_path.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_path.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -216,8 +216,6 @@
 				if(ray->t != FLT_MAX)
 					ray->D = normalize_len(Pend - ray->P, &ray->t);
 
-				shader_release(kg, &sd);
-
 				bounce++;
 			}
 		}
@@ -327,10 +325,8 @@
 				L_transparent += average(holdout_weight*throughput);
 			}
 
-			if(sd.flag & SD_HOLDOUT_MASK) {
-				shader_release(kg, &sd);
+			if(sd.flag & SD_HOLDOUT_MASK)
 				break;
-			}
 		}
 #endif
 
@@ -349,10 +345,8 @@
 		float probability = path_state_terminate_probability(kg, &state, throughput);
 		float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
 
-		if(terminate >= probability) {
-			shader_release(kg, &sd);
+		if(terminate >= probability)
 			break;
-		}
 
 		throughput /= probability;
 
@@ -437,10 +431,8 @@
 #endif
 
 		/* no BSDF? we can stop here */
-		if(!(sd.flag & SD_BSDF)) {
-			shader_release(kg, &sd);
+		if(!(sd.flag & SD_BSDF))
 			break;
-		}
 
 		/* sample BSDF */
 		float bsdf_pdf;
@@ -454,8 +446,6 @@
 		label = shader_bsdf_sample(kg, &sd, bsdf_u, bsdf_v, &bsdf_eval,
 			&bsdf_omega_in, &bsdf_domega_in, &bsdf_pdf);
 
-		shader_release(kg, &sd);
-
 		if(bsdf_pdf == 0.0f || bsdf_eval_is_zero(&bsdf_eval))
 			break;
 
@@ -579,10 +569,8 @@
 		float probability = path_state_terminate_probability(kg, &state, throughput*num_samples_adjust);
 		float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
 
-		if(terminate >= probability) {
-			shader_release(kg, &sd);
+		if(terminate >= probability)
 			break;
-		}
 
 		throughput /= probability;
 
@@ -668,10 +656,8 @@
 #endif
 
 		/* no BSDF? we can stop here */
-		if(!(sd.flag & SD_BSDF)) {
-			shader_release(kg, &sd);
+		if(!(sd.flag & SD_BSDF))
 			break;
-		}
 
 		/* sample BSDF */
 		float bsdf_pdf;
@@ -685,8 +671,6 @@
 		label = shader_bsdf_sample(kg, &sd, bsdf_u, bsdf_v, &bsdf_eval,
 			&bsdf_omega_in, &bsdf_domega_in, &bsdf_pdf);
 
-		shader_release(kg, &sd);
-
 		if(bsdf_pdf == 0.0f || bsdf_eval_is_zero(&bsdf_eval))
 			break;
 
@@ -967,10 +951,8 @@
 				L_transparent += average(holdout_weight*throughput);
 			}
 
-			if(sd.flag & SD_HOLDOUT_MASK) {
-				shader_release(kg, &sd);
+			if(sd.flag & SD_HOLDOUT_MASK)
 				break;
-			}
 		}
 #endif
 
@@ -990,10 +972,8 @@
 			float probability = path_state_terminate_probability(kg, &state, throughput);
 			float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
 
-			if(terminate >= probability) {
-				shader_release(kg, &sd);
+			if(terminate >= probability)
 				break;
-			}
 
 			throughput /= probability;
 		}
@@ -1033,7 +1013,6 @@
 
 		/* continue in case of transparency */
 		throughput *= shader_bsdf_transparency(kg, &sd);
-		shader_release(kg, &sd);
 
 		if(is_zero(throughput))
 			break;

Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_shader.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_shader.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -925,12 +925,5 @@
 }
 #endif
 
-/* Free ShaderData */
-
-__device void shader_release(KernelGlobals *kg, ShaderData *sd)
-{
-	/* nothing to do currently */
-}
-
 CCL_NAMESPACE_END
 

Modified: trunk/blender/intern/cycles/kernel/kernel_subsurface.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_subsurface.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_subsurface.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -143,6 +143,7 @@
 	sc->data0 = 0.0f;
 	sc->data1 = 0.0f;
 	sc->N = sd->N;
+	sd->flag &= ~SD_CLOSURE_FLAGS;
 	sd->flag |= bsdf_diffuse_setup(sc);
 	sd->randb_closure = 0.0f;
 

Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h	2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h	2013-04-02 16:37:28 UTC (rev 55728)
@@ -452,6 +452,8 @@
 	SD_VOLUME = 128,		/* have volume closure? */
 	SD_AO = 256,			/* have ao closure? */
 
+	SD_CLOSURE_FLAGS = (SD_EMISSION|SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY|SD_BSSRDF|SD_HOLDOUT|SD_VOLUME|SD_AO),
+
 	/* shader flags */
 	SD_SAMPLE_AS_LIGHT = 512,			/* direct light sample */
 	SD_HAS_SURFACE_TRANSPARENT = 1024,	/* has surface transparency */




More information about the Bf-blender-cvs mailing list