[Bf-blender-cvs] [90e555b] cycles_kernel_split: De-duplicate object_dir_transform function

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


Commit: 90e555b88db6197da5ba965ac741ed3f65e21fd1
Author: varunsundar08
Date:   Mon May 4 21:33:07 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rB90e555b88db6197da5ba965ac741ed3f65e21fd1

De-duplicate object_dir_transform function

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

M	intern/cycles/kernel/geom/geom_object.h
M	intern/cycles/kernel/kernel_shader.h
M	intern/cycles/kernel/svm/svm_vector_transform.h

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

diff --git a/intern/cycles/kernel/geom/geom_object.h b/intern/cycles/kernel/geom/geom_object.h
index a59b08f..43662a6 100644
--- a/intern/cycles/kernel/geom/geom_object.h
+++ b/intern/cycles/kernel/geom/geom_object.h
@@ -162,7 +162,7 @@ ccl_device_inline void object_normal_transform(ccl_addr_space KernelGlobals *kg,
 }
 
 /* Transform direction vector from object to world space */
-ccl_device_inline void object_dir_transform(ccl_addr_space KernelGlobals *kg, const ccl_addr_space ShaderData *sd, ccl_addr_space float3 *D)
+ccl_device_inline void object_dir_transform(ccl_addr_space KernelGlobals *kg, const ccl_addr_space ShaderData *sd, float3 *D)
 {
 #ifdef __OBJECT_MOTION__
 	*D = transform_direction(&sd_fetch(ob_tfm), *D);
@@ -172,18 +172,6 @@ ccl_device_inline void object_dir_transform(ccl_addr_space KernelGlobals *kg, co
 #endif
 }
 
-#ifdef __SPLIT_KERNEL__
-ccl_device_inline void object_dir_transform_private_D(ccl_addr_space KernelGlobals *kg, const ccl_addr_space ShaderData *sd, float3 *D)
-{
-#ifdef __OBJECT_MOTION__
-	*D = transform_direction(&sd_fetch(ob_tfm), *D);
-#else
-	Transform tfm = object_fetch_transform(kg, sd_fetch(object), OBJECT_TRANSFORM);
-	*D = transform_direction(&tfm, *D);
-#endif
-}
-#endif
-
 /* Transform direction vector from world to object space */
 ccl_device_inline void object_inverse_dir_transform(ccl_addr_space KernelGlobals *kg, const ccl_addr_space ShaderData *sd, float3 *D)
 {
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index cc83939..67e5e83 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -126,8 +126,16 @@ ccl_device void shader_setup_from_ray(ccl_addr_space KernelGlobals *kg, ccl_addr
 		sd_fetch(N) = sd_N;
 		sd_fetch(Ng) = sd_Ng;
 #ifdef __DPDU__
-		object_dir_transform(kg, sd, &sd_fetch(dPdu));
-		object_dir_transform(kg, sd, &sd_fetch(dPdv));
+		/* Get dPdu, dPdv values */
+		float3 sd_dPdu = sd_fetch(dPdu);
+		float3 sd_dPdv = sd_fetch(dPdv);
+
+		object_dir_transform(kg, sd, &sd_dPdu);
+		object_dir_transform(kg, sd, &sd_dPdv);
+
+		/* Store dPdu and dPdv values */
+		sd_fetch(dPdu) = sd_dPdu;
+		sd_fetch(dPdv) = sd_dPdv;
 #endif
 	}
 #endif
@@ -306,8 +314,16 @@ ccl_device void shader_setup_from_sample(ccl_addr_space KernelGlobals *kg, ccl_a
 
 #ifdef __INSTANCING__
 		if(instanced) {
-			object_dir_transform(kg, sd, &sd_fetch(dPdu));
-			object_dir_transform(kg, sd, &sd_fetch(dPdv));
+			/* Get dPdu and dPdv values */
+			float3 sd_dPdu = sd_fetch(dPdu);
+			float3 sd_dPdv = sd_fetch(dPdv);
+
+			object_dir_transform(kg, sd, &sd_dPdu);
+			object_dir_transform(kg, sd, &sd_dPdv);
+
+			/* Store dPdu and dPdv values */
+			sd_fetch(dPdu) = sd_dPdu;
+			sd_fetch(dPdv) = sd_dPdv;
 		}
 #endif
 #endif
diff --git a/intern/cycles/kernel/svm/svm_vector_transform.h b/intern/cycles/kernel/svm/svm_vector_transform.h
index 2c6cb02..abb6cea 100644
--- a/intern/cycles/kernel/svm/svm_vector_transform.h
+++ b/intern/cycles/kernel/svm/svm_vector_transform.h
@@ -74,11 +74,7 @@ ccl_device void svm_node_vector_transform(ccl_addr_space KernelGlobals *kg, ccl_
 	else if(from == NODE_VECTOR_TRANSFORM_CONVERT_SPACE_OBJECT) {
 		if((to == NODE_VECTOR_TRANSFORM_CONVERT_SPACE_WORLD || to == NODE_VECTOR_TRANSFORM_CONVERT_SPACE_CAMERA) && is_object) {
 			if(is_direction)
-#ifdef __SPLIT_KERNEL__
-				object_dir_transform_private_D(kg, sd, &in);
-#else
 				object_dir_transform(kg, sd, &in);
-#endif
 			else
 				object_position_transform(kg, sd, &in);
 		}




More information about the Bf-blender-cvs mailing list