Text archives Help
- 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.