[Bf-blender-cvs] [4ba80fd] master: Cycles / Hair: No need to calculate curvepoint() when we use Ribbon curves.

Thomas Dinges noreply at git.blender.org
Tue Dec 24 04:00:56 CET 2013


Commit: 4ba80fd461e3a0a7e1bc495c85bd320ddda2de67
Author: Thomas Dinges
Date:   Tue Dec 24 04:00:27 2013 +0100
http://developer.blender.org/rB4ba80fd461e3a0a7e1bc495c85bd320ddda2de67

Cycles / Hair: No need to calculate curvepoint() when we use Ribbon curves.

Also some style cleanup.

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

M	intern/cycles/kernel/kernel_bvh.h

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

diff --git a/intern/cycles/kernel/kernel_bvh.h b/intern/cycles/kernel/kernel_bvh.h
index dc31e72..de200b7 100644
--- a/intern/cycles/kernel/kernel_bvh.h
+++ b/intern/cycles/kernel/kernel_bvh.h
@@ -1099,7 +1099,7 @@ ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, con
 	float4 P1 = kernel_tex_fetch(__curve_keys, k0);
 	float4 P2 = kernel_tex_fetch(__curve_keys, k1);
 	float l = 1.0f;
-	float3 tg = normalize_len(float4_to_float3(P2 - P1),&l);
+	float3 tg = normalize_len(float4_to_float3(P2 - P1), &l);
 	float r1 = P1.w;
 	float r2 = P2.w;
 	float gd = ((r2 - r1)/l);
@@ -1119,17 +1119,17 @@ ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, con
 		p[2] = float4_to_float3(P2);
 		p[3] = float4_to_float3(P3);
 
-		tg = normalize(curvetangent(isect->u,p[0],p[1],p[2],p[3]));
-		float3 p_curr = curvepoint(isect->u,p[0],p[1],p[2],p[3]);
-
 #ifdef __UV__
 		sd->u = isect->u;
 		sd->v = 0.0f;
 #endif
+	
+		tg = normalize(curvetangent(isect->u, p[0], p[1], p[2], p[3]));
 
 		if(kernel_data.curve.curveflags & CURVE_KN_RIBBONS)
-			sd->Ng = normalize(-(D - tg * (dot(tg,D))));
+			sd->Ng = normalize(-(D - tg * (dot(tg, D))));
 		else {
+			float3 p_curr = curvepoint(isect->u, p[0], p[1], p[2], p[3]);	
 			sd->Ng = normalize(P - p_curr);
 			sd->Ng = sd->Ng - gd * tg;
 			sd->Ng = normalize(sd->Ng);
@@ -1145,7 +1145,7 @@ ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, con
 #endif
 
 		if (flag & CURVE_KN_TRUETANGENTGNORMAL) {
-			sd->Ng = -(D - tg * dot(tg,D));
+			sd->Ng = -(D - tg * dot(tg, D));
 			sd->Ng = normalize(sd->Ng);
 		}
 		else {
@@ -1159,7 +1159,7 @@ ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, con
 		sd->N = sd->Ng;
 
 		if (flag & CURVE_KN_TANGENTGNORMAL && !(flag & CURVE_KN_TRUETANGENTGNORMAL)) {
-			sd->N = -(D - tg * dot(tg,D));
+			sd->N = -(D - tg * dot(tg, D));
 			sd->N = normalize(sd->N);
 		}
 		if (!(flag & CURVE_KN_TANGENTGNORMAL) && flag & CURVE_KN_TRUETANGENTGNORMAL) {
@@ -1174,7 +1174,7 @@ ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, con
 #ifdef __DPDU__
 	/* dPdu/dPdv */
 	sd->dPdu = tg;
-	sd->dPdv = cross(tg,sd->Ng);
+	sd->dPdv = cross(tg, sd->Ng);
 #endif
 
 	/*add fading parameter for minimum pixel width with transparency bsdf*/




More information about the Bf-blender-cvs mailing list