Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1045 - in trunk: . Engine/Control Engine/ImageTraversers Engine/PixelSamplers Engine/Renderers Interface Model/Instances Model/Materials Model/MiscObjects


Chronological Thread 
  • From: sparker@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1045 - in trunk: . Engine/Control Engine/ImageTraversers Engine/PixelSamplers Engine/Renderers Interface Model/Instances Model/Materials Model/MiscObjects
  • Date: Fri, 5 May 2006 13:47:00 -0600 (MDT)

Author: sparker
Date: Fri May  5 13:46:55 2006
New Revision: 1045

Modified:
   trunk/CMakeLists.txt
   trunk/Engine/Control/RTRT.cc
   trunk/Engine/ImageTraversers/DissolveImageTraverser.cc
   trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
   trunk/Engine/ImageTraversers/TiledImageTraverser.cc
   trunk/Engine/ImageTraversers/TiledImageTraverser.h
   trunk/Engine/PixelSamplers/FastSampler.cc
   trunk/Engine/PixelSamplers/JitterSampler.cc
   trunk/Engine/PixelSamplers/SingleSampler.cc
   trunk/Engine/PixelSamplers/SingleSampler.h
   trunk/Engine/Renderers/NullRenderer.cc
   trunk/Engine/Renderers/RayGen.cc
   trunk/Engine/Renderers/RayGen.h
   trunk/Interface/Context.h
   trunk/Interface/Fragment.h
   trunk/Interface/RayPacket.h
   trunk/Model/Instances/Instance.cc
   trunk/Model/Instances/InstanceRST.cc
   trunk/Model/Instances/InstanceRT.cc
   trunk/Model/Instances/InstanceST.cc
   trunk/Model/Instances/InstanceT.cc
   trunk/Model/Materials/AmbientOcclusion.cc
   trunk/Model/Materials/Dielectric.cc
   trunk/Model/Materials/Lambertian.cc
   trunk/Model/Materials/MetalMaterial.cc
   trunk/Model/Materials/Phong.cc
   trunk/Model/Materials/Transparent.cc
   trunk/Model/MiscObjects/CuttingPlane.cc
   trunk/Model/MiscObjects/Difference.cc
   trunk/Model/MiscObjects/Intersection.cc
Log:
Lay groundwork for optimizations based on the shape of the raypacket
Misc. performance improvements and cleanups


Modified: trunk/CMakeLists.txt
==============================================================================
--- trunk/CMakeLists.txt        (original)
+++ trunk/CMakeLists.txt        Fri May  5 13:46:55 2006
@@ -162,8 +162,8 @@
 ######################################################################
 # Check for Mac OS
 IF (APPLE)
-  FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g 
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock 
-falign-loops=16 -falign-jumps=16 -falign-functions=16 
-falign-jumps-max-skip=15 -falign-loops-max-skip=15 -ffast-math 
-freorder-blocks -mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G5 -mcpu=G5 
-mpowerpc64 -faltivec -mabi=altivec -mpowerpc-gfxopt -malign-natural" STRING 
"Optimized Flags")
-  #FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g 
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock -ffast-math 
-freorder-blocks -march=prescott -mtune=prescott -msse -msse2 -msse3 
-mfpmath=sse -malign-double" STRING "Optimized Flags")
+  #FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g 
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock 
-falign-loops=16 -falign-jumps=16 -falign-functions=16 
-falign-jumps-max-skip=15 -falign-loops-max-skip=15 -ffast-math 
-freorder-blocks -mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G5 -mcpu=G5 
-mpowerpc64 -faltivec -mabi=altivec -mpowerpc-gfxopt -malign-natural" STRING 
"Optimized Flags")
+  FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g 
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock -ffast-math 
-freorder-blocks -march=prescott -mtune=prescott -msse -msse2 -msse3 
-mfpmath=sse -malign-double" STRING "Optimized Flags")
 ENDIF (APPLE)
 
 ##################################################################

