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