Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r480 - in branches/itanium2: Core/Util Engine/Control Engine/Display Engine/ImageTraversers Engine/ImageTraversers/AFR Interface Model/Cameras fox


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r480 - in branches/itanium2: Core/Util Engine/Control Engine/Display Engine/ImageTraversers Engine/ImageTraversers/AFR Interface Model/Cameras fox
  • Date: Fri, 19 Aug 2005 01:02:29 -0600 (MDT)

Author: abe
Date: Fri Aug 19 01:02:27 2005
New Revision: 480

Added:
   branches/itanium2/Engine/ImageTraversers/AFImageTraverser.cc
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/AFImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/AFImageTraverser.h
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/AFImageTraverser.h
   branches/itanium2/Engine/ImageTraversers/AFR/
      - copied from r479, trunk/Engine/ImageTraversers/AFR/
   branches/itanium2/Engine/ImageTraversers/AFR/CQ.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/CQ.h
   branches/itanium2/Engine/ImageTraversers/AFR/evil.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/evil.h
   branches/itanium2/Engine/ImageTraversers/AFR/kdtree.cc
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/kdtree.cc
   branches/itanium2/Engine/ImageTraversers/AFR/kdtree.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/kdtree.h
   branches/itanium2/Engine/ImageTraversers/AFR/sample.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/sample.h
   branches/itanium2/Engine/ImageTraversers/AFR/stats.cc
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/stats.cc
   branches/itanium2/Engine/ImageTraversers/AFR/stats.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/stats.h
   branches/itanium2/Engine/ImageTraversers/AFR/tiles.cc
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/tiles.cc
   branches/itanium2/Engine/ImageTraversers/AFR/tiles.h
      - copied unchanged from r479, trunk/Engine/ImageTraversers/AFR/tiles.h
   branches/itanium2/Engine/ImageTraversers/DissolveImageTraverser.cc
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/DissolveImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/DissolveImageTraverser.h
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/DissolveImageTraverser.h
   branches/itanium2/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/DissolveTiledImageTraverser.h
      - copied unchanged from r479, 
trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.h
   branches/itanium2/Model/Cameras/FisheyeCamera.cc
      - copied, changed from r479, trunk/Model/Cameras/FisheyeCamera.cc
   branches/itanium2/Model/Cameras/FisheyeCamera.h
      - copied, changed from r479, trunk/Model/Cameras/FisheyeCamera.h
Modified:
   branches/itanium2/Core/Util/Args.h
   branches/itanium2/Engine/Control/RTRT_register.cc
   branches/itanium2/Engine/Display/XHelper.cc
   branches/itanium2/Engine/Display/XHelper.h
   branches/itanium2/Engine/ImageTraversers/CMakeLists.txt
   branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.h
   branches/itanium2/Engine/ImageTraversers/NullImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/NullImageTraverser.h
   branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.cc
   branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.h
   branches/itanium2/Interface/Camera.h
   branches/itanium2/Interface/Context.h
   branches/itanium2/Interface/Fragment.h
   branches/itanium2/Interface/ImageTraverser.h
   branches/itanium2/Model/Cameras/CMakeLists.txt
   branches/itanium2/Model/Cameras/EnvironmentCamera.cc
   branches/itanium2/Model/Cameras/EnvironmentCamera.h
   branches/itanium2/Model/Cameras/OrthogonalCamera.cc
   branches/itanium2/Model/Cameras/OrthogonalCamera.h
   branches/itanium2/Model/Cameras/PinholeCamera.cc
   branches/itanium2/Model/Cameras/PinholeCamera.h
   branches/itanium2/fox/FMantaWindow.cc
   branches/itanium2/fox/FMantaWindow.h
Log:


Merged all image traverser changes from trunk/ --> branches/itanium2/

Merged over FisheyeCamera.
Added several options to dm_demo menus.


