[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60536] branches/soc-2013-dingto/intern/ cycles/kernel: Volume:

Thomas Dinges blender at dingto.org
Thu Oct 3 23:04:11 CEST 2013


Revision: 60536
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60536
Author:   dingto
Date:     2013-10-03 21:04:11 +0000 (Thu, 03 Oct 2013)
Log Message:
-----------
Volume:
* Some code cleanup for shadow_blocked_new, renamed to shadow_blocked_volume() now.
* Also re-order the parameters, so the first 4 match the shadow_blocked() function.

Modified Paths:
--------------
    branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
    branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h

Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h	2013-10-03 16:39:30 UTC (rev 60535)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h	2013-10-03 21:04:11 UTC (rev 60536)
@@ -681,7 +681,7 @@
 
 #ifdef __VOLUME__
 				float tmp_volume_pdf;
-				if(!shadow_blocked_new(kg, rng, rng_offset, &rng_congruential, sample, &state, &light_ray, &ao_shadow, media_volume_shader, &tmp_volume_pdf))
+				if(!shadow_blocked_volume(kg, &state, &light_ray, &ao_shadow, rng, &rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf))
 #else
 				if(!shadow_blocked(kg, &state, &light_ray, &ao_shadow))
 #endif
@@ -771,7 +771,7 @@
 					float3 shadow;
 #ifdef __VOLUME__
 					float tmp_volume_pdf;
-					if(!shadow_blocked_new(kg, rng, rng_offset, &rng_congruential, sample, &state, &light_ray, &shadow, media_volume_shader, &tmp_volume_pdf)) {
+					if(!shadow_blocked_volume(kg, &state, &light_ray, &shadow, rng, &rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf)) {
 #else
 					if(!shadow_blocked(kg, &state, &light_ray, &shadow)) {
 #endif

Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h	2013-10-03 16:39:30 UTC (rev 60535)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h	2013-10-03 21:04:11 UTC (rev 60536)
@@ -715,23 +715,22 @@
 	return attenuation;
 }
 
-
-
-__device bool shadow_blocked_new(KernelGlobals *kg, RNG *rng, int rng_offset, RNG *rng_congruential, int sample, PathState *state,
-	Ray *ray, float3 *shadow, int media_volume_shader, float *volume_pdf)
+__device_inline bool shadow_blocked_volume(KernelGlobals *kg, PathState *state, Ray *ray, float3 *shadow,
+	RNG *rng, RNG *rng_congruential, int rng_offset, int sample, int media_volume_shader, float *volume_pdf)
 {
 	*shadow = make_float3(1.0f, 1.0f, 1.0f);
 	*volume_pdf = 1.0f;
-	float tmp_volume_pdf;
 
 	if(ray->t == 0.0f)
 		return false;
+		
+	float tmp_volume_pdf;
 
 	uint visibility = path_state_ray_visibility(kg, state);
 	visibility |= PATH_RAY_SHADOW_OPAQUE;
 	Intersection isect;
 #ifdef __HAIR__ 
-//	bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect);
+//	bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect, NULL, 0.0f, 0.0f);
 	bool result = scene_intersect(kg, ray, visibility, &isect, NULL, 0.0f, 0.0f);
 #else
 //	bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect);
@@ -772,6 +771,7 @@
 #endif
 				}
 #ifdef __HAIR__
+//				if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect, NULL, 0.0f, 0.0f)) {
 				if(!scene_intersect(kg, ray, visibility, &isect, NULL, 0.0f, 0.0f)) {
 #else
 //				if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect)) {
@@ -809,18 +809,16 @@
 
 				bounce++;
 
-//				swap_media();
-				if (media_volume_shader == kernel_data.background.shader)
+				if(media_volume_shader == kernel_data.background.shader)
 					media_volume_shader = sd.shader;
 				else
 					media_volume_shader = kernel_data.background.shader;
-
 			}
 		}
 	}
 #endif
 
-	if(! result) {
+	if(!result) {
 		float3 attenuation = kernel_volume_get_shadow_attenuation(kg, rng, rng_offset, rng_congruential, sample, ray, media_volume_shader, &tmp_volume_pdf);
 		*shadow *= attenuation;
 		*volume_pdf *= tmp_volume_pdf;
@@ -829,7 +827,6 @@
 	return result;
 }
 
-
 /* volumetric tracing */
 __device int kernel_path_trace_volume(KernelGlobals *kg, RNG *rng, int rng_offset, RNG *rng_congruential, int sample,
 	Ray *ray, Intersection *isect, float isect_t, PathState *state, int media_volume_shader, float3 *throughput,
@@ -916,7 +913,7 @@
 						float3 shadow;
 						float tmp_volume_pdf;
 
-						if(!shadow_blocked_new(kg, rng, rng_offset, rng_congruential, sample, state, &light_ray, &shadow, media_volume_shader, &tmp_volume_pdf)) {
+						if(!shadow_blocked_volume(kg, state, &light_ray, &shadow, rng, rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf)) {
 							/* accumulate */
 //							bool is_lamp = (lamp != ~0);
 							path_radiance_accum_light(L, *throughput, &L_light, shadow, 1.0f, state->bounce, is_lamp);




More information about the Bf-blender-cvs mailing list