Fix ternary selection operator on float scalars in OpenCL kernels.

According to Section 6.3(i) of the OpenCL 1.1 specification, the first
expression of the operator cannot be a float.
This commit is contained in:
hujiajie
2016-03-11 09:40:40 +08:00
parent c30c10b906
commit 3ed7ecbb58
4 changed files with 8 additions and 8 deletions

View File

@@ -896,8 +896,8 @@ static const char* solverUtilsCL= \
" float invMassB = gBodies[bIdx].m_invMass;\n"
" Matrix3x3 invInertiaB = gShapes[bIdx].m_invInertia;\n"
" Constraint4 cs;\n"
" float countA = invMassA ? (float)bodyCount[aIdx] : 1;\n"
" float countB = invMassB ? (float)bodyCount[bIdx] : 1;\n"
" float countA = invMassA != 0.f ? (float)bodyCount[aIdx] : 1;\n"
" float countB = invMassB != 0.f ? (float)bodyCount[bIdx] : 1;\n"
" setConstraint4( posA, linVelA, angVelA, invMassA, invInertiaA, posB, linVelB, angVelB, invMassB, invInertiaB,\n"
" &gContact[gIdx], dt, positionDrift, positionConstraintCoeff,countA,countB,\n"
" &cs );\n"