Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1788 - in trunk: Engine/Control Engine/SampleGenerators Interface Model/Primitives


Chronological Thread 
  • From: boulos@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1788 - in trunk: Engine/Control Engine/SampleGenerators Interface Model/Primitives
  • Date: Mon, 22 Oct 2007 20:00:56 -0600 (MDT)

Author: boulos
Date: Mon Oct 22 20:00:32 2007
New Revision: 1788

Added:
   trunk/Engine/SampleGenerators/UniformRandomGenerator.cc
   trunk/Engine/SampleGenerators/UniformRandomGenerator.h
Modified:
   trunk/Engine/Control/RTRT.cc
   trunk/Engine/SampleGenerators/CMakeLists.txt
   trunk/Engine/SampleGenerators/ConstantSampleGenerator.cc
   trunk/Engine/SampleGenerators/ConstantSampleGenerator.h
   trunk/Interface/SampleGenerator.h
   trunk/Model/Primitives/Parallelogram.cc
Log:

Interface/SampleGenerator.h
Engine/SampleGenerators/ConstantSampleGenerator.cc
Engine/SampleGenerators/ConstantSampleGenerator.h 

 Modifying SampleGenerator interface to take the RenderContext as
 input when requesting random numbers. This allows SampleGenerators to
 use the builtin RandomNumberGenerator classes chosen earlier.

Engine/SampleGenerators/CMakeLists.txt
Engine/SampleGenerators/UniformRandomGenerator.cc
Engine/SampleGenerators/UniformRandomGenerator.h

 Adding a new "purely random" UniformRandomGenerator that just returns
 random seeds.

Engine/Control/RTRT.cc

 Using the UniformRandomGenerator by default (mimics old behavior)

Model/Primitives/Parallelogram.cc

 Updating Parallelogram to use the SampleGenerator instead of RNG
 directly.


Modified: trunk/Engine/Control/RTRT.cc
==============================================================================
--- trunk/Engine/Control/RTRT.cc        (original)
+++ trunk/Engine/Control/RTRT.cc        Mon Oct 22 20:00:32 2007
@@ -80,6 +80,7 @@
 // allow us to discuss the interface (so that I don't have to do all
 // the Factory work just yet)
 #include <Engine/SampleGenerators/ConstantSampleGenerator.h>
+#include <Engine/SampleGenerators/UniformRandomGenerator.h>
 
 #include <queue>
 
@@ -171,7 +172,8 @@
   create_rng = Callback::create(&MT_RNG::create);
 #endif
 
-  currentSampleGenerator = new ConstantSampleGenerator(0.f);
+  //currentSampleGenerator = new ConstantSampleGenerator(0.f);
+  currentSampleGenerator = new UniformRandomGenerator();
 }
 
 RTRT::~RTRT()

Modified: trunk/Engine/SampleGenerators/CMakeLists.txt
==============================================================================
--- trunk/Engine/SampleGenerators/CMakeLists.txt        (original)
+++ trunk/Engine/SampleGenerators/CMakeLists.txt        Mon Oct 22 20:00:32 
2007
@@ -1,4 +1,6 @@
 SET (Manta_SampleGenerators_SRCS
      SampleGenerators/ConstantSampleGenerator.h
      SampleGenerators/ConstantSampleGenerator.cc
+     SampleGenerators/UniformRandomGenerator.h
+     SampleGenerators/UniformRandomGenerator.cc
      )

Modified: trunk/Engine/SampleGenerators/ConstantSampleGenerator.cc
==============================================================================
--- trunk/Engine/SampleGenerators/ConstantSampleGenerator.cc    (original)
+++ trunk/Engine/SampleGenerators/ConstantSampleGenerator.cc    Mon Oct 22 
20:00:32 2007
@@ -21,7 +21,7 @@
 void ConstantSampleGenerator::setupPacket(const RenderContext& context, 
RayPacket& rays) {
 }
 
