Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r506 - in branches/AFR: Engine/Control Engine/ImageTraversers Image Interface


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r506 - in branches/AFR: Engine/Control Engine/ImageTraversers Image Interface
  • Date: Fri, 26 Aug 2005 14:26:07 -0600 (MDT)

Author: abe
Date: Fri Aug 26 14:26:06 2005
New Revision: 506

Modified:
   branches/AFR/Engine/Control/AFRPipeline.cc
   branches/AFR/Engine/Control/AFRPipeline.h
   branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
   branches/AFR/Image/NullImage.cc
   branches/AFR/Image/NullImage.h
   branches/AFR/Image/SimpleImage.h
   branches/AFR/Interface/Image.h
Log:


First working version with partial implementation of new pipeline.

M    Image/NullImage.cc
M    Image/SimpleImage.h
M    Image/NullImage.h
M    Interface/Image.h
M    Engine/Control/AFRPipeline.cc
M    Engine/Control/AFRPipeline.h
M    Engine/ImageTraversers/AFImageTraverser.h


Modified: branches/AFR/Engine/Control/AFRPipeline.cc
==============================================================================
--- branches/AFR/Engine/Control/AFRPipeline.cc  (original)
+++ branches/AFR/Engine/Control/AFRPipeline.cc  Fri Aug 26 14:26:06 2005
@@ -86,6 +86,9 @@
 
 #define RENDER_THREAD_STACKSIZE 1024*1024
 
+
+#include <Engine/ImageTraversers/AFImageTraverser.h>
+
 RTRTInterface* Manta::Afr::createAFRPipeline() {
        return new AFRPipeline();
 }
@@ -295,7 +298,7 @@
       animFrameState.frameNumber++;
       switch(timeMode){
                                case RealTime:
-                                       animFrameState.frameTime = 
Time::currentSeconds() * timeScale;
+                                       animFrameState.frameTime = 
SCIRun::Time::currentSeconds() * timeScale;
                                        break;
                                case FixedRate:
                                        animFrameState.frameTime = 
static_cast<double>(animFrameState.frameNumber) / frameRate;
@@ -336,22 +339,6 @@
       postTransactions(changed);
     
                
///////////////////////////////////////////////////////////////////////////
-               // Setup the frame??
-#if 0
-               if(!firstFrame){
-      for(int index = 0;index < static_cast<int>(channels.size());index++){
-                               Channel* channel = channels[index];
-                               RenderContext myContext(this, index, proc, 
workersAnimAndImage,
-                                                                             
                                                  &animFrameState,
-                                                                             
                                                  currentLoadBalancer, 
currentPixelSampler,
-                                                                             
                                                  currentRenderer, 
currentShadowAlgorithm,
-                                                                             
                                                  channel->camera, scene);
-                               currentImageTraverser->setupFrame(myContext);
-      }
-    }
-#endif
-               
-               
///////////////////////////////////////////////////////////////////////////
     // Resize the image. rebuild per thread kd-trees.
                // Note all threads call this, which is different from trunk/
     resizeImages(animFrameState.frameNumber);
@@ -410,8 +397,8 @@
                        
/////////////////////////////////////////////////////////////////////////
                        
/////////////////////////////////////////////////////////////////////////
                        
-                       // currentImageTraverser->updateTiling(); 
!!!!!!!!!!!!!!!!!!!!!!!!!!!
-                       
+      
+    
                        
/////////////////////////////////////////////////////////////////////////
                        // Pre-render callbacks
                        doParallelPreRenderCallbacks(proc, workersRendering);
@@ -425,6 +412,7 @@
                        
/////////////////////////////////////////////////////////////////////////
                        
                        for(int index = 0;index < 
static_cast<int>(channels.size());index++){
+        
                                Channel* channel = channels[index];
                                long renderFrame = 
renderFrameState.frameNumber%channel->pipelineDepth;
                                Image* image = channel->images[renderFrame];
@@ -432,9 +420,16 @@
                                                                              
                                                  currentLoadBalancer, 
currentPixelSampler,
                                                                              
                                                  currentRenderer, 
currentShadowAlgorithm,
                                                                              
                                                  channel->camera, scene);
-                               
-                               // Have the Afr compliant image traverser 
render samples.
-                               currentImageTraverser->renderImage(myContext, 
image);
+
+
+        
+        if (proc == 0) {
+          currentImageTraverser->masterThread( myContext, image );
+        }
+        else {
+          // Have the Afr compliant image traverser render samples.
+          currentImageTraverser->clientThread( myContext, image );
+        }
                        }
                        
                        // Determine how to break out of inner loop. 
!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -779,13 +774,18 @@
 
 bool AFRPipeline::selectImageTraverser(const string& spec)
 {
+  // Parse the command line args.
   string name;
   vector<string> args;
   parseSpec(spec, name, args);
-  ImageTraverserMapType::iterator iter = imageTraversers.find(name);
-  if(iter == imageTraversers.end())
-    return false;
-  currentImageTraverser = (*iter->second)(args);
+
+  // ImageTraverserMapType::iterator iter = imageTraversers.find(name);
+  // if(iter == imageTraversers.end())
+  //   return false;
+
+  // Only create an AFImageTraverser
+  currentImageTraverser = new AFImageTraverser( args );
+  
   return true;
 }
 

