Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r965 - in trunk/Engine: Control ImageTraversers Renderers


Chronological Thread 
  • From: boulos@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r965 - in trunk/Engine: Control ImageTraversers Renderers
  • Date: Thu, 2 Mar 2006 17:33:36 -0700 (MST)

Author: boulos
Date: Thu Mar  2 17:33:35 2006
New Revision: 965

Added:
   trunk/Engine/ImageTraversers/HardTile.cc
   trunk/Engine/ImageTraversers/HardTile.h
   trunk/Engine/Renderers/RayGen.cc
   trunk/Engine/Renderers/RayGen.h
Modified:
   trunk/Engine/Control/RTRT_register.cc
   trunk/Engine/ImageTraversers/CMakeLists.txt
   trunk/Engine/Renderers/CMakeLists.txt
Log:
Committing some braindead image traversers
and renderers to test performance.


Modified: trunk/Engine/Control/RTRT_register.cc
==============================================================================
--- trunk/Engine/Control/RTRT_register.cc       (original)
+++ trunk/Engine/Control/RTRT_register.cc       Thu Mar  2 17:33:35 2006
@@ -10,6 +10,7 @@
 #include <Engine/ImageTraversers/DissolveImageTraverser.h>
 #include <Engine/ImageTraversers/DissolveTiledImageTraverser.h>
 #include <Engine/ImageTraversers/FilteredImageTraverser.h>
+#include <Engine/ImageTraversers/HardTile.h>
 #include <Engine/LoadBalancers/CyclicLoadBalancer.h>
 #include <Engine/LoadBalancers/SimpleLoadBalancer.h>
 #include <Engine/LoadBalancers/WQLoadBalancer.h>
@@ -18,6 +19,7 @@
 #include <Engine/PixelSamplers/JitterSampler.h>
 #include <Engine/Renderers/Moire.h>
 #include <Engine/Renderers/NullRenderer.h>
+#include <Engine/Renderers/RayGen.h>
 #include <Engine/Renderers/Raytracer.h>
 #include <Engine/Shadows/BeamShadows.h>
 #include <Engine/Shadows/HardShadows.h>
@@ -50,6 +52,7 @@
     // Register image traversers
     engine->registerComponent("null", &NullImageTraverser::create);
     engine->registerComponent("tiled", &TiledImageTraverser::create);
+    engine->registerComponent("hard", &HardTile::create);
     engine->registerComponent("dissolve", &DissolveImageTraverser::create);
     engine->registerComponent("dissolvetiled", 
&DissolveTiledImageTraverser::create);
     engine->registerComponent("filtered",&FilteredImageTraverser::create);
@@ -59,9 +62,9 @@
     engine->registerComponent("rgba8", &SimpleImage<RGBA8Pixel>::create);
     engine->registerComponent("rgb8", &SimpleImage<RGB8Pixel>::create);
     engine->registerComponent("rgbafloat",
-                           &SimpleImage<RGBAfloatPixel>::create);
+                            &SimpleImage<RGBAfloatPixel>::create);
     engine->registerComponent("rgbfloat",
-                           &SimpleImage<RGBfloatPixel>::create);
+                            &SimpleImage<RGBfloatPixel>::create);
 
     // Register load balancers
     engine->registerComponent("cyclic", &CyclicLoadBalancer::create);
@@ -75,6 +78,7 @@
 
     // Register renderers
     engine->registerComponent("null", &NullRenderer::create);
+    engine->registerComponent("raygen", &RayGen::create);
     engine->registerComponent("moire", &Moire::create);
     engine->registerComponent("raytracer", &Raytracer::create);
 

Modified: trunk/Engine/ImageTraversers/CMakeLists.txt
==============================================================================
--- trunk/Engine/ImageTraversers/CMakeLists.txt (original)
+++ trunk/Engine/ImageTraversers/CMakeLists.txt Thu Mar  2 17:33:35 2006
@@ -10,4 +10,6 @@
      ImageTraversers/NullImageTraverser.h
      ImageTraversers/TiledImageTraverser.cc
      ImageTraversers/TiledImageTraverser.h
+     ImageTraversers/HardTile.h
+     ImageTraversers/HardTile.cc
      )

