Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Genrich <daniel.genrich@gmx.net>2008-02-25 00:24:39 +0300
committerDaniel Genrich <daniel.genrich@gmx.net>2008-02-25 00:24:39 +0300
commit19be91823b7fe6e7fcd6f8ccf04a387deb147831 (patch)
tree3249c7917d7a94938518f4730ef821671e45c185 /intern/elbeem
parentf31dd8075cb1b6cfd2a63b3d1adeae2e2807ffc8 (diff)
Bugfix [#8352]: My OpenMP additions seem to cause errors on MSVC, so I kick them leaving 'only' the original OpenMP additions from N_T
Diffstat (limited to 'intern/elbeem')
-rw-r--r--intern/elbeem/intern/isosurface.cpp56
1 files changed, 17 insertions, 39 deletions
diff --git a/intern/elbeem/intern/isosurface.cpp b/intern/elbeem/intern/isosurface.cpp
index f90621f3b73..1b0ba13c707 100644
--- a/intern/elbeem/intern/isosurface.cpp
+++ b/intern/elbeem/intern/isosurface.cpp
@@ -22,10 +22,6 @@
#define round(x) (x)
#endif
-#if PARALLEL==1
-#include <omp.h>
-#endif
-
/******************************************************************************
* Constructor
*****************************************************************************/
@@ -164,6 +160,13 @@ void IsoSurface::triangulate( void )
mpEdgeVerticesZ[i] = -1;
}
+ ntlVec3Gfx pos[8];
+ float value[8];
+ int cubeIndex; // index entry of the cube
+ int triIndices[12]; // vertex indices
+ int *eVert[12];
+ IsoLevelVertex ilv;
+
// edges between which points?
const int mcEdges[24] = {
0,1, 1,2, 2,3, 3,0,
@@ -190,12 +193,7 @@ void IsoSurface::triangulate( void )
px = mStart[0]-gsx*0.5;
for(int i=1;i<(mSizex-2);i++) {
px += gsx;
- int cubeIndex; // index entry of the cube
- float value[8];
- int triIndices[12]; // vertex indices
- int *eVert[12];
- IsoLevelVertex ilv;
-
+
value[0] = *getData(i ,j ,k );
value[1] = *getData(i+1,j ,k );
value[2] = *getData(i+1,j+1,k );
@@ -241,7 +239,6 @@ void IsoSurface::triangulate( void )
eVert[11] = &mpEdgeVerticesZ[ ISOLEVEL_INDEX( i+0, j+1, edgek+0) ];
// grid positions
- ntlVec3Gfx pos[8];
pos[0] = ntlVec3Gfx(px ,py ,pz);
pos[1] = ntlVec3Gfx(px+gsx,py ,pz);
pos[2] = ntlVec3Gfx(px+gsx,py+gsy,pz);
@@ -347,7 +344,10 @@ void IsoSurface::triangulate( void )
if(mUseFullEdgeArrays) {
errMsg("IsoSurface::triangulate","Disabling mUseFullEdgeArrays!");
}
-
+
+ // subdiv local arrays
+ gfxReal orgval[8];
+ gfxReal subdAr[2][11][11]; // max 10 subdivs!
ParticleObject* *arppnt = new ParticleObject*[mSizez*mSizey*mSizex];
// construct pointers
@@ -408,25 +408,13 @@ void IsoSurface::triangulate( void )
debMsgStd("IsoSurface::triangulate",DM_MSG,"Starting. Parts in use:"<<pInUse<<", Subdivs:"<<mSubdivs, 9);
pz = mStart[2]-(double)(0.*gsz)-0.5*orgGsz;
-
for(int ok=1;ok<(mSizez-2)*mSubdivs;ok++) {
pz += gsz;
const int k = ok/mSubdivs;
if(k<=0) continue; // skip zero plane
-#if PARALLEL==1
-#pragma omp parallel for
-#endif
for(int j=1;j<(mSizey-2);j++) {
for(int i=1;i<(mSizex-2);i++) {
- float value[8];
- ntlVec3Gfx pos[8];
- int cubeIndex; // index entry of the cube
- int triIndices[12]; // vertex indices
- int *eVert[12];
- IsoLevelVertex ilv;
- gfxReal orgval[8];
- gfxReal subdAr[2][11][11]; // max 10 subdivs!
-
+
orgval[0] = *getData(i ,j ,k );
orgval[1] = *getData(i+1,j ,k );
orgval[2] = *getData(i+1,j+1,k ); // with subdivs
@@ -438,7 +426,6 @@ void IsoSurface::triangulate( void )
// prebuild subsampled array slice
const int sdkOffset = ok-k*mSubdivs;
-
for(int sdk=0; sdk<2; sdk++)
for(int sdj=0; sdj<mSubdivs+1; sdj++)
for(int sdi=0; sdi<mSubdivs+1; sdi++) {
@@ -593,13 +580,8 @@ void IsoSurface::triangulate( void )
// init isolevel vertex
ilv.v = p1 + (p2-p1)*mu; // with subdivs
-#if PARALLEL==1
-#pragma omp critical
-#endif
- {
mPoints.push_back( ilv );
triIndices[e] = (mPoints.size()-1);
- }
// store vertex
*eVert[ e ] = triIndices[e];
} else {
@@ -609,27 +591,23 @@ void IsoSurface::triangulate( void )
} // along all edges
}
// removed cutoff treatment...
-
+
// Create the triangles...
-#if PARALLEL==1
-#pragma omp critical
-#endif
- {
for(int e=0; mcTriTable[cubeIndex][e]!=-1; e+=3) {
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+0] ] );
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+1] ] ); // with subdivs
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+2] ] );
//errMsg("TTT"," i1"<<mIndices[mIndices.size()-3]<<" "<< " i2"<<mIndices[mIndices.size()-2]<<" "<< " i3"<<mIndices[mIndices.size()-1]<<" "<< mIndices.size() );
- } // triangles in edge table?
- }
}
+
+ } // triangles in edge table?
}//si
}// sj
}//i
}// j
-
+
// copy edge arrays
for(int j=0;j<(mSizey-0)*mSubdivs;j++)
for(int i=0;i<(mSizex-0)*mSubdivs;i++) {