Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1458 - in trunk: Core/Math Engine/Control Interface


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

Top of page