Added: trunk/Engine/ImageTraversers/HardTile.cc
==============================================================================
--- (empty file)
+++ trunk/Engine/ImageTraversers/HardTile.cc    Thu Mar  2 17:33:35 2006
@@ -0,0 +1,145 @@
+
+/*
+  For more information, please see: http://software.sci.utah.edu
+
+  The MIT License
+
+  Copyright (c) 2005
+  Scientific Computing and Imaging Institute, University of Utah
+
+  License for the specific language governing rights and limitations under
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
+*/
+
+#include <Engine/ImageTraversers/HardTile.h>
+#include <Core/Exceptions/IllegalArgument.h>
+#include <Core/Util/Args.h>
+#include <Interface/Context.h>
+#include <Interface/Fragment.h>
+#include <Interface/Image.h>
+#include <Interface/LoadBalancer.h>
+#include <Interface/PixelSampler.h>
+#include <Core/Thread/Mutex.h>
+#include <Core/Util/NotFinished.h>
+
+using namespace Manta;
+
+ImageTraverser* HardTile::create(const vector<string>& args)
+{
+  return new HardTile(args);
+}
+
+HardTile::HardTile(const vector<string>& args)
+{
+   xtilesize = 64;
+   ytilesize = 64;
+  int argc = static_cast<int>(args.size());
+  for(int i = 0; i<argc;i++){
+    string arg = args[i];
+    if(arg == "-tilesize"){
+      if(!getResolutionArg(i, args, xtilesize, ytilesize))
+        throw IllegalArgument("HardTile -tilesize", i, args);
+    } else {
+      throw IllegalArgument("HardTile", i, args);
+    }
+  }
+}
+
+HardTile::~HardTile()
+{
+}
+
+void HardTile::setupBegin(SetupContext& context, int numChannels)
+{
+  context.loadBalancer->setupBegin(context, numChannels);
+  context.pixelSampler->setupBegin(context, numChannels);
+}
+
+void HardTile::setupDisplayChannel(SetupContext& context)
+{
+  // Determine the resolution.
+  bool stereo;
+  int xres, yres;
+  context.getResolution(stereo, xres, yres);
+
+  // Determine how many tiles are needed.
+  xtiles = (xres + xtilesize-1)/xtilesize;
+  ytiles = (yres + ytilesize-1)/ytilesize;
+
+  // Tell the load balancer how much work to assign.
+  int numAssignments = xtiles * ytiles;
+  context.loadBalancer->setupDisplayChannel(context, numAssignments);
+
+  // Continue setting up the rendering stack.
+  context.pixelSampler->setupDisplayChannel(context);
+}
+
+void HardTile::setupFrame(const RenderContext& context)
+{
+  context.loadBalancer->setupFrame(context);
+  context.pixelSampler->setupFrame(context);
+}
+
+void HardTile::renderImage(const RenderContext& context, Image* image)
+{
+
+  // Determine number of tiles.
+  bool stereo;
+  int xres, yres;
+  image->getResolution(stereo, xres, yres);
+
+  int s,e;
+  while(context.loadBalancer->getNextAssignment(context, s, e)){
+
+    for(int assignment = s; assignment < e; assignment++){
+
+      int xtile = assignment/ytiles;
+      int ytile = assignment%ytiles;
+      int xstart = xtile * xtilesize;
+      int xend = (xtile+1) * xtilesize;
+
+      if(xend > xres)
+        xend = xres;
+
+      int ystart = ytile * ytilesize;
+      int yend = (ytile+1) * ytilesize;
+
+      if(yend > yres)
+        yend = yres;
+
+
+      for(int y = ystart; y<yend; y++)
+      {
+        for(int x = xstart; x<xend; x+= Fragment::MaxSize)
+        {
+          // Create a Fragment that is consecutive in X pixels
+          Fragment frag(0, x, xend, y);
+          //context.pixelSampler->renderFragment(context, frag);
+          //image->set(frag);
+        }
+      }
+
+    }
+  }
+  // This can potentially happen before the other procesors are finished
+  // rendering, but that is okay because it won't get displayed until
+  // everyone enters the barrier anyway
+  if(context.proc == 0)
+    image->setValid(true);
+}

