From: Eduardo DAVILA Date: Mon, 27 Apr 2020 08:37:20 +0000 (+0200) Subject: #3412 BBTK Feature New Normal - openmp and clean code in PolyDataToActor mechanism... X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=46c9b333423237eaba7a0b108fc14df256a4153d;p=bbtk.git #3412 BBTK Feature New Normal - openmp and clean code in PolyDataToActor mechanism of transparent put it in creaMaracasVisu wxVtk3DBase --- diff --git a/packages/vtk/src/bbvtkImageBoundaries.cxx b/packages/vtk/src/bbvtkImageBoundaries.cxx index 3275137..1a2128c 100644 --- a/packages/vtk/src/bbvtkImageBoundaries.cxx +++ b/packages/vtk/src/bbvtkImageBoundaries.cxx @@ -52,7 +52,6 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ImageBoundaries,bbtk::AtomicBlackBox); void ImageBoundaries::Process() { if (bbGetInputIn()!=NULL){ - int i,j,k; int ext[6]; double value; @@ -74,54 +73,55 @@ void ImageBoundaries::Process() int bYMin = maxY-1; int bZMin = maxZ-1; -/* - #pragma omp parallel for - for (int i=0 ; iGetScalarComponentAsDouble(i, j, k,0); - if ( (value>=bbGetInputLowerValue()) && (value<=bbGetInputUpperValue()) ) - { - if (ibXMax) bXMax=i; - if (j>bYMax) bYMax=j; - if (k>bZMax) bZMax=k; - } - } // for k - } // for j - } // i -*/ - + + double lowervalue = bbGetInputLowerValue(); + double uppervalue = bbGetInputUpperValue(); DEF_POINTER_IMAGE_VTK_CREA(vI,ssI,pI,stI,bbGetInputIn()) long int index=0; + + //int i,j; + int k; + +int k1omp=(double)(maxZ-1)*0.0; +int k2omp=(double)(maxZ-1)*0.2; +int k3omp=(double)(maxZ-1)*0.4; +int k4omp=(double)(maxZ-1)*0.6; +int k5omp=(double)(maxZ-1)*0.8; +int k6omp=(double)(maxZ-1)*1.0; + +printf("EED ImageBoundaries::Process (with openmp)\n"); + +// http://jakascorner.com/blog/2016/05/omp-for.html +#pragma omp parallel shared(maxZ,bXMin,bYMin,bZMin,bXMax,bYMax,bZMax) +{ + #pragma omp for for ( k=0 ; kGetScalarComponentAsDouble(i, j, k,0); - GETVALUE2_VTK_CREA(vI,pI,stI,index) + GETVALUE2_VTK_CREA(vItmpOMP,pI,stI,index) index++; - if ( (vI>=bbGetInputLowerValue()) && (vI<=bbGetInputUpperValue()) ) + if ( (vItmpOMP>=lowervalue) && (vItmpOMP<=uppervalue) ) { - if (ibXMax) bXMax=i; - if (j>bYMax) bYMax=j; - if (k>bZMax) bZMax=k; + if (ibXMax) bXMax = i; + if (j>bYMax) bYMax = j; + if (k>bZMax) bZMax = k; } } // for k } // for j } // i +} // #pragma + std::vector tmpIndex; std::vector tmpSize; if (bXMin>bXMax){ diff --git a/packages/vtk/src/bbvtkPolyDataToActor.cxx b/packages/vtk/src/bbvtkPolyDataToActor.cxx index 2aad2ec..b76c114 100644 --- a/packages/vtk/src/bbvtkPolyDataToActor.cxx +++ b/packages/vtk/src/bbvtkPolyDataToActor.cxx @@ -108,23 +108,6 @@ namespace bbvtk void PolyDataToActor::DoProcess() { -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -printf("EED WARNNIN!!!!! PolyDataToActor::DoProcess For better transparent ... Clean this code in the correct part ..........\n"); -//https://stackoverflow.com/questions/47528086/problems-with-rendering-transparent-objects-in-vtk -//https://itk.org/Wiki/VTK/Depth_Peeling -bbGetInputRenderer()->SetUseDepthPeeling(1); -bbGetInputRenderer()->SetOcclusionRatio(0.1); -bbGetInputRenderer()->SetMaximumNumberOfPeels(100); -bbGetInputRenderer()->GetRenderWindow()->SetMultiSamples(0); -bbGetInputRenderer()->GetRenderWindow()->SetAlphaBitPlanes(1); - - if (bbGetInputRenderer()==NULL) { printf("EED Warnning! PolyDataToActor::DoProcess missing Renderer.\n");