M    Core/Util/Args.h
M    fox/FMantaWindow.cc
M    fox/FMantaWindow.h
M    Model/Cameras/EnvironmentCamera.cc
M    Model/Cameras/EnvironmentCamera.h
M    Model/Cameras/OrthogonalCamera.cc
A    Model/Cameras/FisheyeCamera.cc
M    Model/Cameras/OrthogonalCamera.h
M    Model/Cameras/PinholeCamera.cc
A    Model/Cameras/FisheyeCamera.h
M    Model/Cameras/CMakeLists.txt
M    Model/Cameras/PinholeCamera.h
M    Interface/Fragment.h
M    Interface/Context.h
M    Interface/Camera.h
M    Interface/ImageTraverser.h
M    Engine/Control/RTRT_register.cc
A    Engine/ImageTraversers/DissolveImageTraverser.h
M    Engine/ImageTraversers/TiledImageTraverser.cc
M    Engine/ImageTraversers/TiledImageTraverser.h
M    Engine/ImageTraversers/NullImageTraverser.cc
A    Engine/ImageTraversers/DissolveTiledImageTraverser.cc
M    Engine/ImageTraversers/NullImageTraverser.h
A    Engine/ImageTraversers/DissolveTiledImageTraverser.h
M    Engine/ImageTraversers/FramelessImageTraverser.cc
M    Engine/ImageTraversers/FramelessImageTraverser.h
A    Engine/ImageTraversers/AFR
A    Engine/ImageTraversers/AFR/kdtree.cc
A    Engine/ImageTraversers/AFR/stats.cc
A    Engine/ImageTraversers/AFR/kdtree.h
A    Engine/ImageTraversers/AFR/stats.h
A    Engine/ImageTraversers/AFR/tiles.cc
A    Engine/ImageTraversers/AFR/evil.h
A    Engine/ImageTraversers/AFR/tiles.h
A    Engine/ImageTraversers/AFR/sample.h
A    Engine/ImageTraversers/AFR/CQ.h
A    Engine/ImageTraversers/AFImageTraverser.cc
M    Engine/ImageTraversers/CMakeLists.txt
A    Engine/ImageTraversers/AFImageTraverser.h
A    Engine/ImageTraversers/DissolveImageTraverser.cc
M    Engine/Display/XHelper.cc
M    Engine/Display/XHelper.h


Modified: branches/itanium2/Core/Util/Args.h
==============================================================================
--- branches/itanium2/Core/Util/Args.h  (original)
+++ branches/itanium2/Core/Util/Args.h  Fri Aug 19 01:02:27 2005
@@ -6,6 +6,7 @@
 #include <sgi_stl_warnings_off.h>
 #include <string>
 #include <vector>
+#include <sstream>
 #include <sgi_stl_warnings_on.h>
 
 namespace Manta {
@@ -18,6 +19,30 @@
   bool getPointArg(int& i, const vector<string>&, Point& p);
   bool getVectorArg(int& i, const vector<string>&, Vector& p);
   void parseSpec(const string& spec, string& name, vector<string>& args);
+
+  // Generic version that grabs an argument of type T.
+  template<typename T>
+  bool getArg(int& i, const vector<string>& args, T& result) {
+    // Check to make sure args[i] exists.
+    if(++i >= static_cast<int>(args.size())) {
+      i--;
+      return false;
+    }
+    
+    istringstream in(args[i]);
+    T temp;
+    // Attempt to pull in the value
+    in >> temp;
+    if (!in.fail()) {
+      // Everything was OK, so assign it to the return parameter.
+      result = temp;
+      return true;
+    } else {
+      return false;
+    }
+  }
+        
+        
 
   // This will separate input into whitespace separated arguments.  If
   // you want a single argument to contain whitespace you must

Modified: branches/itanium2/Engine/Control/RTRT_register.cc
==============================================================================
--- branches/itanium2/Engine/Control/RTRT_register.cc   (original)
+++ branches/itanium2/Engine/Control/RTRT_register.cc   Fri Aug 19 01:02:27 
2005
@@ -6,6 +6,8 @@
 #include <Engine/ImageTraversers/NullImageTraverser.h>
 #include <Engine/ImageTraversers/TiledImageTraverser.h>
 #include <Engine/ImageTraversers/FramelessImageTraverser.h>
+#include <Engine/ImageTraversers/AFImageTraverser.h>
+#include <Engine/ImageTraversers/DissolveImageTraverser.h>
 #include <Engine/LoadBalancers/CyclicLoadBalancer.h>
 #include <Engine/LoadBalancers/SimpleLoadBalancer.h>
 #include <Engine/LoadBalancers/WQLoadBalancer.h>
@@ -30,7 +32,9 @@
 #include <Model/Cameras/EnvironmentCamera.h>
 #include <Model/Cameras/PinholeCamera.h>
 #include <Model/Cameras/OrthogonalCamera.h>
+#include <Model/Cameras/FisheyeCamera.h>
 #include <Model/Groups/BVH.h>
+//#include <Model/Groups/GriddedGroup.h>
 #include <Model/Groups/Group.h>
 #include <UserInterface/PromptUI.h>
 #include <UserInterface/XWindowUI.h>
@@ -48,10 +52,10 @@
 
     // Register image traversers
     rtrt->registerComponent("null", &NullImageTraverser::create);
-   
     rtrt->registerComponent("tiled", &TiledImageTraverser::create);
-         
     rtrt->registerComponent("frameless", &FramelessImageTraverser::create);
+    rtrt->registerComponent("afr", &AFImageTraverser::create);
+    rtrt->registerComponent("dissolve", &DissolveImageTraverser::create);
 
     // Register image types
     rtrt->registerComponent("null", &NullImage::create);
@@ -86,6 +90,7 @@
     rtrt->registerComponent("environment", &EnvironmentCamera::create);
     rtrt->registerComponent("pinhole", &PinholeCamera::create);
     rtrt->registerComponent("orthogonal", &OrthogonalCamera::create);
+    rtrt->registerComponent("fisheye", &FisheyeCamera::create);
 
     // Register shadow algorithms
     rtrt->registerComponent("noshadows", &NoShadows::create);
@@ -102,6 +107,7 @@
 
     // Register groups
     rtrt->registerObject("group", &Group::create);
+    // rtrt->registerObject("grid", &GriddedGroup::create);
     rtrt->registerObject("bvh", &BVH::create);
   }
 }

