fix OpenCL kernel: NVIDIA crashes in clBuildProgram and AMD reports an error 'irreducable flow detected" ?!?

ray-convex works on GPU
This commit is contained in:
erwin coumans
2013-06-20 11:50:19 -07:00
parent 330bf3ea09
commit 92f2f330df
2 changed files with 28 additions and 22 deletions

View File

@@ -171,11 +171,12 @@ bool rayConvex(float4 rayFromLocal, float4 rayToLocal, int numFaces, int faceOff
{
rayFromLocal.w = 0.f;
rayToLocal.w = 0.f;
bool result = true;
float exitFraction = *hitFraction;
float enterFraction = -0.1f;
float4 curHitNormal = (float4)(0,0,0,0);
for (int i=0;i<numFaces;i++)
for (int i=0;i<numFaces && result;i++)
{
b3GpuFace face = faces[faceOffset+i];
float fromPlaneDist = dot(rayFromLocal,face.m_plane)+face.m_plane.w;
@@ -203,19 +204,21 @@ bool rayConvex(float4 rayFromLocal, float4 rayToLocal, int numFaces, int faceOff
}
} else
{
return false;
result = false;
}
}
if (exitFraction <= enterFraction)
return false;
result = false;
}
if (enterFraction < 0.f)
return false;
*hitFraction = enterFraction;
*hitNormal = curHitNormal;
return true;
result = result && (enterFraction < 0.f);
if (result)
{
*hitFraction = enterFraction;
*hitNormal = curHitNormal;
}
return result;
}