Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r312 - trunk/Engine/ImageTraversers


Chronological Thread 
  • 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.

Top of page