Modified: branches/itanium2/Engine/Display/XHelper.cc
==============================================================================
--- branches/itanium2/Engine/Display/XHelper.cc (original)
+++ branches/itanium2/Engine/Display/XHelper.cc Fri Aug 19 01:02:27 2005
@@ -11,6 +11,8 @@
 using namespace Manta;
 using namespace std;
 
+SCIRun::Mutex XHelper::Xlock("XHelper::Xlock");
+
 XFontStruct* XHelper::getX11Font(Display* dpy,
                                  const char* fontstring) {
   // Should we lock X?

Modified: branches/itanium2/Engine/Display/XHelper.h
==============================================================================
--- branches/itanium2/Engine/Display/XHelper.h  (original)
+++ branches/itanium2/Engine/Display/XHelper.h  Fri Aug 19 01:02:27 2005
@@ -12,6 +12,8 @@
 #include <GL/gl.h>
 #include <X11/Xlib.h>
 
+#include <SCIRun/Core/Thread/Mutex.h>
+
 #ifndef Manta_Engine_XHelper_h
 #define Manta_Engine_XHelper_h
 
@@ -28,6 +30,10 @@
   class XHelper {
   public:
 
+    // Use this to make sure that only one X program is opening
+    // windows at a time.
+    static SCIRun::Mutex Xlock;
+    
     // If there was an error NULL is returned.
     static XFontStruct* getX11Font(Display* dpy,
                                    const char* fontstring=__FONTSTRING__);

Modified: branches/itanium2/Engine/ImageTraversers/CMakeLists.txt
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/CMakeLists.txt     (original)
+++ branches/itanium2/Engine/ImageTraversers/CMakeLists.txt     Fri Aug 19 
01:02:27 2005
@@ -6,4 +6,16 @@
      ImageTraversers/TiledImageTraverser.cc
      ImageTraversers/FramelessImageTraverser.h
      ImageTraversers/FramelessImageTraverser.cc
+     ImageTraversers/DissolveImageTraverser.h
+     ImageTraversers/DissolveImageTraverser.cc
+     ImageTraversers/DissolveTiledImageTraverser.h
+     ImageTraversers/DissolveTiledImageTraverser.cc
+     ImageTraversers/AFImageTraverser.h
+     ImageTraversers/AFImageTraverser.cc
+     ImageTraversers/AFR/stats.h
+     ImageTraversers/AFR/stats.cc
+     ImageTraversers/AFR/tiles.h
+     ImageTraversers/AFR/tiles.cc
+     ImageTraversers/AFR/kdtree.h
+     ImageTraversers/AFR/kdtree.cc
      )

Modified: branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.cc
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.cc 
(original)
+++ branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.cc Fri 
Aug 19 01:02:27 2005
@@ -43,12 +43,17 @@
   if(shuffledTiles!=NULL) delete [] shuffledTiles;
 }
 
-void FramelessImageTraverser::setupBegin(const SetupContext& context,
+void FramelessImageTraverser::setupBegin(SetupContext& context,
                                          int numChannels)
 {
   context.loadBalancer->setupBegin(context, numChannels);
   // do not need a pixelSampler since we directly access renderer here
   //context.pixelSampler->setupBegin(context, numChannels);
+
+  if (myRandomNumber) delete[] myRandomNumber;
+  myRandomNumber = new MT_RNG[context.numProcs];
+  for(int i=0; i<context.numProcs; i++)
+    myRandomNumber[i].seed_rng(1234); // just to begin give a simple seed
 }
 
 // shuffles the uniformly row ordered 2D tiles
@@ -85,31 +90,28 @@
   nx = 1;
   int tres = xres;
   while(tres>1)
-  {
-    nx++;
-    tres /= 2;
-  }
+    {
+      nx++;
+      tres /= 2;
+    }
   
   ny = 1;
   tres = yres;
   while(tres>1)
-  {
-    ny++;
-    tres /= 2;
-  }
+    {
+      ny++;
+      tres /= 2;
+    }
   nx/=2;
   ny/=2;
-  
+  nx--;
+  ny--;
   xtilesize = 1;
   for(i=0; i<nx; i++)  xtilesize *= 2;
     
   ytilesize = 1;
   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;
   if(xres%xtilesize>0) xtiles++;
   ytiles = yres/ytilesize;
@@ -117,40 +119,43 @@
         
   //printf("tilesize: %d,%d; final tilenum: %d,%d; tilenum: %d,%d", 
xtilesize, ytilesize, xtiles, ytiles, nx, ny);
   // allocate unifrom row ordered tiles
