[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