Text archives Help
- From: bigler@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1458 - in trunk: Core/Math Engine/Control Interface
- Date: Mon, 9 Jul 2007 18:41:56 -0600 (MDT)
Author: bigler
Date: Mon Jul 9 18:41:55 2007
New Revision: 1458
Modified:
trunk/Core/Math/CheapRNG.h
trunk/Engine/Control/RTRT.cc
trunk/Engine/Control/RTRT.h
trunk/Interface/MantaInterface.h
Log:
Core/Math/CheapRNG.h
Added create function.
Engine/Control/RTRT.cc
Engine/Control/RTRT.h
Interface/MantaInterface.h
Start of random number generator selection ability.
Modified: trunk/Core/Math/CheapRNG.h
==============================================================================
--- trunk/Core/Math/CheapRNG.h (original)
+++ trunk/Core/Math/CheapRNG.h Mon Jul 9 18:41:55 2007
@@ -69,8 +69,9 @@
uint32 val;
public:
- // Your seed value is upto the fates. You should call seed.
+ // Your seed value is up to the fates. You should call seed.
CheapRNG() {}
+ static RandomNumberGenerator* create() { return new CheapRNG(); }
virtual void seed(unsigned int seed_val) {
val = seed_val;
Modified: trunk/Engine/Control/RTRT.cc
==============================================================================
--- trunk/Engine/Control/RTRT.cc (original)
+++ trunk/Engine/Control/RTRT.cc Mon Jul 9 18:41:55 2007
@@ -67,6 +67,8 @@
#include <Interface/Material.h>
+#include <Core/Math/CheapRNG.h>
+
using namespace Manta;
using namespace std;
using SCIRun::IllegalValue;
@@ -87,7 +89,9 @@
////////////////////////////////////////////////////////////////////////////////
// RTRT Worker class.
RTRT::Worker::Worker(RTRT* rtrt, int workerIndex, bool lateComerFlag)
- : rtrt(rtrt), workerIndex(workerIndex), lateComerFlag(lateComerFlag)
+ : rtrt(rtrt),
+ workerIndex(workerIndex),
+ lateComerFlag(lateComerFlag)
{
}
@@ -110,14 +114,21 @@
///////////////////////////////////////////////////////////////////////////////
RTRT::RTRT()
- : runningLock("RTRT running mutex"),
+ : currentImageTraverser(NULL),
+ currentLoadBalancer(NULL),
+ currentPixelSampler(NULL),
+ currentRenderer(NULL),
+ currentShadowAlgorithm(NULL),
+ create_image(NULL),
+ create_rng(NULL),
+ runningLock("RTRT running mutex"),
callbackLock("RTRT callback r/w lock"),
barrier1("RTRT frame barrier #1"),
barrier2("RTRT frame barrier #2"),
barrier3("RTRT frame barrier #3"),
transaction_lock("RTRT transaction lock"),
- channel_create_lock("RTRT channel creation lock"),
- thread_storage( 0 )
+ thread_storage( 0 ),
+ channel_create_lock("RTRT channel creation lock")
{
workersWanted=0;
workersRendering=0;
@@ -133,7 +144,8 @@
pipelineNeedsSetup = true;
scene = 0;
verbose_transactions = false;
- currentPixelSampler = 0;
+
+ create_rng = &CheapRNG::create;
}
RTRT::~RTRT()
@@ -1093,69 +1105,71 @@
// Image Traverser
-void RTRT::setImageTraverser( ImageTraverser *image_traverser_ ) {
+void RTRT::setImageTraverser( ImageTraverser* image_traverser_ ) {
currentImageTraverser = image_traverser_;
}
-ImageTraverser *RTRT::getImageTraverser() const {
+ImageTraverser* RTRT::getImageTraverser() const {
return currentImageTraverser;
}
// Image Type
-void RTRT::setCreateImageCallback( CreateImageCallback * const callback ) {
-
+void RTRT::setCreateImageCallback( CreateImageCallback* const callback ) {
create_image = callback;
}
MantaInterface::CreateImageCallback * RTRT::getCreateImageCallback() const {
-
return create_image;
}
-// Load Balancer.
+// Random Number Generator
+void RTRT::setRNGCreator( RNGCreator const callback ) {
+ create_rng = callback;
+}
+MantaInterface::RNGCreator RTRT::getRNGCreator() const {
+ return create_rng;
+}
-void RTRT::setLoadBalancer( LoadBalancer *load_balancer_ ) {
+// Load Balancer.
+
+void RTRT::setLoadBalancer( LoadBalancer* load_balancer_ ) {
currentLoadBalancer = load_balancer_;
}
-LoadBalancer *RTRT::getLoadBalancer() const {
-
+LoadBalancer* RTRT::getLoadBalancer() const {
return currentLoadBalancer;
}
// Pixel Sampler
-void RTRT::setPixelSampler( PixelSampler *sampler_ ) {
+void RTRT::setPixelSampler( PixelSampler* sampler_ ) {
currentPixelSampler = sampler_;
}
-PixelSampler *RTRT::getPixelSampler() const {
+PixelSampler* RTRT::getPixelSampler() const {
return currentPixelSampler;
}
// Renderer
-void RTRT::setRenderer( Renderer *renderer_ ) {
-
+void RTRT::setRenderer( Renderer* renderer_ ) {
currentRenderer = renderer_;
}
Renderer* RTRT::getRenderer(void) const {
-
return currentRenderer;
}
// Idle Mode
-RTRT::IdleModeHandle RTRT::addIdleMode(IdleMode *idle_mode)
+RTRT::IdleModeHandle RTRT::addIdleMode(IdleMode* idle_mode)
{
currentIdleModes.push_back(idle_mode);
return currentIdleModes.size()-1;
}
IdleMode *RTRT::getIdleMode( IdleModeHandle i ) const {
-
return currentIdleModes[i];
}
@@ -1174,7 +1188,7 @@
scene = newScene;
}
-Scene *RTRT::getScene() { return scene; }
+Scene* RTRT::getScene() { return scene; }
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Modified: trunk/Engine/Control/RTRT.h
==============================================================================
--- trunk/Engine/Control/RTRT.h (original)
+++ trunk/Engine/Control/RTRT.h Mon Jul 9 18:41:55 2007
@@ -55,6 +55,7 @@
class Camera;
class Image;
class Scene;
+ class RandomNumberGenerator;
class RTRT : public MantaInterface {
public:
@@ -87,6 +88,10 @@
virtual void setCreateImageCallback( CreateImageCallback * const
callback );
virtual CreateImageCallback * getCreateImageCallback() const;
+ // Random Number Generator
+ virtual void setRNGCreator( RNGCreator const callback );
+ virtual RNGCreator getRNGCreator() const;
+
// Load Balancers
virtual void setLoadBalancer( LoadBalancer *load_balancer_ );
virtual LoadBalancer *getLoadBalancer() const;
@@ -204,7 +209,7 @@
bool stereo;
int pipelineDepth;
bool active;
- CreateImageCallback *create_image;
+ CreateImageCallback* create_image;
vector<Image*> images;
Camera* camera;
};
@@ -241,7 +246,8 @@
ShadowAlgorithm* currentShadowAlgorithm;
vector<IdleMode*> currentIdleModes;
- CreateImageCallback *create_image;
+ CreateImageCallback* create_image;
+ RNGCreator create_rng;
private:
RTRT(const RTRT&);
@@ -335,6 +341,9 @@
// Thread local storage allocator.
ThreadStorage *thread_storage;
+
+ // RandomNumberGenerator
+ vector<RandomNumberGenerator*> rngs;
Scene* scene;
Modified: trunk/Interface/MantaInterface.h
==============================================================================
--- trunk/Interface/MantaInterface.h (original)
+++ trunk/Interface/MantaInterface.h Mon Jul 9 18:41:55 2007
@@ -53,12 +53,13 @@
class ImageTraverser;
class LoadBalancer;
class PixelSampler;
+ class RandomNumberGenerator;
+ class RayPacket;
class Renderer;
class Scene;
class SetupCallback;
class ShadowAlgorithm;
class UserInterface;
- class RayPacket;
class MantaInterface {
public:
@@ -89,34 +90,37 @@
// Idle modes
typedef unsigned int IdleModeHandle;
- virtual IdleModeHandle addIdleMode( IdleMode *idle_mode_ ) = 0;
- virtual IdleMode *getIdleMode( IdleModeHandle i ) const = 0;
+ virtual IdleModeHandle addIdleMode( IdleMode* idle_mode_ ) = 0;
+ virtual IdleMode* getIdleMode( IdleModeHandle i ) const = 0;
-
///////////////////////////////////////////////////////////////////////////
-
///////////////////////////////////////////////////////////////////////////
- // Render Stack Components.
-
///////////////////////////////////////////////////////////////////////////
-
///////////////////////////////////////////////////////////////////////////
+ /*
+ * Render Stack Components.
+ */
// Image Traversers
- virtual void setImageTraverser( ImageTraverser *image_traverser_ ) = 0;
- virtual ImageTraverser *getImageTraverser() const = 0;
+ virtual void setImageTraverser( ImageTraverser* image_traverser_ ) = 0;
+ virtual ImageTraverser* getImageTraverser() const = 0;
// Image Types (rgb, rgba, float, etc.)
- typedef CallbackBase_4Data<bool,int,int,Image *&> CreateImageCallback;
- virtual void setCreateImageCallback( CreateImageCallback * const
callback ) = 0;
- virtual CreateImageCallback * getCreateImageCallback() const = 0;
+ typedef CallbackBase_4Data<bool,int,int,Image*&> CreateImageCallback;
+ virtual void setCreateImageCallback( CreateImageCallback* const callback
) = 0;
+ virtual CreateImageCallback* getCreateImageCallback() const = 0;
+
+ // Random Number Generator
+ typedef RandomNumberGenerator*(*RNGCreator)();
+ virtual void setRNGCreator( RNGCreator const callback ) = 0;
+ virtual RNGCreator getRNGCreator() const = 0;
// Load Balancers
- virtual void setLoadBalancer( LoadBalancer *load_balancer_ ) = 0;
- virtual LoadBalancer *getLoadBalancer() const = 0;
+ virtual void setLoadBalancer( LoadBalancer* load_balancer_ ) = 0;
+ virtual LoadBalancer* getLoadBalancer() const = 0;
// PixelSamplers
- virtual void setPixelSampler( PixelSampler *sampler_ ) = 0;
- virtual PixelSampler *getPixelSampler() const = 0;
+ virtual void setPixelSampler( PixelSampler* sampler_ ) = 0;
+ virtual PixelSampler* getPixelSampler() const = 0;
// Renderers
- virtual void setRenderer( Renderer *renderer_ ) = 0;
+ virtual void setRenderer( Renderer* renderer_ ) = 0;
virtual Renderer* getRenderer() const = 0;
// Shadow Algorithms
@@ -125,7 +129,7 @@
// Scene
virtual void setScene(Scene* scene) = 0;
- virtual Scene *getScene() = 0;
+ virtual Scene* getScene() = 0;
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
- [MANTA] r1458 - in trunk: Core/Math Engine/Control Interface, bigler, 07/09/2007
Archive powered by MHonArc 2.6.16.