Text archives Help
- From: abhinav@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r312 - trunk/Engine/ImageTraversers
- Date: Fri, 13 May 2005 15:17:59 -0600 (MDT)
Author: abhinav
Date: Fri May 13 15:17:59 2005
New Revision: 312
Modified:
trunk/Engine/ImageTraversers/FramelessImageTraverser.cc
Log:
corrected frameless version to work with arbitrary sizes
Modified: trunk/Engine/ImageTraversers/FramelessImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/FramelessImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/FramelessImageTraverser.cc Fri May 13
15:17:59 2005
@@ -97,35 +97,55 @@
ny++;
tres /= 2;
}
- nx /=2;
+ nx/=2;
ny/=2;
+
xtilesize = 1;
for(i=0; i<nx; i++) xtilesize *= 2;
+
ytilesize = 1;
- for(i=0; i<ny; i++) ytilesize *= 2;
-
+ for(i=0; i<ny; i++) ytilesize *= 2;
+
myRandomNumber = new MT_RNG[context.numProcs];
for(i=0; i<context.numProcs; i++)
myRandomNumber[i].seed_rng(1234); // just to begin give a simple seed
- xtiles = (xres + xtilesize-1)/xtilesize;
- ytiles = (yres + ytilesize-1)/ytilesize;
+
+ xtiles = xres/xtilesize;
+ if(xres%xtilesize>0) xtiles++;
+ ytiles = yres/ytilesize;
+ if(yres%ytilesize>0) ytiles++;
- // printf("tilesize: %d,%d; final tilenum: %d,%d; tilenum: %d,%d",
xtilesize, ytilesize, xtiles, ytiles, nx, ny);
+ //printf("tilesize: %d,%d; final tilenum: %d,%d; tilenum: %d,%d",
xtilesize, ytilesize, xtiles, ytiles, nx, ny);
// allocate unifrom row ordered tiles
shuffledTiles = new UniformTiles[xtiles*ytiles];
for(i=0; i<xtiles*ytiles; i++) {
- j = i%ytiles;
- k = i/ytiles;
- shuffledTiles[i].xstart = j*xtilesize;
- shuffledTiles[i].xend = (j+1)*xtilesize;
- shuffledTiles[i].ystart = k*ytilesize;
- shuffledTiles[i].yend = (k+1)*ytilesize;
+ if(xtiles<ytiles)
+ {
+ j = i%xtiles;
+ k = i/xtiles;
+ shuffledTiles[i].xstart = j*xtilesize;
+ shuffledTiles[i].xend = (j+1)*xtilesize;
+ shuffledTiles[i].ystart = k*ytilesize;
+ shuffledTiles[i].yend = (k+1)*ytilesize;
+ }
+ else
+ {
+ j = i%ytiles;
+ k = i/ytiles;
+ shuffledTiles[i].xstart = k*xtilesize;
+ shuffledTiles[i].xend = (k+1)*xtilesize;
+ shuffledTiles[i].ystart = j*ytilesize;
+ shuffledTiles[i].yend = (j+1)*ytilesize;
+ }
+
if(shuffledTiles[i].xend>xres)
shuffledTiles[i].xend = xres;
if(shuffledTiles[i].yend>yres)
shuffledTiles[i].yend = yres;
- ASSERT( shuffledTiles[i].xstart != shuffledTiles[i].xend);
- ASSERT( shuffledTiles[i].ystart != shuffledTiles[i].yend);
+ if(shuffledTiles[i].xstart == shuffledTiles[i].xend)
+ { printf("error\n"); }
+ if( shuffledTiles[i].ystart == shuffledTiles[i].yend)
+ { printf("error\n"); }
}
shuffleMyTiles(); // shuffle them up
@@ -163,8 +183,17 @@
for(int i=0;i<size;i++) {
Fragment::Element& fe = fragment.get(f+i);
// normalized
- double px = (double)(-1.0 + 2.0*(double)(fe.x+0.5)/(double)xres);
- double py = (double)(-1.0 + 2.0*(double)(fe.y+0.5)/(double)xres);
+ double px, py;
+ if(xres>yres) // let the smaller dimension be mapped to [-1,1]
+ {
+ px = (double)(-1.0 + 2.0*(double)(fe.x+0.5)/(double)yres);
+ py = (double)(-1.0 + 2.0*(double)(fe.y+0.5)/(double)yres);
+ }
+ else
+ {
+ px = (double)(-1.0 + 2.0*(double)(fe.x+0.5)/(double)xres);
+ py = (double)(-1.0 + 2.0*(double)(fe.y+0.5)/(double)xres);
+ }
//printf("%f, %f\n", (float)px, (float)py);
rays.setPixel(i, 0, px, py, &fe.color);
}
- [MANTA] r312 - trunk/Engine/ImageTraversers, abhinav, 05/13/2005
Archive powered by MHonArc 2.6.16.