diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-10-06 04:09:46 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-10-06 04:12:04 +0300 |
commit | 5a0f397eaa6b5c05a6d312617eeebd96e977fa80 (patch) | |
tree | 5407e6d916c4cb2d7add216fbf875c7fa2acf085 | |
parent | 3caa830c113ffc576f9b6d41365adc7799a1075c (diff) |
Fix T49523: very slow normal map tangent computation for rendering in 2.78.
-rw-r--r-- | intern/mikktspace/mikktspace.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/intern/mikktspace/mikktspace.c b/intern/mikktspace/mikktspace.c index 8d51816b132..0342ae0146f 100644 --- a/intern/mikktspace/mikktspace.c +++ b/intern/mikktspace/mikktspace.c @@ -579,13 +579,16 @@ static void MergeVertsFast(int piTriList_in_and_out[], STmpVert pTmpVert[], cons { // make bbox int c=0, l=0, channel=0; - float fvMin[3] = {INFINITY, INFINITY, INFINITY}; - float fvMax[3] = {-INFINITY, -INFINITY, -INFINITY}; + float fvMin[3], fvMax[3]; float dx=0, dy=0, dz=0, fSep=0; - for (l=iL_in; l<=iR_in; l++) - for (c=0; c<3; c++) + for (c=0; c<3; c++) + { fvMin[c]=pTmpVert[iL_in].vert[c]; fvMax[c]=fvMin[c]; } + for (l=(iL_in+1); l<=iR_in; l++) { + for (c=0; c<3; c++) { if (fvMin[c]>pTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c]; - else if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c]; + if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c]; + } + } dx = fvMax[0]-fvMin[0]; dy = fvMax[1]-fvMin[1]; |