Modified: branches/AFR/Engine/Control/AFRPipeline.h
==============================================================================
--- branches/AFR/Engine/Control/AFRPipeline.h   (original)
+++ branches/AFR/Engine/Control/AFRPipeline.h   Fri Aug 26 14:26:06 2005
@@ -42,6 +42,8 @@
 #include <set>
 #include <vector>
 
+// #include <Engine/ImageTraversers/AFImageTraverser.h>
+
 namespace SCIRun {
   class Thread;
 }
@@ -56,6 +58,8 @@
 
                using namespace std;
 
+    class AFImageTraverser;
+    
                RTRTInterface* createAFRPipeline();
 
                class AFRPipeline : public RTRTInterface {
@@ -229,7 +233,8 @@
                        
                        typedef map<string, ImageTraverserCreator> 
ImageTraverserMapType;
                        ImageTraverserMapType imageTraversers;
-                       ImageTraverser* currentImageTraverser;
+
+      AFImageTraverser* currentImageTraverser;
                        
                        typedef map<string, LoadBalancerCreator> 
LoadBalancerMapType;
                        LoadBalancerMapType loadBalancers;

Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.h      (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.h      Fri Aug 26 
14:26:06 2005
@@ -11,12 +11,9 @@
 #include <Engine/ImageTraversers/AFR/kdtree.h>
 #include <Engine/ImageTraversers/AFR/CQ.h>
 #include <Engine/ImageTraversers/AFR/sample.h>
-#include <Interface/XWindow.h>
-#include <X11/Xutil.h>
-#include <X11/keysym.h>
-#include <GL/glx.h>
 
 namespace Manta {
+
   using namespace std;
   
        namespace Afr {
@@ -28,7 +25,7 @@
                        virtual ~AFImageTraverser();
                        virtual void setupBegin(SetupContext&, int 
numChannels);
                        virtual void setupDisplayChannel(SetupContext&);
-                       virtual void setupFrame(const RenderContext& context);
+                       virtual void setupFrame(const RenderContext& context) 
{ /*Undefined for AFRPipeline.*/ };
                        virtual void renderImage(const RenderContext& 
context, Image* image);
                        void allocateFragments(const FrameType f);
                        

Modified: branches/AFR/Image/NullImage.cc
==============================================================================
--- branches/AFR/Image/NullImage.cc     (original)
+++ branches/AFR/Image/NullImage.cc     Fri Aug 26 14:26:06 2005
@@ -40,8 +40,3 @@
   out_yres = yres;
 }
 
-void NullImage::set(const Fragment&)
-{
-  // Do nothing
-}
-

Modified: branches/AFR/Image/NullImage.h
==============================================================================
--- branches/AFR/Image/NullImage.h      (original)
+++ branches/AFR/Image/NullImage.h      Fri Aug 26 14:26:06 2005
@@ -14,7 +14,8 @@
   public:
     NullImage(bool stereo, int xres, int yres);
     virtual ~NullImage();
-    virtual void set(const Fragment&);
+    virtual void set(const Fragment&) { }; 
+    virtual void set( int x, int y, const Color &color, int which_eye ) { };
     virtual bool isValid() const;
     virtual void setValid(bool to);
     virtual void getResolution(bool& stereo, int& xres, int& yres) const;

Modified: branches/AFR/Image/SimpleImage.h
==============================================================================
--- branches/AFR/Image/SimpleImage.h    (original)
+++ branches/AFR/Image/SimpleImage.h    Fri Aug 26 14:26:06 2005
@@ -18,6 +18,7 @@
     SimpleImage(bool stereo, int xres, int yres);
     virtual ~SimpleImage();
     virtual void set(const Fragment&);
+    virtual void set( int x, int y, const Color &color, int which_eye = 0  );
     virtual bool isValid() const;
     virtual void setValid(bool to);
     virtual void getResolution(bool& stereo, int& xres, int& yres) const;
@@ -101,6 +102,16 @@
     valid = to;
   }
 
+  template<class Pixel>
+  void SimpleImage<Pixel>::set( int x, int y, const Color &color, int 
which_eye ) {
+    
+    // Check to be certain the pixel specified is in bounds.
+    if((x<xres && x>=0) && (y<yres && y>=0)) {
+      convertToPixel(eyeStart[which_eye][y][x], color.convertRGB());
+    }
+    
+  }
+  
   template<class Pixel>
   void SimpleImage<Pixel>::set(const Fragment& fragment)
   {

Modified: branches/AFR/Interface/Image.h
==============================================================================
--- branches/AFR/Interface/Image.h      (original)
+++ branches/AFR/Interface/Image.h      Fri Aug 26 14:26:06 2005
@@ -13,6 +13,7 @@
     virtual bool isValid() const = 0;
     virtual void setValid(bool to) = 0;
     virtual void set(const Fragment&) = 0;
+    virtual void set( int x, int y, const Color &color, int which_eye = 0  ) 
= 0;
   private:
     Image(const Image&);
     Image& operator=(const Image&);




  • [MANTA] r506 - in branches/AFR: Engine/Control Engine/ImageTraversers Image Interface, abe, 08/26/2005

Archive powered by MHonArc 2.6.16.

Top of page