[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