+  if (shuffledTiles) delete[] shuffledTiles;
   shuffledTiles = new UniformTiles[xtiles*ytiles];
   for(i=0; i<xtiles*ytiles; i++) {
     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;
-    }
+      {
+        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;
-    }
+      {
+        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; 
     if(shuffledTiles[i].xstart == shuffledTiles[i].xend)
-    { printf("error\n"); }   
+      { printf("error\n"); }   
     if( shuffledTiles[i].ystart == shuffledTiles[i].yend)
-    { printf("error\n"); }  
+      { printf("error\n"); }  
   }
   
   shuffleMyTiles(); // shuffle them up
   
   int numAssignments = xtiles * ytiles; // these will be the number of 
assignments to make to threads
+  cout << "numAssignments = " << numAssignments << endl;
+  cout << "xtiles = " << xtiles << ", ytiles = " << ytiles << endl;
   context.loadBalancer->setupDisplayChannel(context, numAssignments);
   //context.pixelSampler->setupDisplayChannel(context);
 }
@@ -185,15 +190,15 @@
       // normalized
       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);
-      }
+        {
+          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);
-      }  
+        {
+          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);
     }

Modified: branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.h
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.h  
(original)
+++ branches/itanium2/Engine/ImageTraversers/FramelessImageTraverser.h  Fri 
Aug 19 01:02:27 2005
@@ -13,26 +13,26 @@
   using namespace std;
   struct UniformTiles
   {
-         int xstart, ystart, xend, yend;
+    int xstart, ystart, xend, yend;
   };
   class FramelessImageTraverser : public ImageTraverser {
   public:
     FramelessImageTraverser(const vector<string>& args);
     virtual ~FramelessImageTraverser();
-    virtual void setupBegin(const SetupContext&, int numChannels);
+    virtual void setupBegin(SetupContext&, int numChannels);
     virtual void setupDisplayChannel(SetupContext&);
     virtual void setupFrame(const RenderContext& context);
     virtual void renderImage(const RenderContext& context, Image* image);
-       void shuffleMyTiles();
+    void shuffleMyTiles();
     void renderFragment(const RenderContext& context, Fragment& fragment, 
int xres, int yres);
     static ImageTraverser* create(const vector<string>& args);
   private:
     FramelessImageTraverser(const FramelessImageTraverser&);
     FramelessImageTraverser& operator=(const FramelessImageTraverser&);
-       int xtilesize, ytilesize;
-       UniformTiles *shuffledTiles;
+    int xtilesize, ytilesize;
+    UniformTiles *shuffledTiles;
     int xtiles,ytiles;
-       MT_RNG *myRandomNumber;
+    MT_RNG *myRandomNumber;
   };
 }
 

Modified: branches/itanium2/Engine/ImageTraversers/NullImageTraverser.cc
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/NullImageTraverser.cc      
(original)
+++ branches/itanium2/Engine/ImageTraversers/NullImageTraverser.cc      Fri 
Aug 19 01:02:27 2005
@@ -19,7 +19,7 @@
 {
 }
 
-void NullImageTraverser::setupBegin(const SetupContext&, int)
+void NullImageTraverser::setupBegin(SetupContext&, int)
 {
 }
 

Modified: branches/itanium2/Engine/ImageTraversers/NullImageTraverser.h
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/NullImageTraverser.h       
(original)
+++ branches/itanium2/Engine/ImageTraversers/NullImageTraverser.h       Fri 
Aug 19 01:02:27 2005
@@ -14,7 +14,7 @@
   public:
     NullImageTraverser(const vector<string>& args);
     virtual ~NullImageTraverser();
-    virtual void setupBegin(const SetupContext&, int numChannels);
+    virtual void setupBegin(SetupContext&, int numChannels);
     virtual void setupDisplayChannel(SetupContext&);
     virtual void setupFrame(const RenderContext& context);
     virtual void renderImage(const RenderContext& context, Image* image);

Modified: branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.cc
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.cc     
(original)
+++ branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.cc     Fri 
Aug 19 01:02:27 2005
@@ -37,7 +37,7 @@
 {
 }
 
