[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56630] trunk/blender/intern/cycles/kernel : Cycles OpenCL: fix other build issues when enabling more features.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu May 9 17:28:38 CEST 2013


Revision: 56630
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56630
Author:   blendix
Date:     2013-05-09 15:28:38 +0000 (Thu, 09 May 2013)
Log Message:
-----------
Cycles OpenCL: fix other build issues when enabling more features.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_bvh.h
    trunk/blender/intern/cycles/kernel/kernel_bvh_traversal.h
    trunk/blender/intern/cycles/kernel/kernel_curve.h
    trunk/blender/intern/cycles/kernel/kernel_light.h
    trunk/blender/intern/cycles/kernel/kernel_path.h
    trunk/blender/intern/cycles/kernel/kernel_types.h
    trunk/blender/intern/cycles/kernel/osl/osl_services.cpp

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -117,7 +117,7 @@
 __device_inline void bvh_node_intersect(KernelGlobals *kg,
 	bool *traverseChild0, bool *traverseChild1,
 	bool *closestChild1, int *nodeAddr0, int *nodeAddr1,
-	float3 P, float3 idir, float t, uint visibility, int nodeAddr, float difl = 0.0f, float extmax = 0.0f)
+	float3 P, float3 idir, float t, uint visibility, int nodeAddr, float difl, float extmax)
 {
 	float hdiff = 1.0f + difl;
 	float ldiff = 1.0f - difl;
@@ -281,7 +281,7 @@
 }
 
 __device_inline void bvh_cardinal_curve_intersect(KernelGlobals *kg, Intersection *isect,
-	float3 P, float3 idir, uint visibility, int object, int curveAddr, int segment, uint *lcg_state = NULL, float difl = 0.0f, float extmax = 0.0f)
+	float3 P, float3 idir, uint visibility, int object, int curveAddr, int segment, uint *lcg_state, float difl, float extmax)
 {
 	float epsilon = 0.0f;
 	int depth = kernel_data.curve_kernel_data.subdivisions;
@@ -305,10 +305,6 @@
 			dir.z / d, 0, -dir.x /d, 0,
 			-dir.x * dir.y /d, d, -dir.y * dir.z /d, 0,
 			dir.x, dir.y, dir.z, 0,
-			0, 0, 0, 1) * make_transform(
-			1, 0, 0, -P.x,
-			0, 1, 0, -P.y,
-			0, 0, 1, -P.z,
 			0, 0, 0, 1);
 
 		float4 v00 = kernel_tex_fetch(__curves, prim);
@@ -324,10 +320,10 @@
 		float4 P2 = kernel_tex_fetch(__curve_keys, k1);
 		float4 P3 = kernel_tex_fetch(__curve_keys, kb);
 
-		float3 p0 = transform_point(&htfm, float4_to_float3(P0));
-		float3 p1 = transform_point(&htfm, float4_to_float3(P1));
-		float3 p2 = transform_point(&htfm, float4_to_float3(P2));
-		float3 p3 = transform_point(&htfm, float4_to_float3(P3));
+		float3 p0 = transform_point(&htfm, float4_to_float3(P0) - P);
+		float3 p1 = transform_point(&htfm, float4_to_float3(P1) - P);
+		float3 p2 = transform_point(&htfm, float4_to_float3(P2) - P);
+		float3 p3 = transform_point(&htfm, float4_to_float3(P3) - P);
 
 		float fc = 0.71f;
 		curve_coef[0] = p1;
@@ -591,7 +587,7 @@
 }
 
 __device_inline void bvh_curve_intersect(KernelGlobals *kg, Intersection *isect,
-	float3 P, float3 idir, uint visibility, int object, int curveAddr, int segment, uint *lcg_state = NULL, float difl = 0.0f, float extmax = 0.0f)
+	float3 P, float3 idir, uint visibility, int object, int curveAddr, int segment, uint *lcg_state, float difl, float extmax)
 {
 	/* curve Intersection check */
 	int flags = kernel_data.curve_kernel_data.curveflags;
@@ -865,7 +861,7 @@
 
 
 #ifdef __HAIR__ 
-__device_inline bool scene_intersect(KernelGlobals *kg, const Ray *ray, const uint visibility, Intersection *isect, uint *lcg_state = NULL, float difl = 0.0f, float extmax = 0.0f)
+__device_inline bool scene_intersect(KernelGlobals *kg, const Ray *ray, const uint visibility, Intersection *isect, uint *lcg_state, float difl, float extmax)
 #else
 __device_inline bool scene_intersect(KernelGlobals *kg, const Ray *ray, const uint visibility, Intersection *isect)
 #endif

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh_traversal.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh_traversal.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh_traversal.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -37,7 +37,7 @@
 , const uint visibility
 #endif
 #if FEATURE(BVH_HAIR_MINIMUM_WIDTH) && !FEATURE(BVH_SUBSURFACE)
-, uint *lcg_state = NULL, float difl = 0.0f, float extmax = 0.0f
+, uint *lcg_state, float difl, float extmax
 #endif
 )
 {
@@ -87,8 +87,12 @@
 #else
 				bvh_node_intersect(kg, &traverseChild0, &traverseChild1,
 					&closestChild1, &nodeAddr, &nodeAddrChild1,
+#ifdef __HAIR__
+					P, idir, isect->t, visibility, nodeAddr, 0.0f, 0.0f);
+#else
 					P, idir, isect->t, visibility, nodeAddr);
 #endif
