[Bf-blender-cvs] [07a8885] cycles_kernel_split: De-duplicate shader_setup_from_background function

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


Commit: 07a8885717d59348af4d38199bcc4ec3719b1075
Author: varunsundar08
Date:   Mon May 4 22:10:16 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rB07a8885717d59348af4d38199bcc4ec3719b1075

De-duplicate shader_setup_from_background function

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

M	intern/cycles/kernel/kernel_emission.h
M	intern/cycles/kernel/kernel_shader.h

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

diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h
index c61720f..ded6429 100644
--- a/intern/cycles/kernel/kernel_emission.h
+++ b/intern/cycles/kernel/kernel_emission.h
@@ -37,7 +37,7 @@ ccl_device_noinline float3 direct_emissive_eval_SPLIT_KERNEL(ccl_addr_space Kern
 		ray.dP = differential3_zero();
 		ray.dD = dI;
 
-		shader_setup_from_background_privateRay(kg, sd, &ray, bounce+1, transparent_bounce);
+		shader_setup_from_background(kg, sd, &ray, bounce+1, transparent_bounce);
 		eval = shader_eval_background(kg, sd, 0, SHADER_CONTEXT_EMISSION);
 	}
 	else
@@ -298,11 +298,13 @@ ccl_device_noinline float3 indirect_background(ccl_addr_space KernelGlobals *kg,
 
 #ifdef __SPLIT_KERNEL__
 	/* evaluate background closure */
-	shader_setup_from_background(kg, sd_global, ray, state->bounce+1, state->transparent_bounce);
+	Ray priv_ray = *ray;
+	shader_setup_from_background(kg, sd_global, &priv_ray, state->bounce+1, state->transparent_bounce);
 	float3 L = shader_eval_background(kg, sd_global, state->flag, SHADER_CONTEXT_EMISSION);
 #else
 	ShaderData sd;
-	shader_setup_from_background(kg, &sd, ray, state->bounce+1, state->transparent_bounce);
+	Ray priv_ray = *ray;
+	shader_setup_from_background(kg, &sd, &priv_ray, state->bounce+1, state->transparent_bounce);
 	float3 L = shader_eval_background(kg, &sd, state->flag, SHADER_CONTEXT_EMISSION);
 #endif
 
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index 67e5e83..eea2a59 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -377,53 +377,8 @@ ccl_device void shader_setup_from_displace(ccl_addr_space KernelGlobals *kg, ccl
 	shader_setup_from_sample(kg, sd, P, Ng, I, shader, object, prim, u, v, 0.0f, TIME_INVALID, 0, 0);
 }
 
-#ifdef __SPLIT_KERNEL__
 /* ShaderData setup from ray into background */
-ccl_device_inline void shader_setup_from_background_privateRay(ccl_addr_space KernelGlobals *kg, ccl_addr_space ShaderData *sd, Ray *ray, int bounce, int transparent_bounce)
-{
-	/* vectors */
-	sd_fetch(P) = ray->D;
-	sd_fetch(N) = -ray->D;
-	sd_fetch(Ng) = -ray->D;
-	sd_fetch(I) = -ray->D;
-	sd_fetch(shader) = kernel_data.background.surface_shader;
-	sd_fetch(flag) = kernel_tex_fetch(__shader_flag, (sd_fetch(shader) & SHADER_MASK)*2);
-#ifdef __OBJECT_MOTION__
-	sd->time = ray->time;
-#endif
-	sd_fetch(ray_length) = 0.0f;
-	sd_fetch(ray_depth) = bounce;
-	sd_fetch(transparent_depth) = transparent_bounce;
-
-#ifdef __INSTANCING__
-	sd_fetch(object) = PRIM_NONE;
-#endif
-	sd_fetch(prim) = PRIM_NONE;
-#ifdef __UV__
-	sd_fetch(u) = 0.0f;
-	sd_fetch(v) = 0.0f;
-#endif
-
-#ifdef __DPDU__
-	/* dPdu/dPdv */
-	sd_fetch(dPdu) = make_float3(0.0f, 0.0f, 0.0f);
-	sd_fetch(dPdv) = make_float3(0.0f, 0.0f, 0.0f);
-#endif
-
-#ifdef __RAY_DIFFERENTIALS__
-	/* differentials */
-	sd_fetch(dP) = ray->dD;
-	differential_incoming(&sd_fetch(dI), sd_fetch(dP));
-	sd_fetch(du).dx = 0.0f;
-	sd_fetch(du).dy = 0.0f;
-	sd_fetch(dv).dx = 0.0f;
-	sd_fetch(dv).dy = 0.0f;
-#endif
-}
-#endif
-
-/* ShaderData setup from ray into background */
-ccl_device_inline void shader_setup_from_background(ccl_addr_space KernelGlobals *kg, ccl_addr_space ShaderData *sd, const ccl_addr_space Ray *ray, int bounce, int transparent_bounce)
+ccl_device_inline void shader_setup_from_background(ccl_addr_space KernelGlobals *kg, ccl_addr_space ShaderData *sd, const Ray *ray, int bounce, int transparent_bounce)
 {
 	/* vectors */
 	sd_fetch(P) = ray->D;




More information about the Bf-blender-cvs mailing list