-void TiledImageTraverser::setupBegin(const SetupContext& context, int 
numChannels)
+void TiledImageTraverser::setupBegin(SetupContext& context, int numChannels)
 {
   context.loadBalancer->setupBegin(context, numChannels);
   context.pixelSampler->setupBegin(context, numChannels);

Modified: branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.h
==============================================================================
--- branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.h      
(original)
+++ branches/itanium2/Engine/ImageTraversers/TiledImageTraverser.h      Fri 
Aug 19 01:02:27 2005
@@ -14,7 +14,7 @@
   public:
     TiledImageTraverser(const vector<string>& args);
     virtual ~TiledImageTraverser();
-    virtual void setupBegin(const SetupContext&, int numChannels);
+    virtual void setupBegin(SetupContext&, int numChannels);
     virtual void setupDisplayChannel(SetupContext&);
     virtual void setupFrame(const RenderContext& context);
     virtual void renderImage(const RenderContext& context, Image* image);

Modified: branches/itanium2/Interface/Camera.h
==============================================================================
--- branches/itanium2/Interface/Camera.h        (original)
+++ branches/itanium2/Interface/Camera.h        Fri Aug 19 01:02:27 2005
@@ -27,7 +27,8 @@
                // Reset the camera.
                virtual void reset( const Point &eye_, const Vector &up_, 
const Point &lookat_ ) = 0;
                
-               virtual Point project(const Point &point) = 0; // project the 
3D point on to the camera image plane
+    virtual Point project(const Point &point) const = 0; // project the 3D 
point on to the camera image plane
+
     enum TransformCenter {
       LookAt,
       Eye,

Modified: branches/itanium2/Interface/Context.h
==============================================================================
--- branches/itanium2/Interface/Context.h       (original)
+++ branches/itanium2/Interface/Context.h       Fri Aug 19 01:02:27 2005
@@ -60,6 +60,7 @@
       minPipelineDepth =1;
       maxPipelineDepth = 1000;
       masterWindow = 0;
+      multipleGLWindows = false;
     }
     RTRTInterface* rtrt_int;
     int channelIndex;
@@ -108,12 +109,21 @@
     void clearMasterWindow() {
       masterWindow = 0;
     }
-
+    void setMultipleGLWindows() {
+      multipleGLWindows = true;
+    }
+    void unsetMultipleGLWindows() {
+      multipleGLWindows = false;
+    }
+    bool getMultipleGLWindows() {
+      return multipleGLWindows;
+    }
   private:
     SetupContext(const SetupContext&);
     SetupContext& operator=(const SetupContext&);
 
     bool stereo;
+    bool multipleGLWindows;
     int xres, yres;
     int minPipelineDepth, maxPipelineDepth;
     bool changed;

Modified: branches/itanium2/Interface/Fragment.h
==============================================================================
--- branches/itanium2/Interface/Fragment.h      (original)
+++ branches/itanium2/Interface/Fragment.h      Fri Aug 19 01:02:27 2005
@@ -18,6 +18,7 @@
 
 #include <Core/Color/Color.h>
 #include <Core/Util/FancyAssert.h>
+#include <Core/Util/Assert.h>
 #include <Core/Math/MT_RNG.h>
 
 // TODO:
@@ -35,41 +36,77 @@
     static const int ConsecutiveX    = 0x01;  // Implies a constant Y:
     static const int ConstantEye = 0x02;
 
-       Fragment() {} // empty constructor
+    Fragment(): flags(0), size(0) {} // empty constructor
     // Creates a "Scan-line" fragment.
     Fragment(int which_eye, int xstart, int xend, int y) {
       ASSERTRANGE(xend-xstart, 0, MaxFragmentSize+1);
       int nx = xend-xstart;
       for(int i=0; i< nx;i++){
-       data[i].x = i+xstart;
-       data[i].y = y;
-       data[i].which_eye = which_eye;
+        data[i].x = i+xstart;
+        data[i].y = y;
+        data[i].which_eye = which_eye;
       }
       flags = ConsecutiveX|ConstantEye;
       size = nx;
     }
        
-    ~Fragment() {
+    ~Fragment() {}
+
+    void addElement(int x, int y, int which_eye) {
+      ASSERT(size < MaxFragmentSize);
+      data[size].x = x;
+      data[size].y = y;
+      data[size].which_eye = which_eye;
+      size++;
     }
-       
-    void createRandom(int numElements, int xstart, int ystart, int xend, int 
yend, int which_eye, MT_RNG &myRandomNumber)
-       {
-               size = numElements;
-               flags = ConstantEye;
-               for(int i=0;i<size;i++)
-               {
-                       data[i].x = 
(int)(xstart+myRandomNumber.genfrand()*(xend - xstart));
-                       data[i].y = 
(int)(ystart+myRandomNumber.genfrand()*(yend - ystart));
-                       data[i].which_eye = which_eye;
-               }
-       }
-       
+    // input: a rectangular tile and number of sample locations to generate
+    // output: creates randomly oriented sample locations in given range
+    void createRandom(const int numElements,
+                      const int xstart, const int ystart,
+                      const int xend, const int yend, const int which_eye, 
+                      MT_RNG &myRandomNumber)
+    {
+      size = numElements;
+      flags = ConstantEye;
+      for(int i=0;i<size;i++)
+      {
+        data[i].x = (int)(xstart+myRandomNumber.genfrand()*(xend - xstart));
+        data[i].y = (int)(ystart+myRandomNumber.genfrand()*(yend - ystart));
+        data[i].which_eye = which_eye;
+      }
+    }
+      
+    // Add a sample location to the fragment and return if fragment
+    // has more space left or not.
+    bool addItem(const int x, const int y, const int which_eye, int index) {
+      data[index].x = x;
+      data[index].y = y;
+      data[index].which_eye = which_eye;
+      if(index+1>=size) return false; else return true;
+    }
+  
     int getFlags() const {
       return flags;
     }
+    void setFlags(const int newflags) {
+      flags = newflags;
+    }
+
     int getSize() const {
       return size;
     }
+    void setSize(const int newSize) {
+      size = newSize;
+    }
+
+    void resetSize() {
+      size = 0;
+    }
+    void resetAll() {
+      size = 0;
+      flags = 0;
+    }
+
     void setColor(int which, const Color& color) {
       data[which].color = color;
     }
@@ -80,8 +117,8 @@
 
     // Represents a Pixel
     struct Element {
-         // Pixel position in image space
-         int x, y;
+      // Pixel position in image space
+      int x, y;
       int which_eye; // monocular: always 0, stereo: 0=left, 1=right
       Color color;   // Final result
     };

Modified: branches/itanium2/Interface/ImageTraverser.h
==============================================================================
--- branches/itanium2/Interface/ImageTraverser.h        (original)
+++ branches/itanium2/Interface/ImageTraverser.h        Fri Aug 19 01:02:27 
2005
@@ -9,7 +9,7 @@
   class ImageTraverser {
   public:
     virtual ~ImageTraverser();
-    virtual void setupBegin(const SetupContext&, int numChannels) = 0;
+    virtual void setupBegin(SetupContext&, int numChannels) = 0;
     virtual void setupDisplayChannel(SetupContext&) = 0;
     virtual void setupFrame(const RenderContext& context) = 0;
     virtual void renderImage(const RenderContext& context, Image* image) = 0;

Modified: branches/itanium2/Model/Cameras/CMakeLists.txt
==============================================================================
--- branches/itanium2/Model/Cameras/CMakeLists.txt      (original)
+++ branches/itanium2/Model/Cameras/CMakeLists.txt      Fri Aug 19 01:02:27 
2005
@@ -5,4 +5,7 @@
      Cameras/PinholeCamera.h
      Cameras/PinholeCamera.cc
      Cameras/OrthogonalCamera.h
-     Cameras/OrthogonalCamera.cc)
+     Cameras/OrthogonalCamera.cc
+     Cameras/FisheyeCamera.h
+     Cameras/FisheyeCamera.cc
+     )

Modified: branches/itanium2/Model/Cameras/EnvironmentCamera.cc
==============================================================================
--- branches/itanium2/Model/Cameras/EnvironmentCamera.cc        (original)
+++ branches/itanium2/Model/Cameras/EnvironmentCamera.cc        Fri Aug 19 
01:02:27 2005
@@ -166,7 +166,7 @@
   // This functionality doesn't make much sense with the environment camera
 }
 