Modified: trunk/Engine/Control/RTRT.cc
==============================================================================
--- trunk/Engine/Control/RTRT.cc        (original)
+++ trunk/Engine/Control/RTRT.cc        Fri May  5 13:46:55 2006
@@ -429,7 +429,7 @@
         long displayFrame = 
(renderFrameState.frameNumber-1)%channel->pipelineDepth;
         Image* image = channel->images[displayFrame];
         if(image && image->isValid()){
-          DisplayContext myContext(proc, workersAnimAndImage);
+          DisplayContext myContext(proc, workersAnimAndImage, displayFrame, 
channel->pipelineDepth);
           channel->display->displayImage(myContext, image);
         }
       }

Modified: trunk/Engine/ImageTraversers/DissolveImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/DissolveImageTraverser.cc      (original)
+++ trunk/Engine/ImageTraversers/DissolveImageTraverser.cc      Fri May  5 
13:46:55 2006
@@ -150,8 +150,7 @@
   unsigned int next_pixel = 
per_thread_data[context.proc].next_pixel[context.channelIndex];
   ChannelContext& cdata = channel_data[context.channelIndex];
 
-  Fragment frag;
-  frag.setAllFlags(Fragment::ConstantEye);
+  Fragment frag(Fragment::UnknownShape, Fragment::ConstantEye);
   unsigned int pixel = 0;
   // We need to render the (0,0) pixel every once in a while, so see
   // if we are the last processor and if we've gone through so many

Modified: trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc Fri May  5 
13:46:55 2006
@@ -157,8 +157,7 @@
 
   unsigned int next_tile = cdata.next_tile;
 
-  Fragment frag;
-  frag.setAllFlags(Fragment::ConstantEye);
+  Fragment frag(Fragment::UnknownShape, Fragment::ConstantEye);
   
   // Loop over all the assignments.  tc stands for tile count.
   for(unsigned int tc = 0; tc < cdata.tiles_per_pass; ++tc) {

Modified: trunk/Engine/ImageTraversers/TiledImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/TiledImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/TiledImageTraverser.cc Fri May  5 13:46:55 
2006
@@ -61,10 +61,6 @@
       throw IllegalArgument("TiledImageTraverser", i, args);
     }
   }
-#if MANTA_SSE
-  vec_cascade = _mm_set_epi32(3, 2, 1, 0);
-  vec_4 = _mm_set1_epi32(4);
-#endif
 }
 
 TiledImageTraverser::~TiledImageTraverser()
@@ -130,8 +126,12 @@
       if(yend > yres)
         yend = yres;
       
+#ifdef MANTA_SSE
+      __m128i vec_4 = _mm_set1_epi32(4);
+      __m128i vec_cascade = _mm_set_epi32(3, 2, 1, 0);
+#endif
       // Create a Fragment that is consecutive in X pixels
-      Fragment frag(Fragment::ConsecutiveX|Fragment::ConstantEye);
+      Fragment frag(Fragment::LineShape, 
Fragment::ConsecutiveX|Fragment::ConstantEye);
       int fsize = SCIRun::Min(Fragment::MaxSize, xend-xstart);
       for(int eye = 0; eye < numEyes; eye++){
 #ifdef MANTA_SSE

Modified: trunk/Engine/ImageTraversers/TiledImageTraverser.h
==============================================================================
--- trunk/Engine/ImageTraversers/TiledImageTraverser.h  (original)
+++ trunk/Engine/ImageTraversers/TiledImageTraverser.h  Fri May  5 13:46:55 
2006
@@ -53,11 +53,6 @@
     TiledImageTraverser(const TiledImageTraverser&);
     TiledImageTraverser& operator=(const TiledImageTraverser&);
 
-#ifdef MANTA_SSE
-    __m128i vec_cascade;
-    __m128i vec_4;
-#endif
-
     int xtilesize;
     int ytilesize;
 

Modified: trunk/Engine/PixelSamplers/FastSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/FastSampler.cc   (original)
+++ trunk/Engine/PixelSamplers/FastSampler.cc   Fri May  5 13:46:55 2006
@@ -64,7 +64,7 @@
     // Create a ray packet
     int depth = 0;
     RayPacketData raydata;
-    RayPacket rays(raydata, 0, size, depth, flags);
+    RayPacket rays(raydata, RayPacket::UnknownShape, 0, size, depth, flags);
 
     // Check to see if the fragment is consecutive in x.
     if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye) == 