-void ConstantSampleGenerator::nextSeeds(Packet<float>& results, RayPacket& 
rays) {
+void ConstantSampleGenerator::nextSeeds(const RenderContext& context, 
Packet<float>& results, RayPacket& rays) {
 #ifdef MANTA_SSE
   int b = (rays.rayBegin + 3) & (~3);
   int e = (rays.rayEnd) & (~3);
@@ -49,7 +49,7 @@
 #endif // MANTA_SSE
 }
 
-void ConstantSampleGenerator::nextSeeds(Packet<double>& results, RayPacket& 
rays) {
+void ConstantSampleGenerator::nextSeeds(const RenderContext& context, 
Packet<double>& results, RayPacket& rays) {
   for (int i = rays.begin(); i < rays.end(); i++) {
     results.set(i, sample_value);
   }

Modified: trunk/Engine/SampleGenerators/ConstantSampleGenerator.h
==============================================================================
--- trunk/Engine/SampleGenerators/ConstantSampleGenerator.h     (original)
+++ trunk/Engine/SampleGenerators/ConstantSampleGenerator.h     Mon Oct 22 
20:00:32 2007
@@ -15,8 +15,8 @@
 
     virtual void setupPacket(const RenderContext& context, RayPacket& rays);
 
-    virtual void nextSeeds(Packet<float>& results, RayPacket& rays);
-    virtual void nextSeeds(Packet<double>& results, RayPacket& rays);
+    virtual void nextSeeds(const RenderContext& context, Packet<float>& 
results, RayPacket& rays);
+    virtual void nextSeeds(const RenderContext& context, Packet<double>& 
results, RayPacket& rays);
 
     float sample_value;
   };

Added: trunk/Engine/SampleGenerators/UniformRandomGenerator.cc
==============================================================================
--- (empty file)
+++ trunk/Engine/SampleGenerators/UniformRandomGenerator.cc     Mon Oct 22 
20:00:32 2007
@@ -0,0 +1,34 @@
+#include <Engine/SampleGenerators/UniformRandomGenerator.h>
+#include <Interface/Context.h>
+#include <Interface/RandomNumberGenerator.h>
+#include <Interface/RayPacket.h>
+
+
+
+using namespace Manta;
+
+UniformRandomGenerator::UniformRandomGenerator() {
+}
+
+UniformRandomGenerator::~UniformRandomGenerator() {
+}
+
+void UniformRandomGenerator::setupBegin(const SetupContext&, int 
numChannels) {
+}
+
+void UniformRandomGenerator::setupDisplayChannel(SetupContext& context) {
+}
+
+void UniformRandomGenerator::setupFrame(const RenderContext& context) {
+}
+
+void UniformRandomGenerator::setupPacket(const RenderContext& context, 
RayPacket& rays) {
+}
+
+void UniformRandomGenerator::nextSeeds(const RenderContext& context, 
Packet<float>& results, RayPacket& rays) {
+  context.rng->nextPacket(results, rays);
+}
+
+void UniformRandomGenerator::nextSeeds(const RenderContext& context, 
Packet<double>& results, RayPacket& rays) {
+  context.rng->nextPacket(results, rays);
+}

Added: trunk/Engine/SampleGenerators/UniformRandomGenerator.h
==============================================================================
--- (empty file)
+++ trunk/Engine/SampleGenerators/UniformRandomGenerator.h      Mon Oct 22 
20:00:32 2007
@@ -0,0 +1,23 @@
+#ifndef MANTA_ENGINE_SAMPLEGENERATORS_UNIFORM_RANDOM_GENERATOR_H_
+#define MANTA_ENGINE_SAMPLEGENERATORS_UNIFORM_RANDOM_GENERATOR_H_
+
+#include <Interface/SampleGenerator.h>
+
+namespace Manta {
+  class UniformRandomGenerator : public SampleGenerator {
+  public:
+    UniformRandomGenerator();
+    ~UniformRandomGenerator();
+
+    virtual void setupBegin(const SetupContext&, int numChannels);
+    virtual void setupDisplayChannel(SetupContext& context);
+    virtual void setupFrame(const RenderContext& context);
+
+    virtual void setupPacket(const RenderContext& context, RayPacket& rays);
+
+    virtual void nextSeeds(const RenderContext& context, Packet<float>& 
results, RayPacket& rays);
+    virtual void nextSeeds(const RenderContext& context, Packet<double>& 
results, RayPacket& rays);
+  };
+} // end namespace Manta
+
+#endif // MANTA_ENGINE_SAMPLEGENERATORS_UNIFORM_RANDOM_GENERATOR_H_

Modified: trunk/Interface/SampleGenerator.h
==============================================================================
--- trunk/Interface/SampleGenerator.h   (original)
+++ trunk/Interface/SampleGenerator.h   Mon Oct 22 20:00:32 2007
@@ -32,8 +32,8 @@
     virtual void setupPacket(const RenderContext& context, RayPacket& rays) 
= 0;
 
     // Grab a set of random seeds (float and double versions)
-    virtual void nextSeeds(Packet<float>& results, RayPacket& rays) = 0;
-    virtual void nextSeeds(Packet<double>& results, RayPacket& rays) = 0;
+    virtual void nextSeeds(const RenderContext& context, Packet<float>& 
results, RayPacket& rays) = 0;
+    virtual void nextSeeds(const RenderContext& context, Packet<double>& 
results, RayPacket& rays) = 0;
   };
 } // end namespace Manta
 

Modified: trunk/Model/Primitives/Parallelogram.cc
==============================================================================
--- trunk/Model/Primitives/Parallelogram.cc     (original)
+++ trunk/Model/Primitives/Parallelogram.cc     Mon Oct 22 20:00:32 2007
@@ -5,7 +5,7 @@
 #include <MantaSSE.h>
 #include <Core/Math/SSEDefs.h>
 #include <Interface/Context.h>
-#include <Interface/RandomNumberGenerator.h>
+#include <Interface/SampleGenerator.h>
 
 using namespace Manta;
 using SCIRun::Abs;
@@ -568,8 +568,8 @@
   // TODO(boulos): Change this code to only do work for active rays
   Packet<Real> r1;
   Packet<Real> r2;
-  context.rng->nextPacket(r1, rays);
-  context.rng->nextPacket(r2, rays);
+  context.sample_generator->nextSeeds(context, r1, rays);
+  context.sample_generator->nextSeeds(context, r2, rays);
 
 #ifdef MANTA_SSE
   for (int i = 0; i < Packet<Vector>::MaxSize; i+=4) {




  • [Manta] r1788 - in trunk: Engine/Control Engine/SampleGenerators Interface Model/Primitives, boulos, 10/22/2007

Archive powered by MHonArc 2.6.16.

Top of page