[Bf-blender-cvs] [d39e611] cycles_kernel_split: Make use of sd in shadow_blocked_SPLIT_KERNEL similar to shadow_blocked

varunsundar08 noreply at git.blender.org
Tue May 5 09:17:10 CEST 2015


Commit: d39e611c73b0f4c16d90adddbf2b6268d583ae23
Author: varunsundar08
Date:   Tue May 5 00:32:24 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rBd39e611c73b0f4c16d90adddbf2b6268d583ae23

Make use of sd in shadow_blocked_SPLIT_KERNEL similar to shadow_blocked

===================================================================

M	intern/cycles/kernel/kernel_shadow.h

===================================================================

diff --git a/intern/cycles/kernel/kernel_shadow.h b/intern/cycles/kernel/kernel_shadow.h
index 6d9de78..9ce13a9 100644
--- a/intern/cycles/kernel/kernel_shadow.h
+++ b/intern/cycles/kernel/kernel_shadow.h
@@ -181,7 +181,7 @@ ccl_device_inline bool shadow_blocked(ccl_addr_space KernelGlobals *kg, PathStat
  * one extra ray cast for the cases were we do want transparency. */
 
 #ifdef __SPLIT_KERNEL__
-ccl_device_inline bool shadow_blocked_SPLIT_KERNEL(ccl_addr_space KernelGlobals *kg, ccl_addr_space PathState *state, ccl_addr_space Ray *ray_input, float3 *shadow, ccl_addr_space ShaderData *sd, ccl_addr_space Intersection *isect_global)
+ccl_device_inline bool shadow_blocked_SPLIT_KERNEL(ccl_addr_space KernelGlobals *kg, ccl_addr_space PathState *state, ccl_addr_space Ray *ray_input, float3 *shadow, ccl_addr_space ShaderData *sd_input, ccl_addr_space Intersection *isect_global)
 {
 	*shadow = make_float3(1.0f, 1.0f, 1.0f);
 
@@ -230,13 +230,19 @@ ccl_device_inline bool shadow_blocked_SPLIT_KERNEL(ccl_addr_space KernelGlobals
 #ifdef __VOLUME__
 				/* attenuation between last surface and next surface */
 				if(ps.volume_stack[0].shader != SHADER_NONE) {
-					Ray segment_ray = ray;
+					Ray segment_ray = *ray;
 					segment_ray.t = isect_global->t;
 					kernel_volume_shadow(kg, &ps, &segment_ray, &throughput);
 				}
 #endif
 
 				/* setup shader data at surface */
+#ifdef __SPLIT_KERNEL__
+				ccl_addr_space ShaderData *sd = sd_input;
+#else
+				ShaderData sd_object;
+				ShaderData *sd = &sd_object;
+#endif
 				shader_setup_from_ray(kg, sd, isect_global, ray, state->bounce+1, bounce);
 
 				/* attenuation from transparent surface */
@@ -255,7 +261,7 @@ ccl_device_inline bool shadow_blocked_SPLIT_KERNEL(ccl_addr_space KernelGlobals
 
 #ifdef __VOLUME__
 				/* exit/enter volume */
-				kernel_volume_stack_enter_exit(kg, &sd, ps.volume_stack);
+				kernel_volume_stack_enter_exit(kg, sd, ps.volume_stack);
 #endif
 
 				bounce++;




More information about the Bf-blender-cvs mailing list