Fragment::ConsecutiveX|Fragment::ConstantEye){

Modified: trunk/Engine/PixelSamplers/JitterSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/JitterSampler.cc (original)
+++ trunk/Engine/PixelSamplers/JitterSampler.cc Fri May  5 13:46:55 2006
@@ -145,7 +145,7 @@
 
   int depth = 0;
   RayPacketData raydata;
-  RayPacket rays(raydata, 0, RayPacket::MaxSize, depth, flags);
+  RayPacket rays(raydata, RayPacket::UnknownShape, 0, RayPacket::MaxSize, 
depth, flags);
 
   Real inx = (Real)1/nx;
   Real iny = (Real)1/ny;

Modified: trunk/Engine/PixelSamplers/SingleSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/SingleSampler.cc (original)
+++ trunk/Engine/PixelSamplers/SingleSampler.cc Fri May  5 13:46:55 2006
@@ -38,14 +38,6 @@
   ci.yscale = ci.xscale;
   ci.xoffset = (-xres/(Real)2+(Real)0.5)*ci.xscale; // Offset to pixel center
   ci.yoffset = (-yres/(Real)2+(Real)0.5)*ci.yscale;
-#if MANTA_SSE
-  ci.vec_xscale = _mm_set1_ps(ci.xscale);
-  ci.vec_xscale4 = _mm_set1_ps(ci.xscale*4);
-  ci.vec_xscale_cascade = _mm_set_ps(ci.xscale*3, ci.xscale*2, ci.xscale, 0);
-  ci.vec_yscale = _mm_set1_ps(ci.yscale);
-  ci.vec_xoffset = _mm_set1_ps(ci.xoffset);
-  ci.vec_yoffset = _mm_set1_ps(ci.yoffset);
-#endif
   context.renderer->setupDisplayChannel(context);
 }
 
@@ -73,7 +65,7 @@
     // Create a ray packet
     int depth = 0;
     RayPacketData raydata;
-    RayPacket rays(raydata, 0, size, depth, flags);
+    RayPacket rays(raydata, RayPacket::UnknownShape, 0, size, depth, flags);
 
     // Check to see if the fragment is consecutive in x.
     if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye) == 