-Point EnvironmentCamera::project(const Point &point)
+Point EnvironmentCamera::project(const Point &point) const 
 {
   // NOT FINISHED
   return Point(0., 0., 0.);

Modified: branches/itanium2/Model/Cameras/EnvironmentCamera.h
==============================================================================
--- branches/itanium2/Model/Cameras/EnvironmentCamera.h (original)
+++ branches/itanium2/Model/Cameras/EnvironmentCamera.h Fri Aug 19 01:02:27 
2005
@@ -26,7 +26,7 @@
     virtual void dolly(double);
     virtual void transform(AffineTransform t, TransformCenter);
     virtual void autoview(double fov);
-    virtual Point project(const Point &point);  // project a 3D point to the 
camera image plane
+    virtual Point project(const Point &point) const;  // project a 3D point 
to the camera image plane
     static Camera* create(const vector<string>& args);
                
                virtual Point  getPosition() const { return eye; }

Copied: branches/itanium2/Model/Cameras/FisheyeCamera.cc (from r479, 
trunk/Model/Cameras/FisheyeCamera.cc)
==============================================================================
--- trunk/Model/Cameras/FisheyeCamera.cc        (original)
+++ branches/itanium2/Model/Cameras/FisheyeCamera.cc    Fri Aug 19 01:02:27 
2005
@@ -180,7 +180,7 @@
   setup();
 }
 
