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);
                }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to