Fragment::ConsecutiveX|Fragment::ConstantEye){
@@ -86,16 +78,18 @@
       int eye = fragment.getWhichEye(b);
       
 #if MANTA_SSE
-      __m128 vec_px = _mm_add_ps(_mm_set1_ps(px), ci.vec_xscale_cascade);
+      __m128 vec_xscale_cascade = _mm_set_ps(ci.xscale*3, ci.xscale*2, 
ci.xscale, 0);
+      __m128 vec_px = _mm_add_ps(_mm_set1_ps(px), vec_xscale_cascade);
       __m128 vec_py = _mm_set1_ps(py);
       __m128i vec_eye = _mm_set1_epi32(eye);
       RayPacketData* data = rays.data;
       int e = size&(~3);
+      __m128 vec_xscale4 = _mm_set1_ps(ci.xscale*4);
       for(int i=0;i<e;i+=4){
         _mm_store_si128((__m128i*)&data->whichEye[f+i], vec_eye);
         _mm_store_ps(&data->image[0][f+i], vec_px);
         _mm_store_ps(&data->image[1][f+i], vec_py);
-        vec_px = _mm_add_ps(vec_px, ci.vec_xscale4);
+        vec_px = _mm_add_ps(vec_px, vec_xscale4);
       }
 #else
       int e = 0;
@@ -111,12 +105,16 @@
 #if MANTA_SSE
       RayPacketData* data = rays.data;
       int e = size&(~3);
+      __m128 vec_xoffset = _mm_set1_ps(ci.xoffset);
+      __m128 vec_yoffset = _mm_set1_ps(ci.yoffset);
+      __m128 vec_xscale = _mm_set1_ps(ci.xscale);
+      __m128 vec_yscale = _mm_set1_ps(ci.yscale);
       for(int i=0;i<e;i+=4) {
         _mm_store_si128((__m128i*)&data->whichEye[f+i], 
_mm_load_si128((__m128i*)&fragment.whichEye[f+i]));
         __m128 fx = 
_mm_cvtepi32_ps(_mm_load_si128((__m128i*)&fragment.pixel[0][f+i]));
-        _mm_store_ps(&data->image[0][f+i], _mm_add_ps(_mm_mul_ps(fx, 
ci.vec_xscale), ci.vec_xoffset));
+        _mm_store_ps(&data->image[0][f+i], _mm_add_ps(_mm_mul_ps(fx, 
vec_xscale), vec_xoffset));
         __m128 fy = 
_mm_cvtepi32_ps(_mm_load_si128((__m128i*)&fragment.pixel[1][f+i]));
-        _mm_store_ps(&data->image[1][f+i], _mm_add_ps(_mm_mul_ps(fy, 
ci.vec_yscale), ci.vec_yoffset));
+        _mm_store_ps(&data->image[1][f+i], _mm_add_ps(_mm_mul_ps(fy, 
vec_yscale), vec_yoffset));
       }
 #else
       int e = 0;

Modified: trunk/Engine/PixelSamplers/SingleSampler.h
==============================================================================
--- trunk/Engine/PixelSamplers/SingleSampler.h  (original)
+++ trunk/Engine/PixelSamplers/SingleSampler.h  Fri May  5 13:46:55 2006
@@ -4,8 +4,6 @@
 
 #include <MantaTypes.h>
 #include <Interface/PixelSampler.h>
-#include <Core/Util/Align.h>
-#include <MantaSSE.h>
 #include <sgi_stl_warnings_off.h>
 #include <string>
 #include <vector>
@@ -28,15 +26,7 @@
     SingleSampler(const SingleSampler&);
     SingleSampler& operator=(const SingleSampler&);
 
-    struct MANTA_ALIGN(16) ChannelInfo {
-#ifdef MANTA_SSE
-      __m128 vec_xscale;
-      __m128 vec_xscale4;
-      __m128 vec_xscale_cascade;
-      __m128 vec_xoffset;
-      __m128 vec_yscale;
-      __m128 vec_yoffset;
-#endif
+    struct ChannelInfo {
       Real xscale;
       Real xoffset;
       Real yscale;

Modified: trunk/Engine/Renderers/NullRenderer.cc
==============================================================================
--- trunk/Engine/Renderers/NullRenderer.cc      (original)
+++ trunk/Engine/Renderers/NullRenderer.cc      Fri May  5 13:46:55 2006
@@ -6,6 +6,7 @@
 #include <Interface/Context.h>
 #include <Interface/RayPacket.h>
 #include <Core/Util/Assert.h>
+#include <MantaSSE.h>
 
 using namespace Manta;
 
@@ -48,4 +49,38 @@
   for(int i=rays.begin();i<rays.end();i++){
     rays.setColor(i, color);
   }
+#ifdef MANTA_SSE
+  int b = (rays.rayBegin + 3) & (~3);
+  int e = rays.rayEnd & (~3);
+  RayPacketData* data = rays.data;
+  if(b == e){
+    for(int i=rays.begin();i<rays.end();i++){
+      rays.setColor(i, color);
+    }
+  } else {
+    int i = rays.rayBegin;
+    for(;i<b;i++){
+      data->color[0][i] = color[0];
+      data->color[1][i] = color[1];
+      data->color[2][i] = color[2];
+    }
+    __m128 vec_red = _mm_set1_ps(color[0]);
+    __m128 vec_green = _mm_set1_ps(color[1]);
+    __m128 vec_blue = _mm_set1_ps(color[2]);
+    for(;i<e;i+=4){
+      _mm_store_ps(&data->color[0][i], vec_red);
+      _mm_store_ps(&data->color[1][i], vec_green);
+      _mm_store_ps(&data->color[2][i], vec_blue);
+    }
+    for(;i<rays.rayEnd;i++){
+      data->color[0][i] = color[0];
+      data->color[1][i] = color[1];
+      data->color[2][i] = color[2];
+    }
+  }
+#else    
+  for(int i=rays.begin();i<rays.end();i++){
+    rays.setColor(i, color);
+  }
+#endif
 }

Modified: trunk/Engine/Renderers/RayGen.cc
==============================================================================
--- trunk/Engine/Renderers/RayGen.cc    (original)
+++ trunk/Engine/Renderers/RayGen.cc    Fri May  5 13:46:55 2006
@@ -10,7 +10,7 @@
 #include <Interface/Material.h>
 #include <Interface/Object.h>
 #include <Interface/Scene.h>
-
+#include <MantaSSE.h>
 
 using namespace Manta;
 
@@ -21,6 +21,7 @@
 
 RayGen::RayGen(const vector<string>&)
 {
+  color = Color(RGBColor(0.2, 0.9, 0.5));
 }
 
 RayGen::~RayGen()

Modified: trunk/Engine/Renderers/RayGen.h
==============================================================================
--- trunk/Engine/Renderers/RayGen.h     (original)
+++ trunk/Engine/Renderers/RayGen.h     Fri May  5 13:46:55 2006
@@ -26,6 +26,8 @@
   private:
     RayGen(const RayGen&);
     RayGen& operator=(const RayGen&);
+
+    Color color;
   };
 }
 