-Point FisheyeCamera::project(const Point &point) const 
+Point FisheyeCamera::project(const Point &point) const
 {
   // NOT FINISHED
   return Point(0,0,0); // just a placeholder

Copied: branches/itanium2/Model/Cameras/FisheyeCamera.h (from r479, 
trunk/Model/Cameras/FisheyeCamera.h)
==============================================================================
--- trunk/Model/Cameras/FisheyeCamera.h (original)
+++ branches/itanium2/Model/Cameras/FisheyeCamera.h     Fri Aug 19 01:02:27 
2005
@@ -13,8 +13,13 @@
   using namespace std;
 
   class FisheyeCamera : public Camera {
+  private:
+    void setup();    
   public:
     FisheyeCamera(const vector<string>& args);
+    FisheyeCamera( const Point &eye_, const Point &lookat_, const Vector 
&up_, double hfov_ = 60.0 ) :
+      eye( eye_ ), up( up_ ), lookat( lookat_ ), hfov( hfov_ ) { setup(); 
hfov = hfov / 90; };
+    
     virtual ~FisheyeCamera();
     virtual void makeRays(RayPacket&) const;
 
@@ -26,8 +31,15 @@
     virtual void autoview(double fov);
     virtual Point project(const Point &point) const;  // project a 3D point 
to the camera image plane
     static Camera* create(const vector<string>& args);
+
+    virtual Point getPosition() const { return eye; }
+    virtual Point getLookAt()   const { return lookat; };
+    virtual Vector getUp()       const { return up; };
+
+    virtual void reset( const Point &eye_, const Vector &up_, const Point 
&lookat_ ) {
+      eye = eye_; up = up_; lookat = lookat_; setup(); };
+
   private:
-    void setup();
     Point  eye;
     Point  lookat;
     Vector up;

Modified: branches/itanium2/Model/Cameras/OrthogonalCamera.cc
==============================================================================
--- branches/itanium2/Model/Cameras/OrthogonalCamera.cc (original)
+++ branches/itanium2/Model/Cameras/OrthogonalCamera.cc Fri Aug 19 01:02:27 
2005
@@ -158,7 +158,7 @@
   setup();
 }
 
-Point OrthogonalCamera::project(const Point &point)
+Point OrthogonalCamera::project(const Point &point) const
 {
        // NOT FINISHED
        return Point(0,0,0); // just a placeholder

Modified: branches/itanium2/Model/Cameras/OrthogonalCamera.h
==============================================================================
--- branches/itanium2/Model/Cameras/OrthogonalCamera.h  (original)
+++ branches/itanium2/Model/Cameras/OrthogonalCamera.h  Fri Aug 19 01:02:27 
2005
@@ -25,7 +25,7 @@
     virtual void dolly(double);
     virtual void transform(AffineTransform t, TransformCenter);
     virtual void autoview(double fov);
-         virtual Point project(const Point &point);
+         virtual Point project(const Point &point) const;
     static Camera* create(const vector<string>& args);
                
                virtual Point getPosition() const { return eye; }

Modified: branches/itanium2/Model/Cameras/PinholeCamera.cc
==============================================================================
--- branches/itanium2/Model/Cameras/PinholeCamera.cc    (original)
+++ branches/itanium2/Model/Cameras/PinholeCamera.cc    Fri Aug 19 01:02:27 
2005
@@ -203,7 +203,7 @@
   setup();
 }
 
-Point PinholeCamera::project(const Point &point)
+Point PinholeCamera::project(const Point &point) const
 {
   // translate camera center to origin
   Vector trans(-eye.x(), -eye.y(), -eye.z());

Modified: branches/itanium2/Model/Cameras/PinholeCamera.h
==============================================================================
--- branches/itanium2/Model/Cameras/PinholeCamera.h     (original)
+++ branches/itanium2/Model/Cameras/PinholeCamera.h     Fri Aug 19 01:02:27 
2005
@@ -27,7 +27,7 @@
     virtual void transform(AffineTransform t, TransformCenter);
     virtual void autoview(double fov);
                virtual void output( std::ostream &os );
-         virtual Point project(const Point &point);  // project a 3D point 
to the camera image plane
+         virtual Point project(const Point &point) const;  // project a 3D 
point to the camera image plane
     static Camera* create(const vector<string>& args);
                
                virtual Point getPosition() const { return eye; }

Modified: branches/itanium2/fox/FMantaWindow.cc
==============================================================================
--- branches/itanium2/fox/FMantaWindow.cc       (original)
+++ branches/itanium2/fox/FMantaWindow.cc       Fri Aug 19 01:02:27 2005
@@ -12,6 +12,7 @@
 #include <Model/Cameras/PinholeCamera.h>
 #include <Model/Cameras/OrthogonalCamera.h>
 #include <Model/Cameras/EnvironmentCamera.h>
+#include <Model/Cameras/FisheyeCamera.h>
 #include <Model/MiscObjects/CuttingPlane.h>
 
 #include <iostream>
@@ -39,6 +40,7 @@
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_PINHOLE_CAMERA,     
FMantaWindow::onCamera ),
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_ORTHO_CAMERA,       
FMantaWindow::onCamera ),
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_ENVIRONMENT_CAMERA, 
FMantaWindow::onCamera ),
+  FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_FISHEYE_CAMERA,     
FMantaWindow::onCamera ),
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_TEXT_CAMERA,        
FMantaWindow::onCameraText ),       
        
        // Shadows.