Added: trunk/Engine/ImageTraversers/HardTile.h
==============================================================================
--- (empty file)
+++ trunk/Engine/ImageTraversers/HardTile.h     Thu Mar  2 17:33:35 2006
@@ -0,0 +1,63 @@
+
+#ifndef Manta_Engine_HardTile_h
+#define Manta_Engine_HardTile_h
+
+/*
+  For more information, please see: http://software.sci.utah.edu
+
+  The MIT License
+
+  Copyright (c) 2005
+  Scientific Computing and Imaging Institute, University of Utah
+
+  License for the specific language governing rights and limitations under
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
+*/
+
+#include <Interface/ImageTraverser.h>
+#include <sgi_stl_warnings_off.h>
+#include <string>
+#include <vector>
+#include <sgi_stl_warnings_on.h>
+
+namespace Manta {
+  using namespace std;
+  class HardTile : public ImageTraverser {
+  public:
+    HardTile(const vector<string>& args);
+    virtual ~HardTile();
+    virtual void setupBegin(SetupContext&, int numChannels);
+    virtual void setupDisplayChannel(SetupContext&);
+    virtual void setupFrame(const RenderContext& context);
+    virtual void renderImage(const RenderContext& context, Image* image);
+
+    static ImageTraverser* create(const vector<string>& args);
+  private:
+    HardTile(const HardTile&);
+    HardTile& operator=(const HardTile&);
+
+    int xtilesize;
+    int ytilesize;
+
+    int xtiles;
+    int ytiles;
+  };
+}
+
+#endif

Modified: trunk/Engine/Renderers/CMakeLists.txt
==============================================================================
--- trunk/Engine/Renderers/CMakeLists.txt       (original)
+++ trunk/Engine/Renderers/CMakeLists.txt       Thu Mar  2 17:33:35 2006
@@ -4,6 +4,8 @@
      Renderers/Moire.cc
      Renderers/NullRenderer.h
      Renderers/NullRenderer.cc
+     Renderers/RayGen.h
+     Renderers/RayGen.cc
      Renderers/Raytracer.h
      Renderers/Raytracer.cc
      )

Added: trunk/Engine/Renderers/RayGen.cc
==============================================================================
--- (empty file)
+++ trunk/Engine/Renderers/RayGen.cc    Thu Mar  2 17:33:35 2006
@@ -0,0 +1,44 @@
+
+#include <Engine/Renderers/RayGen.h>
+#include <Core/Color/RGBColor.h>
+#include <Core/Exceptions/IllegalArgument.h>
+#include <Core/Util/Args.h>
+#include <Interface/Context.h>
+#include <Interface/RayPacket.h>
+#include <Core/Util/Assert.h>
+
+using namespace Manta;
+
+Renderer* RayGen::create(const vector<string>& args)
+{
+  return new RayGen(args);
+}
+
+RayGen::RayGen(const vector<string>&)
+{
+}
+
+RayGen::~RayGen()
+{
+}
+
+void RayGen::setupBegin(const SetupContext&, int)
+{
+}
+
+void RayGen::setupDisplayChannel(SetupContext&)
+{
+}
+
+void RayGen::setupFrame(const RenderContext&)
+{
+}
+
+void RayGen::traceEyeRays(const RenderContext&, RayPacket& rays)
+{
+
+}
+
+void RayGen::traceRays(const RenderContext&, RayPacket& rays)
+{
+}

Added: trunk/Engine/Renderers/RayGen.h
==============================================================================
--- (empty file)
+++ trunk/Engine/Renderers/RayGen.h     Thu Mar  2 17:33:35 2006
@@ -0,0 +1,32 @@
+
+#ifndef Manta_Engine_RayGen_h
+#define Manta_Engine_RayGen_h
+
+#include <Interface/Renderer.h>
+#include <Core/Color/Color.h>
+#include <sgi_stl_warnings_off.h>
+#include <string>
+#include <vector>
+#include <sgi_stl_warnings_on.h>
+
+namespace Manta {
+  using namespace std;
+  class RayGen : public Renderer {
+  public:
+    RayGen(const vector<string>& args);
+    virtual ~RayGen();
+    virtual void setupBegin(const SetupContext&, int numChannels);
+    virtual void setupDisplayChannel(SetupContext&);
+    virtual void setupFrame(const RenderContext& context);
+
+    virtual void traceEyeRays(const RenderContext&, RayPacket& rays);
+    virtual void traceRays(const RenderContext&, RayPacket& rays);
+
+    static Renderer* create(const vector<string>& args);
+  private:
+    RayGen(const RayGen&);
+    RayGen& operator=(const RayGen&);
+  };
+}
+
+#endif




  • [MANTA] r965 - in trunk/Engine: Control ImageTraversers Renderers, boulos, 03/02/2006

Archive powered by MHonArc 2.6.16.

Top of page