Modified: trunk/Interface/Context.h
==============================================================================
--- trunk/Interface/Context.h   (original)
+++ trunk/Interface/Context.h   Fri May  5 13:46:55 2006
@@ -134,12 +134,14 @@
   };
   class DisplayContext {
   public:
-    DisplayContext(int proc, int numProcs)
-      : proc(proc), numProcs(numProcs)
+    DisplayContext(int proc, int numProcs, int frameIndex, int pipelineDepth)
+      : proc(proc), numProcs(numProcs), frameIndex(frameIndex), 
pipelineDepth(pipelineDepth)
     {
     }
     int proc;
     int numProcs;
+    int frameIndex;
+    int pipelineDepth;
   private:
     DisplayContext(const DisplayContext&);
     DisplayContext& operator=(const DisplayContext&);

Modified: trunk/Interface/Fragment.h
==============================================================================
--- trunk/Interface/Fragment.h  (original)
+++ trunk/Interface/Fragment.h  Fri May  5 13:46:55 2006
@@ -37,14 +37,19 @@
 
     static const int ConsecutiveX    = 0x01;  // Implies a constant Y:
     static const int ConstantEye     = 0x02;
+    static const int UniformSpacing  = 0x04;
+
+    enum FragmentShape {
+      LineShape, SquareShape, UnknownShape
+    };
 
     
///////////////////////////////////////////////////////////////////////////
     // Empty Constructor    
-    Fragment()
-      : flags(0), pixelBegin(0), pixelEnd(0)
+    Fragment(FragmentShape shape)
+      : shape(shape), flags(0), pixelBegin(0), pixelEnd(0)
       {}
-    Fragment(int flags)
-      : flags(flags), pixelBegin(0), pixelEnd(0)
+    Fragment(FragmentShape shape, int flags)
+      : shape(shape), flags(flags), pixelBegin(0), pixelEnd(0)
       {}
 
     // Creates a "Scan-line" fragment.
@@ -78,7 +83,8 @@
         pixel[1][i] = y;
         whichEye[i] = eye;
       }
-      flags = ConsecutiveX|ConstantEye;
+      shape = LineShape;
+      flags = ConsecutiveX|ConstantEye|UniformSpacing;
       pixelBegin = 0;
       pixelEnd = nx;
     }
@@ -215,6 +221,7 @@
     MANTA_ALIGN(16) int whichEye[MaxSize];
 
     // Properties of this packet
+    FragmentShape shape;
     int flags;
 
     // Range of Elements that are currently being used.