+#endif
 
 				if(traverseChild0 != traverseChild1) {
 					/* one child was intersected */

Modified: trunk/blender/intern/cycles/kernel/kernel_curve.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_curve.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_curve.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -102,7 +102,7 @@
 {
 	float r = 0.0f;
 
-	if(sd->segment != ~0) {
+	if(sd->segment != (int)~0) {
 		float4 curvedata = kernel_tex_fetch(__curves, sd->prim);
 		int k0 = __float_as_int(curvedata.x) + sd->segment;
 		int k1 = k0 + 1;
@@ -119,7 +119,7 @@
 {	
 	float3 tgN = make_float3(0.0f,0.0f,0.0f);
 
-	if(sd->segment != ~0) {
+	if(sd->segment != (int)~0) {
 		float normalmix = kernel_data.curve_kernel_data.normalmix;
 
 		tgN = -(-sd->I - sd->dPdu * (dot(sd->dPdu,-sd->I) * normalmix / len_squared(sd->dPdu)));

Modified: trunk/blender/intern/cycles/kernel/kernel_light.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_light.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_light.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -486,11 +486,11 @@
 	float4 P1 = kernel_tex_fetch(__curve_keys, k0);
 	float4 P2 = kernel_tex_fetch(__curve_keys, k1);
 
-	float l = len(P2 - P1);
+	float l = len(float4_to_float3(P2) - float4_to_float3(P1));
 
 	float r1 = P1.w;
 	float r2 = P2.w;
-	float3 tg = float4_to_float3(P2 - P1) / l;
+	float3 tg = (float4_to_float3(P2) - float4_to_float3(P1)) / l;
 	float3 xc = make_float3(tg.x * tg.z, tg.y * tg.z, -(tg.x * tg.x + tg.y * tg.y));
 	if (dot(xc, xc) == 0.0f)
 		xc = make_float3(tg.x * tg.y, -(tg.x * tg.x + tg.z * tg.z), tg.z * tg.y);
@@ -561,7 +561,7 @@
 #endif
 
 #ifdef __HAIR__
-		if (segment != ~0)
+		if (segment != (int)~0)
 			curve_segment_light_sample(kg, prim, object, segment, randu, randv, time, ls);
 		else
 #endif

Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_path.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_path.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -164,7 +164,11 @@
 		return false;
 	
 	Intersection isect;
+#ifdef __HAIR__
+	bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect, NULL, 0.0f, 0.0f);
+#else
 	bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect);
+#endif
 
 #ifdef __TRANSPARENT_SHADOWS__
 	if(result && kernel_data.integrator.transparent_shadows) {
@@ -198,7 +202,11 @@
 #endif
 				}
 
+#ifdef __HAIR__
+				if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect, NULL, 0.0f, 0.0f)) {
+#else
 				if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect)) {
+#endif
 					*shadow *= throughput;
 					return false;
 				}
@@ -528,7 +536,11 @@
 		/* intersect scene */
 		Intersection isect;
 		uint visibility = path_state_ray_visibility(kg, &state);
+#ifdef __HAIR__
+		bool hit = scene_intersect(kg, &ray, visibility, &isect, NULL, 0.0f, 0.0f);
+#else
 		bool hit = scene_intersect(kg, &ray, visibility, &isect);
+#endif
 
 #ifdef __LAMP_MIS__
 		if(kernel_data.integrator.use_lamp_mis && !(state.flag & PATH_RAY_CAMERA)) {

Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h	2013-05-09 15:28:38 UTC (rev 56630)
@@ -72,12 +72,8 @@
 #endif
 
 #ifdef __KERNEL_OPENCL_APPLE__
-//#define __SVM__
-//#define __EMISSION__
-//#define __IMAGE_TEXTURES__
-//#define __HOLDOUT__
-//#define __PROCEDURAL_TEXTURES__
-//#define __EXTRA_NODES__
+#define __KERNEL_SHADING__
+//#define __KERNEL_ADV_SHADING__
 #endif
 
 #ifdef __KERNEL_OPENCL_AMD__

Modified: trunk/blender/intern/cycles/kernel/osl/osl_services.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_services.cpp	2013-05-09 15:26:44 UTC (rev 56629)
+++ trunk/blender/intern/cycles/kernel/osl/osl_services.cpp	2013-05-09 15:28:38 UTC (rev 56630)
@@ -861,7 +861,7 @@
 	tracedata->init = true;
 
 	/* raytrace */
-	return scene_intersect(sd->osl_globals, &ray, ~0, &tracedata->isect);
+	return scene_intersect(sd->osl_globals, &ray, ~0, &tracedata->isect, NULL, 0.0f, 0.0f);
 }
 
 




More information about the Bf-blender-cvs mailing list