@@ -54,6 +56,7 @@
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_TEXT_SAMPLER,    
FMantaWindow::onPixelSamplerText ),
 
        // Traversers
+  FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_TILED_TRAVERSER, 
FMantaWindow::onTraverser ),
   FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_FRAMELESS_TRAVERSER,       
FMantaWindow::onTraverser ),
        FXMAPFUNC(SEL_COMMAND, FMantaWindow::ID_TEXT_TRAVERSER,  
FMantaWindow::onTraverserText ),
 
@@ -88,6 +91,7 @@
        new FXMenuCommand( camera_menu, "Pinhole Camera", 0, this, 
ID_PINHOLE_CAMERA );
        new FXMenuCommand( camera_menu, "Orthogonal Camera", 0, this, 
ID_ORTHO_CAMERA );
        new FXMenuCommand( camera_menu, "Environment Camera", 0, this, 
ID_ENVIRONMENT_CAMERA );
+  new FXMenuCommand( camera_menu, "Fish Eye Camera", 0, this, 
ID_FISHEYE_CAMERA );
        new FXMenuCommand( camera_menu, "Enter Text...", 0, this, 
ID_TEXT_CAMERA );
        new FXMenuTitle  ( menu_bar, "Camera", 0, camera_menu );
        
@@ -109,6 +113,7 @@
        
        // Traverser Menu.
        traverser_menu = new FXMenuPane( this );
+  new FXMenuCommand( traverser_menu, "Tiled", 0, this, ID_TILED_TRAVERSER );
   new FXMenuCommand( traverser_menu, "Frameless", 0, this, 
ID_FRAMELESS_TRAVERSER );
        new FXMenuCommand( traverser_menu, "Enter Text...", 0, this,  
ID_TEXT_TRAVERSER );
        new FXMenuTitle( menu_bar, "Traversers", 0, traverser_menu );
@@ -277,6 +282,11 @@
                        new_camera = new EnvironmentCamera( 
camera->getPosition(), camera->getLookAt(), camera->getUp() );
                        manta_interface->addTransaction("Camera",
                                                                              
                                                                          
Callback::create(this,&FMantaWindow::mantaCamera1,new_camera));
+      break;
+  case ID_FISHEYE_CAMERA:
+      new_camera = new FisheyeCamera( camera->getPosition(), 
camera->getLookAt(), camera->getUp(), 120 );
+                       manta_interface->addTransaction("Camera",
+                                                                             
                                                                          
Callback::create(this,&FMantaWindow::mantaCamera1,new_camera));      
                        break;
        };
 
@@ -371,6 +381,10 @@
        int id = FXSELID( key );
                
        switch (id) {
+    case ID_TILED_TRAVERSER:
+      manta_interface->addTransaction("Image Traverser.",
+                               
Callback::create(this,&FMantaWindow::mantaTraverser,string("tiled")));
+    break;
                case ID_FRAMELESS_TRAVERSER:
                        manta_interface->addTransaction("Image Traverser.",
                                
Callback::create(this,&FMantaWindow::mantaTraverser,string("frameless")));

Modified: branches/itanium2/fox/FMantaWindow.h
==============================================================================
--- branches/itanium2/fox/FMantaWindow.h        (original)
+++ branches/itanium2/fox/FMantaWindow.h        Fri Aug 19 01:02:27 2005
@@ -82,6 +82,7 @@
                        ID_PINHOLE_CAMERA,
                        ID_ORTHO_CAMERA,
                        ID_ENVIRONMENT_CAMERA,
+      ID_FISHEYE_CAMERA,
                        ID_TEXT_CAMERA,
                        
                        // Shadow options.
@@ -97,6 +98,7 @@
                        ID_TEXT_SAMPLER,    // User wants to enter a 
description manually.
                        
                        // Image traverser options.
+      ID_TILED_TRAVERSER,
       ID_FRAMELESS_TRAVERSER,
                        ID_TEXT_TRAVERSER,
                        




  • [MANTA] r480 - in branches/itanium2: Core/Util Engine/Control Engine/Display Engine/ImageTraversers Engine/ImageTraversers/AFR Interface Model/Cameras fox, abe, 08/19/2005

Archive powered by MHonArc 2.6.16.

Top of page