Modified: trunk/Interface/RayPacket.h
==============================================================================
--- trunk/Interface/RayPacket.h (original)
+++ trunk/Interface/RayPacket.h Fri May  5 13:46:55 2006
@@ -97,13 +97,17 @@
       DebugPacket           = 0x8000
     };
 
+    enum PacketShape {
+      LinePacket, SquarePacket, UnknownShape
+    };
+
     // Create a "toplevel" raypacket.  You need to call resetHits or
     // resetHit for every data element in the ray packet before you
     // start intersecting.  This will initialize minT and hitMatl.
-    RayPacket(RayPacketData& data, int rayBegin, int rayEnd, int depth,
-              int flags)
-      : data(&data), rayBegin(rayBegin), rayEnd(rayEnd), depth(depth),
-        flags(flags)
+    RayPacket(RayPacketData& data, PacketShape shape, int rayBegin, int 
rayEnd,
+              int depth, int flags)
+      : data(&data), shape(shape), rayBegin(rayBegin), rayEnd(rayEnd),
+        depth(depth), flags(flags)
       {
       }
 
@@ -112,6 +116,11 @@
       : data(parent.data), rayBegin(rayBegin), rayEnd(rayEnd),
         depth(parent.depth), flags(parent.flags)
       {
+        shape = parent.shape;
+        if(shape == SquarePacket){
+          // A subset of a square is not necessarily a square
+          shape = UnknownShape;
+        }
       }
 
     ~RayPacket()
@@ -570,6 +579,7 @@
     int rayBegin;
     int rayEnd;
     int depth;
+    PacketShape shape;
     int flags;
   };
 

Modified: trunk/Model/Instances/Instance.cc
==============================================================================
--- trunk/Model/Instances/Instance.cc   (original)
+++ trunk/Model/Instances/Instance.cc   Fri May  5 13:46:55 2006
@@ -76,8 +76,8 @@
 void Instance::intersect(const RenderContext& context, RayPacket& rays) const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
   Real scales[RayPacket::MaxSize];
   Real inv_scales[RayPacket::MaxSize];
 

Modified: trunk/Model/Instances/InstanceRST.cc
==============================================================================
--- trunk/Model/Instances/InstanceRST.cc        (original)
+++ trunk/Model/Instances/InstanceRST.cc        Fri May  5 13:46:55 2006
@@ -90,8 +90,8 @@
 void InstanceRST::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
     Vector o = transform_inv.multiply_point(rays.getOrigin(rays.begin()));

Modified: trunk/Model/Instances/InstanceRT.cc
==============================================================================
--- trunk/Model/Instances/InstanceRT.cc (original)
+++ trunk/Model/Instances/InstanceRT.cc Fri May  5 13:46:55 2006
@@ -91,8 +91,8 @@
 void InstanceRT::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
     Vector o = transform_inv.multiply_point(rays.getOrigin(rays.begin()));

Modified: trunk/Model/Instances/InstanceST.cc
==============================================================================
--- trunk/Model/Instances/InstanceST.cc (original)
+++ trunk/Model/Instances/InstanceST.cc Fri May  5 13:46:55 2006
@@ -67,7 +67,8 @@
 void InstanceST::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.begin(), rays.end(), 
rays.getDepth(), rays.getAllFlags());
+  RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
 
   Real scales[RayPacket::MaxSize];
   Real inv_scales[RayPacket::MaxSize];

Modified: trunk/Model/Instances/InstanceT.cc
==============================================================================
--- trunk/Model/Instances/InstanceT.cc  (original)
+++ trunk/Model/Instances/InstanceT.cc  Fri May  5 13:46:55 2006
@@ -61,8 +61,8 @@
 void InstanceT::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
-                          rays.getAllFlags());
+  RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
     Vector o(rays.getOrigin(rays.begin())-translation);

Modified: trunk/Model/Materials/AmbientOcclusion.cc
==============================================================================
--- trunk/Model/Materials/AmbientOcclusion.cc   (original)
+++ trunk/Model/Materials/AmbientOcclusion.cc   Fri May  5 13:46:55 2006
@@ -89,8 +89,8 @@
       // Should the normalized flag be set?  The normals coming in
       // should already be normalized.
       int flag = RayPacket::NormalizedDirections | RayPacket::ConstantOrigin;
-      RayPacket occlusion_rays(occlusion_data, start, end, rays.getDepth(),
-                               flag);
+      RayPacket occlusion_rays(occlusion_data, RayPacket::UnknownShape,
+                               start, end, rays.getDepth(), flag);
 
       for ( int r = start; r < end; r++ ) {
         Vector trans_dir = (directions[r][0]*U +
@@ -122,7 +122,7 @@
   bool done;
   do {
     int map[RayPacket::MaxSize];
-    RayPacket shadowRays(data, 0, 0, rays.getDepth(), 0);
+    RayPacket shadowRays(data, RayPacket::UnknownShape, 0, 0, 
rays.getDepth(), 0);
     done = context.shadowAlgorithm->computeShadows(context, activeLights,
                                                    rays, map, shadowRays,
                                                    firstTime, stateBuffer);

Modified: trunk/Model/Materials/Dielectric.cc
==============================================================================
--- trunk/Model/Materials/Dielectric.cc (original)
+++ trunk/Model/Materials/Dielectric.cc Fri May  5 13:46:55 2006
@@ -77,8 +77,10 @@
   RayPacketData reflected_data;
   RayPacketData refracted_data;
 
-  RayPacket reflected_rays(reflected_data, 0, 0, rays.getDepth()+1, 
RayPacket::NormalizedDirections);
-  RayPacket refracted_rays(refracted_data, 0, 0, rays.getDepth()+1, 
RayPacket::NormalizedDirections);
+  RayPacket reflected_rays(reflected_data, RayPacket::UnknownShape, 
+                           0, 0, rays.getDepth()+1, 
RayPacket::NormalizedDirections);
+  RayPacket refracted_rays(refracted_data, RayPacket::UnknownShape,
+                           0, 0, rays.getDepth()+1, 
RayPacket::NormalizedDirections);
 
   Color results[RayPacket::MaxSize];
   Color refl_attenuation[RayPacket::MaxSize];

Modified: trunk/Model/Materials/Lambertian.cc
==============================================================================
--- trunk/Model/Materials/Lambertian.cc (original)
+++ trunk/Model/Materials/Lambertian.cc Fri May  5 13:46:55 2006
@@ -51,7 +51,7 @@
   do {
     int map[RayPacket::MaxSize];
     RayPacketData shadowData;
-    RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+    RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0, 
rays.getDepth(), 0);
 
     // Call the shadowalgorithm(sa) to generate shadow rays.  We may not be
     // able to compute all of them, so we pass along a buffer for the sa

Modified: trunk/Model/Materials/MetalMaterial.cc
==============================================================================
--- trunk/Model/Materials/MetalMaterial.cc      (original)
+++ trunk/Model/Materials/MetalMaterial.cc      Fri May  5 13:46:55 2006
@@ -40,8 +40,8 @@
   
     rays.computeHitPositions();
     RayPacketData rdata;
-    RayPacket refl_rays(rdata, rays.begin(), rays.end(), rays.getDepth()+1,
-                        RayPacket::NormalizedDirections);
+    RayPacket refl_rays(rdata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                        rays.getDepth()+1, RayPacket::NormalizedDirections);
     for(int i=rays.begin();i<rays.end();i++) {  
       Vector rayD = rays.getDirection(i);
       Vector normal = rays.getNormal(i);

Modified: trunk/Model/Materials/Phong.cc
==============================================================================
--- trunk/Model/Materials/Phong.cc      (original)
+++ trunk/Model/Materials/Phong.cc      Fri May  5 13:46:55 2006
@@ -111,7 +111,7 @@
   do {
     int map[RayPacket::MaxSize];
     RayPacketData shadowData;
-    RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+    RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0, 
rays.getDepth(), 0);
 
     // Call the shadowalgorithm(sa) to generate shadow rays.  We may not be
     // able to compute all of them, so we pass along a buffer for the sa
@@ -164,8 +164,8 @@
 
     rays.computeHitPositions();
     RayPacketData rdata;
-    RayPacket refl_rays(rdata, rays.begin(), rays.end(), rays.getDepth()+1,
-                        RayPacket::NormalizedDirections);
+    RayPacket refl_rays(rdata, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                        rays.getDepth()+1, RayPacket::NormalizedDirections);
     for(int i=rays.begin();i<rays.end();i++){
       Vector refl_dir = (rays.getDirection(i) -
                          rays.getNormal(i)*(2*Dot(rays.getNormal(i), 
rays.getDirection(i) )));

Modified: trunk/Model/Materials/Transparent.cc
==============================================================================
--- trunk/Model/Materials/Transparent.cc        (original)
+++ trunk/Model/Materials/Transparent.cc        Fri May  5 13:46:55 2006
@@ -82,7 +82,7 @@
   do {
     int map[RayPacket::MaxSize];
     RayPacketData shadowData;
-    RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+    RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0, 
rays.getDepth(), 0);
 
     // Call the shadowalgorithm(sa) to generate shadow rays.  We may not be
     // able to compute all of them, so we pass along a buffer for the sa
@@ -126,7 +126,7 @@
   alpha->mapValues( context, rays, alpha_values );
 
   RayPacketData secondaryData;
-  RayPacket secondaryRays(secondaryData, 0, 0, rays.getDepth(), 0);
+  RayPacket secondaryRays(secondaryData, RayPacket::UnknownShape, 0, 0, 
rays.getDepth(), 0);
   int map[RayPacket::MaxSize];
   
   // Shoot a secondary ray for all 1.0 alpha values.

Modified: trunk/Model/MiscObjects/CuttingPlane.cc
==============================================================================
--- trunk/Model/MiscObjects/CuttingPlane.cc     (original)
+++ trunk/Model/MiscObjects/CuttingPlane.cc     Fri May  5 13:46:55 2006
@@ -42,8 +42,8 @@
 
   // Send a new ray packet with new ray origins.
   RayPacketData new_data;
-  RayPacket     new_rays( new_data, rays.begin(), rays.end(), 
rays.getDepth(),
-                          rays.getAllFlags());
+  RayPacket     new_rays( new_data, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                          rays.getDepth(), rays.getAllFlags());
   
   rays.normalizeDirections();
   rays.computeInverseDirections();

Modified: trunk/Model/MiscObjects/Difference.cc
==============================================================================
--- trunk/Model/MiscObjects/Difference.cc       (original)
+++ trunk/Model/MiscObjects/Difference.cc       Fri May  5 13:46:55 2006
@@ -30,11 +30,11 @@
 void Difference::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata1;
-  RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket object1_rays(raydata1, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                         rays.getDepth(), rays.getAllFlags());
   RayPacketData raydata2;
-  RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket object2_rays(raydata2, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                         rays.getDepth(), rays.getAllFlags());
 
   for(int i = rays.begin();i<rays.end();i++){
     object1_rays.setRay(i, rays.getRay(i));

Modified: trunk/Model/MiscObjects/Intersection.cc
==============================================================================
--- trunk/Model/MiscObjects/Intersection.cc     (original)
+++ trunk/Model/MiscObjects/Intersection.cc     Fri May  5 13:46:55 2006
@@ -33,11 +33,11 @@
 void Intersection::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata1;
-  RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket object1_rays(raydata1, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                         rays.getDepth(), rays.getAllFlags());
   RayPacketData raydata2;
-  RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
-                         rays.getAllFlags());
+  RayPacket object2_rays(raydata2, RayPacket::UnknownShape, rays.begin(), 
rays.end(),
+                         rays.getDepth(), rays.getAllFlags());
 
   for(int i = rays.begin();i<rays.end();i++){
     object1_rays.setRay(i, rays.getRay(i));




  • [MANTA] r1045 - in trunk: . Engine/Control Engine/ImageTraversers Engine/PixelSamplers Engine/Renderers Interface Model/Instances Model/Materials Model/MiscObjects, sparker, 05/05/2006

Archive powered by MHonArc 2.6.16.

Top of page