Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r810 - in branches/vertical: Engine/Control Engine/PixelSamplers Engine/Renderers Engine/Shadows Interface Model Model/Backgrounds Model/Groups Model/Instances Model/Materials Model/MiscObjects Model/Textures


Chronological Thread 
  • From: sparker@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r810 - in branches/vertical: Engine/Control Engine/PixelSamplers Engine/Renderers Engine/Shadows Interface Model Model/Backgrounds Model/Groups Model/Instances Model/Materials Model/MiscObjects Model/Textures
  • Date: Tue, 3 Jan 2006 14:42:15 -0700 (MST)

Author: sparker
Date: Tue Jan  3 14:42:12 2006
New Revision: 810

Modified:
   branches/vertical/Engine/Control/RTRT.cc
   branches/vertical/Engine/PixelSamplers/JitterSampler.cc
   branches/vertical/Engine/PixelSamplers/SingleSampler.cc
   branches/vertical/Engine/Renderers/Moire.cc
   branches/vertical/Engine/Renderers/NullRenderer.cc
   branches/vertical/Engine/Shadows/HardShadows.cc
   branches/vertical/Engine/Shadows/NoShadows.cc
   branches/vertical/Interface/RayPacket.h
   branches/vertical/Model/Backgrounds/ConstantBackground.cc
   branches/vertical/Model/Backgrounds/LinearBackground.cc
   branches/vertical/Model/Backgrounds/TextureBackground.cc
   branches/vertical/Model/CMakeLists.txt
   branches/vertical/Model/Groups/BVH.cc
   branches/vertical/Model/Groups/CMakeLists.txt
   branches/vertical/Model/Groups/GriddedGroup.cc
   branches/vertical/Model/Groups/KDTree.cc
   branches/vertical/Model/Groups/KDTree.h
   branches/vertical/Model/Groups/RealisticBvh.cc
   branches/vertical/Model/Instances/Instance.cc
   branches/vertical/Model/Instances/InstanceRST.cc
   branches/vertical/Model/Instances/InstanceRT.cc
   branches/vertical/Model/Instances/InstanceST.cc
   branches/vertical/Model/Instances/InstanceT.cc
   branches/vertical/Model/Materials/Phong.cc
   branches/vertical/Model/MiscObjects/CuttingPlane.cc
   branches/vertical/Model/MiscObjects/Difference.cc
   branches/vertical/Model/MiscObjects/Intersection.cc
   branches/vertical/Model/Textures/ImageTexture.h
   branches/vertical/Model/Textures/MarbleTexture.h
   branches/vertical/Model/Textures/OakTexture.h
   branches/vertical/Model/Textures/WoodTexture.h
Log:
More progress toward vertical raypackets (finishing rest of Manta).  Not 
finished.


Modified: branches/vertical/Engine/Control/RTRT.cc
==============================================================================
--- branches/vertical/Engine/Control/RTRT.cc    (original)
+++ branches/vertical/Engine/Control/RTRT.cc    Tue Jan  3 14:42:12 2006
@@ -1293,7 +1293,7 @@
     // Shade.
     result_rays.hitMaterial(0)->shade( render_context, result_rays );
   }
-  result_color = result_rays.getResult(0);
+  result_color = result_rays.getColor(0);
 }
 
 

Modified: branches/vertical/Engine/PixelSamplers/JitterSampler.cc
==============================================================================
--- branches/vertical/Engine/PixelSamplers/JitterSampler.cc     (original)
+++ branches/vertical/Engine/PixelSamplers/JitterSampler.cc     Tue Jan  3 
14:42:12 2006
@@ -99,7 +99,7 @@
   int current_fragment = current_fragment_return;
   Color fragment_color = Color::black();
   for(int sample_index = rays.begin(); sample_index < rays.end(); 
sample_index++) {
-    fragment_color += rays.getResult(sample_index);
+    fragment_color += rays.getColor(sample_index);
     samples_collected++;
     // We've collected enough samples, so compute the average and
     // assign it to the fragment.

Modified: branches/vertical/Engine/PixelSamplers/SingleSampler.cc
==============================================================================
--- branches/vertical/Engine/PixelSamplers/SingleSampler.cc     (original)
+++ branches/vertical/Engine/PixelSamplers/SingleSampler.cc     Tue Jan  3 
14:42:12 2006
@@ -98,7 +98,7 @@
 
     for(int i=0;i<size;i++){
       Fragment::Element& fe = fragment.get(f+i);
-      fe.color = rays.getResult(i);
+      fe.color = rays.getColor(i);
     }
   }
 }

Modified: branches/vertical/Engine/Renderers/Moire.cc
==============================================================================
--- branches/vertical/Engine/Renderers/Moire.cc (original)
+++ branches/vertical/Engine/Renderers/Moire.cc Tue Jan  3 14:42:12 2006
@@ -61,7 +61,7 @@
     Real iy = rays.getImageCoordinates(i, 1);
     Real dist2 = ix*ix + iy*iy;
     Real val = Cos(dist2*2*M_PI*cycles+phase)/2+0.5;
-    rays.setResult(i, Color(GrayColor(val)));
+    rays.setColor(i, Color(GrayColor(val)));
   }
 }
 

Modified: branches/vertical/Engine/Renderers/NullRenderer.cc
==============================================================================
--- branches/vertical/Engine/Renderers/NullRenderer.cc  (original)
+++ branches/vertical/Engine/Renderers/NullRenderer.cc  Tue Jan  3 14:42:12 
2006
@@ -39,13 +39,13 @@
 {
   ASSERT(rays.getFlag(RayPacket::HaveImageCoordinates));
   for(int i=rays.begin();i<rays.end();i++){
-    rays.setResult(i, color);
+    rays.setColor(i, color);
   }
 }
 
 void NullRenderer::traceRays(const RenderContext&, RayPacket& rays)
 {
   for(int i=rays.begin();i<rays.end();i++){
-    rays.setResult(i, color);
+    rays.setColor(i, color);
   }
 }

Modified: branches/vertical/Engine/Shadows/HardShadows.cc
==============================================================================
--- branches/vertical/Engine/Shadows/HardShadows.cc     (original)
+++ branches/vertical/Engine/Shadows/HardShadows.cc     Tue Jan  3 14:42:12 
2006
@@ -62,7 +62,7 @@
        
         // Populate the shadow ray.
         shadowRays.setRay(sidx, sourceRays.getHitPosition(i), dir );
-        shadowRays.setResult(sidx, lightColors[i]);
+        shadowRays.setColor(sidx, lightColors[i]);
         shadowRays.resetHit( sidx, length );
         map[sidx] = i;
         if(++sidx >= RayPacket::MaxSize){

Modified: branches/vertical/Engine/Shadows/NoShadows.cc
==============================================================================
--- branches/vertical/Engine/Shadows/NoShadows.cc       (original)
+++ branches/vertical/Engine/Shadows/NoShadows.cc       Tue Jan  3 14:42:12 
2006
@@ -55,7 +55,7 @@
        
         // Populate the direction and color only
         shadowRays.setDirection(sidx, dir );
-        shadowRays.setResult(sidx, lightColors[i]);
+        shadowRays.setColor(sidx, lightColors[i]);
         map[sidx] = i;
         if(++sidx >= RayPacket::MaxSize){
           if(i+1 == sourceRays.end()){

Modified: branches/vertical/Interface/RayPacket.h
==============================================================================
--- branches/vertical/Interface/RayPacket.h     (original)
+++ branches/vertical/Interface/RayPacket.h     Tue Jan  3 14:42:12 2006
@@ -76,6 +76,7 @@
       ConstantSigns         = 0x1000
     };
 
+    // Create a "toplevel" raypacket
     RayPacket(RayPacketData& data, int rayBegin, int rayEnd, int depth, int 
flags)
       : data(&data), rayBegin(rayBegin), rayEnd(rayEnd), depth(depth), 
flags(flags)
       {
@@ -92,6 +93,7 @@
     {
     }
 
+    // Raypacket flags
     int getAllFlags() const
     {
       return flags;
@@ -112,54 +114,33 @@
     void resetFlag(int flag) {
       flags &= ~flag;
     }
+
+    // Depth of rays for this raypacket
+    int getDepth() const {
+      return depth;
+    }
+
+
+    // Raypacket iteration
     int begin() const {
       return rayBegin;
     }
     int end() const {
       return rayEnd;
     }
-    void resetHits() {
-      for(int i=rayBegin;i<rayEnd;i++){
-        data->hitMatl[i] = 0;
-        data->minT[i] = MAXT;
-      }
-      flags |= HaveHitRecords;
-    }
-    void resetHit(int which, Real maxt) {
-      data->hitMatl[which] = 0;
-      data->minT[which] = maxt;
-    }
-
     void resize(int newSize)
     {
       rayBegin = 0; rayEnd = newSize;
     }
 
+
+    // Image space
     void setPixel(int which, int whichEye, Real imageX, Real imageY)
     {
       data->image[0][which] = imageX;
       data->image[1][which] = imageY;
       data->whichEye[which] = whichEye;
     }
-
-    void setResult(int which, const Color& color)
-    {
-      for(int i=0;i<Color::NumComponents;i++)
-        data->color[i][which] = color[i];
-    }
-    void setImportance(int which, const Color& importance)
-    {
-      for(int i=0;i<Color::NumComponents;i++)
-        data->importance[i][which] = importance[i];
-    }
-    Color getImportance(int which)
-    {
-      Color result;
-      for(int i=0;i<Color::NumComponents;i++)
-        result[i] = data->importance[i][which];
-      return result;
-    }
-
     Real getImageCoordinates(int which, int dim)
     {
       return data->image[dim][which];
@@ -169,6 +150,7 @@
       return data->whichEye[which];
     }
 
+    // Rays
     void setRay(int which, const Point& origin, const Vector& direction)
     {
       for(int i=0;i<3;i++)
@@ -176,33 +158,16 @@
       for(int i=0;i<3;i++)
         data->direction[i][which] = direction[i];
     }
-    void setDirection(int which, const Vector& direction)
-    {
-      for(int i=0;i<3;i++)
-        data->direction[i][which] = direction[i];
-    }
-    void setTexCoords(int which, const Point& tc)
-    {
-      for(int i=0;i<3;i++)
-        data->texCoords[i][which] = tc[i];
-    }
-    void setTexCoords(int which, const PointT<Real, 2>& tc)
-    {
-      for(int i=0;i<2;i++)
-        data->texCoords[i][which] = tc[i];
-    }
-
-    Point getTexCoords(int which) const
+    Ray getRay(int which) const
     {
-      return Point(data->texCoords[0][which], data->texCoords[1][which], 
data->texCoords[2][which]);
+      return Ray(Point(data->origin[0][which], data->origin[1][which], 
data->origin[2][which]),
+                 Vector(data->direction[0][which], 
data->direction[1][which], data->direction[2][which]));
     }
-
-    void setNormal(int which, const Vector& normal)
+    void setDirection(int which, const Vector& direction)
     {
       for(int i=0;i<3;i++)
-        data->normal[i][which] = normal[i];
+        data->direction[i][which] = direction[i];
     }
-
     Point getOrigin(int which) const
     {
       return Point(data->origin[0][which], data->origin[1][which], 
data->origin[2][which]);
@@ -211,24 +176,54 @@
     {
       return Vector(data->direction[0][which], data->direction[1][which], 
data->direction[2][which]);
     }
-    Real getMinT(int which) const
+    void normalizeDirections()
     {
-      return data->minT[which];
+      if(flags & NormalizedDirections)
+        return;
+
+      if(flags & HaveHitRecords){
+        for(int i=rayBegin;i<rayEnd;i++){
+          Real sum = 0;
+          for(int j=0;j<3;j++)
+            sum += data->direction[j][i] * data->direction[j][i];
+          Real length = SCIRun::Sqrt(sum);
+          if(data->hitMatl[i] != 0)
+            data->minT[i] *= length;
+          Real scale = 1/length;
+          for(int j=0;j<3;j++)
+            data->direction[j][i] *= scale;
+        }
+      } else {
+        for(int i=rayBegin;i<rayEnd;i++){
+          Real sum = 0;
+          for(int j=0;j<3;j++)
+            sum += data->direction[j][i] * data->direction[j][i];
+          Real scale = 1/SCIRun::Sqrt(sum);
+          for(int j=0;j<3;j++)
+            data->direction[j][i] *= scale;
+        }
+      }
+      flags |= NormalizedDirections;
+      flags &= ~HaveInverseDirections;
     }
-    Vector getNormal(int which) const
-    {
-      return Vector(data->normal[0][which], data->normal[1][which], 
data->normal[2][which]);
+
+
+    // Hit information
+    void resetHits() {
+      for(int i=rayBegin;i<rayEnd;i++){
+        data->hitMatl[i] = 0;
+        data->minT[i] = MAXT;
+      }
+      flags |= HaveHitRecords;
     }
-    Point getHitPosition(int which) const
-    {
-      return Point(data->hitPosition[0][which], data->hitPosition[1][which], 
data->hitPosition[2][which]);
+    void resetHit(int which, Real maxt) {
+      data->hitMatl[which] = 0;
+      data->minT[which] = maxt;
     }
-    Point setHitPosition(int which, const Point& hit) const
+    Real getMinT(int which) const
     {
-      for(int i=0;i<3;i++)
-        data->hitPosition[i][which] = hit[which];
+      return data->minT[which];
     }
-
     bool hit(int which, Real t, const Material* matl, const Primitive* prim,
              const TexCoordMapper* tex) {
       if(t < (Real)T_EPSILON)
@@ -243,81 +238,72 @@
         return false;
       }
     }
+    bool wasHit(int which)
+    {
+      return data->hitMatl[which] != 0;
+    }
+    const Material* hitMaterial(int which)
+    {
+      return data->hitMatl[which];
+    }
     void setTexCoordMapper(int which, const TexCoordMapper* tex)
     {
       data->hitTex[which] = tex;
     }
 
-    // Scratchpad isn't quite "vertical" yet...
-    template<class T> T& scratchpad(int which) {
-
-      // This pragma relates to the following expression being
-      // constant (which it is).  Since sizeof(T) is evaluated after
-      // the preprocessor, we can't get around not doing it here like
-      // this.
 
-#     if defined(__sgi) && !defined(__GNUC__)
-#       pragma set woff 1209
-      ASSERT(sizeof(T) <= RayPacketData::MaxScratchpadSize);
-#       pragma set woff 1209
-#     else
-      ASSERT(sizeof(T) <= RayPacketData::MaxScratchpadSize);
-#     endif
-      return *(T*)data->scratchpad_data[which];
+    // Final result
+    void setColor(int which, const Color& color)
+    {
+      for(int i=0;i<Color::NumComponents;i++)
+        data->color[i][which] = color[i];
     }
-    Color getResult(int which) const
+    Color getColor(int which) const
     {
       Color result;
       for(int i=0;i<Color::NumComponents;i++)
         result[i] = data->color[i][which];
       return result;
     }
-    Color getColor(int which) const
+
+    // Attenuation for ray tree pruning
+    void setImportance(int which, const Color& importance)
+    {
+      for(int i=0;i<Color::NumComponents;i++)
+        data->importance[i][which] = importance[i];
+    }
+    Color getImportance(int which)
     {
       Color result;
       for(int i=0;i<Color::NumComponents;i++)
-        result[i] = data->color[i][which];
+        result[i] = data->importance[i][which];
       return result;
     }
-    void normalizeDirections()
+    void initializeImportance()
     {
-      if(flags & NormalizedDirections)
-        return;
+      for(int j=0;j<Color::NumComponents;j++)
+        for(int i=rayBegin;i<rayEnd;i++)
+          data->importance[j][i] = 1;
+    }
 
-      if(flags & HaveHitRecords){
-        for(int i=rayBegin;i<rayEnd;i++){
-          Real sum = 0;
-          for(int j=0;j<3;j++)
-            sum += data->direction[j][i] * data->direction[j][i];
-          Real length = SCIRun::Sqrt(sum);
-          if(data->hitMatl[i] != 0)
-            data->minT[i] *= length;
-          Real scale = 1/length;
-          for(int j=0;j<3;j++)
-            data->direction[j][i] *= scale;
-        }
-      } else {
-        for(int i=rayBegin;i<rayEnd;i++){
-          Real sum = 0;
-          for(int j=0;j<3;j++)
-            sum += data->direction[j][i] * data->direction[j][i];
-          Real scale = 1/SCIRun::Sqrt(sum);
-          for(int j=0;j<3;j++)
-            data->direction[j][i] *= scale;
-        }
-      }
-      flags |= NormalizedDirections;
-      flags &= ~HaveInverseDirections;
+    // Texture Coordinates
+    void setTexCoords(int which, const Point& tc)
+    {
+      for(int i=0;i<3;i++)
+        data->texCoords[i][which] = tc[i];
     }
-    void computeHitPositions()
+    void setTexCoords(int which, const PointT<Real, 2>& tc)
     {
-      if(flags & HaveHitPositions)
-        return;
-      for(int i=rayBegin;i<rayEnd;i++) {
-        for(int j=0;j<3;j++)
-          data->hitPosition[j][i] = data->origin[j][i] + 
data->direction[j][i] * data->minT[i];
-      }
-      flags |= HaveHitPositions;
+      for(int i=0;i<2;i++)
+        data->texCoords[i][which] = tc[i];
+    }
+    Point getTexCoords(int which) const
+    {
+      return Point(data->texCoords[0][which], data->texCoords[1][which], 
data->texCoords[2][which]);
+    }
+    PointT<Real, 2> getTexCoords2(int which) const
+    {
+      return PointT<Real, 2>(data->texCoords[0][which], 
data->texCoords[1][which]);
     }
 
     // These aren't right - the texture object may not be consecutive
@@ -338,6 +324,17 @@
       flags |= HaveTexture2|HaveTexture3;
     }
 
+
+    // Normals
+    void setNormal(int which, const Vector& normal)
+    {
+      for(int i=0;i<3;i++)
+        data->normal[i][which] = normal[i];
+    }
+    Vector getNormal(int which) const
+    {
+      return Vector(data->normal[0][which], data->normal[1][which], 
data->normal[2][which]);
+    }
     void computeNormals(const RenderContext& context)
     {
       if(flags & HaveNormals)
@@ -357,24 +354,47 @@
       flags |= HaveNormals;
     }
 
-    int getDepth() const {
-      return depth;
-    }
 
-    void initializeImportance()
+    // Hit positions
+    Point getHitPosition(int which) const
     {
-      for(int j=0;j<Color::NumComponents;j++)
-        for(int i=rayBegin;i<rayEnd;i++)
-          data->importance[j][i] = 1;
+      return Point(data->hitPosition[0][which], data->hitPosition[1][which], 
data->hitPosition[2][which]);
     }
-    bool wasHit(int which)
+    Point setHitPosition(int which, const Point& hit) const
     {
-      return data->hitMatl[which] != 0;
+      for(int i=0;i<3;i++)
+        data->hitPosition[i][which] = hit[which];
     }
-    const Material* hitMaterial(int which)
+    void computeHitPositions()
     {
-      return data->hitMatl[which];
+      if(flags & HaveHitPositions)
+        return;
+      for(int i=rayBegin;i<rayEnd;i++) {
+        for(int j=0;j<3;j++)
+          data->hitPosition[j][i] = data->origin[j][i] + 
data->direction[j][i] * data->minT[i];
+      }
+      flags |= HaveHitPositions;
+    }
+
+
+    // Scratchpad isn't quite "vertical" yet...
+    template<class T> T& scratchpad(int which) {
+
+      // This pragma relates to the following expression being
+      // constant (which it is).  Since sizeof(T) is evaluated after
+      // the preprocessor, we can't get around not doing it here like
+      // this.
+
+#     if defined(__sgi) && !defined(__GNUC__)
+#       pragma set woff 1209
+      ASSERT(sizeof(T) <= RayPacketData::MaxScratchpadSize);
+#       pragma set woff 1209
+#     else
+      ASSERT(sizeof(T) <= RayPacketData::MaxScratchpadSize);
+#     endif
+      return *(T*)data->scratchpad_data[which];
     }
+
   private:
     RayPacket(const RayPacket&);
     RayPacket& operator=(const RayPacket&);

Modified: branches/vertical/Model/Backgrounds/ConstantBackground.cc
==============================================================================
--- branches/vertical/Model/Backgrounds/ConstantBackground.cc   (original)
+++ branches/vertical/Model/Backgrounds/ConstantBackground.cc   Tue Jan  3 
14:42:12 2006
@@ -20,5 +20,5 @@
 void ConstantBackground::shade(const RenderContext&, RayPacket& rays) const
 {
   for(int i=rays.begin();i<rays.end();i++)
-    rays.setResult(i, bgcolor);
+    rays.setColor(i, bgcolor);
 }

Modified: branches/vertical/Model/Backgrounds/LinearBackground.cc
==============================================================================
--- branches/vertical/Model/Backgrounds/LinearBackground.cc     (original)
+++ branches/vertical/Model/Backgrounds/LinearBackground.cc     Tue Jan  3 
14:42:12 2006
@@ -29,6 +29,6 @@
     // would like to cast that to type ColorComponent, because we will
     // do operations on the color with this value.
     ColorComponent t = (Real)0.5 * (1 + Dot(rays.getDirection(i), up));
-    rays.setResult(i, cup*t+cdown*(1-t));
+    rays.setColor(i, cup*t+cdown*(1-t));
   }
 }

Modified: branches/vertical/Model/Backgrounds/TextureBackground.cc
==============================================================================
--- branches/vertical/Model/Backgrounds/TextureBackground.cc    (original)
+++ branches/vertical/Model/Backgrounds/TextureBackground.cc    Tue Jan  3 
14:42:12 2006
@@ -92,7 +92,7 @@
 
   // Copy the colors over.
   for(int i=rays.begin();i<rays.end();i++){
-    rays.setResult(i, bg_color[i]);
+    rays.setColor(i, bg_color[i]);
   }
 }
 

Modified: branches/vertical/Model/CMakeLists.txt
==============================================================================
--- branches/vertical/Model/CMakeLists.txt      (original)
+++ branches/vertical/Model/CMakeLists.txt      Tue Jan  3 14:42:12 2006
@@ -7,9 +7,9 @@
 INCLUDE (Materials/CMakeLists.txt)
 INCLUDE (Primitives/CMakeLists.txt)
 INCLUDE (TexCoordMappers/CMakeLists.txt)
-#INCLUDE (Instances/CMakeLists.txt)
-#INCLUDE (MiscObjects/CMakeLists.txt)
-#INCLUDE (Readers/CMakeLists.txt)
+INCLUDE (Instances/CMakeLists.txt)
+INCLUDE (MiscObjects/CMakeLists.txt)
+INCLUDE (Readers/CMakeLists.txt)
 INCLUDE (Intersections/CMakeLists.txt)
 INCLUDE (Textures/CMakeLists.txt)
 

Modified: branches/vertical/Model/Groups/BVH.cc
==============================================================================
--- branches/vertical/Model/Groups/BVH.cc       (original)
+++ branches/vertical/Model/Groups/BVH.cc       Tue Jan  3 14:42:12 2006
@@ -340,9 +340,8 @@
   Node* node = nodes+cur.node;
   int total = 0;
   for(int i=cur.start;i<cur.end;i++){
-    RayPacket::Element& e = rays.get(i);
-    Vector t1 = (node->min - e.ray.origin()) * e.inverseDirection;
-    Vector t2 = (node->max - e.ray.origin()) * e.inverseDirection;
+    Vector t1 = (node->min - rays.getOrigin(i)) * 
rays.getInverseDirection(i);
+    Vector t2 = (node->max - rays.getOrigin(i)) * 
rays.getInverseDirection(i);
     Vector tn = Min(t1, t2);
     Vector tf = Max(t1, t2);
     double tnear = tn.maxComponent();
@@ -362,8 +361,8 @@
   int nstack = 0;
 
   stack[nstack].node = 1;
-  stack[nstack].start = 0;
-  stack[nstack].end = rays.getSize();
+  stack[nstack].start = rays.begin();
+  stack[nstack].end = rays.end();
   int numHit = intersect_box(rays, stack[nstack]);
   if(!numHit)
     return;

Modified: branches/vertical/Model/Groups/CMakeLists.txt
==============================================================================
--- branches/vertical/Model/Groups/CMakeLists.txt       (original)
+++ branches/vertical/Model/Groups/CMakeLists.txt       Tue Jan  3 14:42:12 
2006
@@ -14,11 +14,10 @@
      #Groups/KDTreeLoader.cc
      #Groups/FrustumKDTree.h
      #Groups/FrustumKDTree.cc
-     #Groups/PsiGammaTable.cc
-     #Groups/PsiGammaTable.h
+     Groups/PsiGammaTable.cc
+     Groups/PsiGammaTable.h
      #Groups/RealisticBvh.h
      #Groups/RealisticBvh.cc
-     #Groups/VolumeGrid.h
-     #Groups/varray.h
-
+     Groups/VolumeGrid.h
+     Groups/varray.h
 )

Modified: branches/vertical/Model/Groups/GriddedGroup.cc
==============================================================================
--- branches/vertical/Model/Groups/GriddedGroup.cc      (original)
+++ branches/vertical/Model/Groups/GriddedGroup.cc      Tue Jan  3 14:42:12 
2006
@@ -164,13 +164,10 @@
 {
 
   rays.computeInverseDirections();
-  for(int i=0; i<rays.getSize(); i++) {
-    RayPacket::Element& e = rays.get(i);
-
-
+  for(int i=rays.begin(); i<rays.end(); i++) {
     // Step 2
-    Vector v1 = (min-e.ray.origin())*e.inverseDirection;
-    Vector v2 = (max-e.ray.origin())*e.inverseDirection;
+    Vector v1 = (min-rays.getOrigin(i))*rays.getInverseDirection(i);
+    Vector v2 = (max-rays.getOrigin(i))*rays.getInverseDirection(i);
     Vector vmin = Min(v1, v2);
     Vector vmax = Max(v1, v2);
     double tnear = vmin.maxComponent();

Modified: branches/vertical/Model/Groups/KDTree.cc
==============================================================================
--- branches/vertical/Model/Groups/KDTree.cc    (original)
+++ branches/vertical/Model/Groups/KDTree.cc    Tue Jan  3 14:42:12 2006
@@ -166,9 +166,8 @@
        
   RayTriIntersectUserData isectData;
        
-  for(int i=0;i<rays.getSize();i++) {
+  for(int i=rays.begin();i<rays.end();i++) {
                
-    RayPacket::Element& e = rays.get(i);
     Real minDist, maxDist;
                
     // Intersect the ray with the bounding box for the group.

Modified: branches/vertical/Model/Groups/KDTree.h
==============================================================================
--- branches/vertical/Model/Groups/KDTree.h     (original)
+++ branches/vertical/Model/Groups/KDTree.h     Tue Jan  3 14:42:12 2006
@@ -357,7 +357,7 @@
       //                 const RenderContext &context,
       //                 float _minDist=-1, float _maxDist=-1) const;
       void intersect_node( KDTreeNode *startNode,
-                           const Ray* ray, RayPacket::Element &e,
+                           const Ray* ray, RayPacket& rays, int which,
                            RayTriIntersectUserData &isectData,
                            const RenderContext &context,
                            float minDist, float maxDist) const;

Modified: branches/vertical/Model/Groups/RealisticBvh.cc
==============================================================================
--- branches/vertical/Model/Groups/RealisticBvh.cc      (original)
+++ branches/vertical/Model/Groups/RealisticBvh.cc      Tue Jan  3 14:42:12 
2006
@@ -172,7 +172,7 @@
        // Intersect the ray packet with the bounds of this node.
        bool bbox_intersect[RayPacket::MaxSize];
        
-       for(int i=0;i<rays.getSize();i++) {
+       for(int i=rays.begin();i<rays.end();i++) {
                
                RayPacket::Element& e = rays.get(i);
 
@@ -186,14 +186,14 @@
        
        // Find runs of rays which intersect this bounding box and intersect 
those 
        // with the children.
-       int begin = 0;
+       int begin = rays.begin();
        int end   = 0;
        int first_child;
 
-       while (begin < rays.getSize()) {
+       while (begin < rays.end()) {
        
                // Find the beginning of a run.
-               while ((begin < rays.getSize()) && (!bbox_intersect[begin]))
+               while ((begin < rays.end()) && (!bbox_intersect[begin]))
                        ++begin;
        
                // Determine the first child for the first ray in the packet.
@@ -201,11 +201,11 @@
        
                // Find the end of this run.
                end = begin;
-               while ((end < rays.getSize()) && (bbox_intersect[end]) && 
+               while ((end < rays.end()) && (bbox_intersect[end]) && 
                       (rays.get( begin ).sign[ split_axis ] == first_child))
                        ++end;
 
-               if ((end > begin) && (begin < rays.getSize())) {
+               if ((end > begin) && (begin < rays.end())) {
                        // Create a sub packet.
                        RayPacket sub_packet( rays, begin, end );
                        

Modified: branches/vertical/Model/Instances/Instance.cc
==============================================================================
--- branches/vertical/Model/Instances/Instance.cc       (original)
+++ branches/vertical/Model/Instances/Instance.cc       Tue Jan  3 14:42:12 
2006
@@ -42,59 +42,50 @@
 void Instance::intersect(const RenderContext& context, RayPacket& rays) const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.getSize(), rays.getDepth(),
+  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
   Real scales[RayPacket::MaxSize];
   Real inv_scales[RayPacket::MaxSize];
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
-    RayPacket::Element& e0 = rays.get(0);
-
-        Point o = transform_inv * e0.ray.origin();
+    int ray0 = rays.begin();
+    Point o = transform_inv * rays.getOrigin(ray0);
         
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
-
-               Vector dir = transform_inv * e.ray.direction();
+    for(int i = rays.begin();i<rays.end();i++){
+      Vector dir = transform_inv * rays.getDirection(i);
                
       Real length = dir.length();
       inv_scales[i] = length;
       Real ilength = 1/length;
       scales[i] = ilength;
-      te.ray.set(o, dir*ilength);
-      te.hitInfo.reset(e.hitInfo.minT()*length);
+      instance_rays.setRay(i, o, dir*ilength);
+      instance_rays.resetHit(i, rays.getMinT(i)*length);
     }
   } else {
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
-
-      Point o = transform_inv * e.ray.origin();
-      Vector dir = transform_inv * e.ray.direction();
+    for(int i = rays.begin();i<rays.end();i++){
+      Point o = transform_inv * rays.getOrigin(i);
+      Vector dir = transform_inv * rays.getDirection(i);
 
       Real length = dir.length();
       inv_scales[i] = length;
       Real ilength = 1/length;
       scales[i] = ilength;
-      te.ray.set(o, dir*ilength);
-      te.hitInfo.reset(e.hitInfo.minT()*length);
+      instance_rays.setRay(i, o, dir*ilength);
+      instance_rays.resetHit(i, rays.getMinT(i)*length);
     }
   }
   instance->intersect(context, instance_rays);
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    RayPacket::Element& te = instance_rays.get(i);
-    if(te.hitInfo.wasHit()){
+  for(int i=rays.begin();i<rays.end();i++){
+    if(instance_rays.wasHit(i)){
       // Instance was hit
       Real s = scales[i];
-      if(e.hitInfo.hit(te.hitInfo.minT()*s, material, this, tex)){
+      if(rays.hit(i, instance_rays.getMinT(i)*s, material, this, tex)){
         // Instance is now the closest
         Real is = inv_scales[i];
-        e.hitInfo.scratchpad<MPTscale>() = MPTscale(te.hitInfo.hitMaterial(),
-                                                    
te.hitInfo.hitPrimitive(),
-                                                    
te.hitInfo.hitTexCoordMapper(),
-                                                    s, is);
+        rays.scratchpad<MPTscale>(i) = 
MPTscale(instance_rays.getHitMaterial(i),
+                                                
instance_rays.getHitPrimitive(i),
+                                                
instance_rays.getHitTexCoordMapper(i),
+                                                s, is);
       }
     }
   }
@@ -106,25 +97,23 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    old_rays[i] = e.ray;
-    Point o    = transform_inv * e.ray.origin();        
-    Vector dir = transform_inv * e.ray.direction();
+  for(int i=rays.begin();i<rays.end();i++){
+    old_rays[i] = rays.getRay(i);
+    Point o    = transform_inv * rays.getOrigin(i);
+    Vector dir = transform_inv * rays.getDirection(i);
 
-    Real scale = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
+    Real scale = rays.scratchpad<MPTscale>(i).scale;
     e.ray.set(o, dir*scale);
     old_minT[i] = e.hitInfo.minT();
-    Real inv_scale = rays.get(i).hitInfo.scratchpad<MPTscale>().inv_scale;
+    Real inv_scale = rays.scratchpad<MPTscale>(i).inv_scale;
     e.hitInfo.scaleT(inv_scale);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
-    const Primitive* prim = e.hitInfo.scratchpad<MPT>().primitive;
+  for(int i=rays.begin();i<rays.end();){
+    const Primitive* prim = rays.scratchpad<MPT>(i).primitive;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
+    while(end < rays.end() && rays.scratchpad<MPT>(end).primitive == prim)
       end++;
     RayPacket subPacket(rays, i, end);
     prim->computeNormal(context, subPacket);
@@ -132,13 +121,11 @@
   }
   
   // Put the origins and minT back, scale normal
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    e.ray = old_rays[i];
-    e.hitInfo.overrideT(old_minT[i]);
+  for(int i=rays.begin();i<rays.end();i++){
+    rays.setRay(i, old_rays[i]);
+    rays.overrideT(i, old_minT[i]);
 
-        e.normal = transpose_mult(transform_inv,e.normal);
-        e.normal.normalize();
+    rays.setNormal(transpose_mult(transform_inv,e.normal).normal());
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 }
@@ -150,11 +137,10 @@
 
 void Instance::shade(const RenderContext& context, RayPacket& rays) const
 {
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
-    const Material* matl = e.hitInfo.scratchpad<MPT>().material;
+  for(int i=rays.begin();i<rays.end();){
+    const Material* matl = rays.scratchpad<MPT>(i).material;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
+    while(end < rays.end() && rays.scratchpad<MPT>(end).material == matl)
       end++;
     RayPacket subPacket(rays, i, end);
     matl->shade(context, subPacket);
@@ -169,26 +155,24 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    old_rays[i] = e.ray;
+  for(int i=rays.begin();i<rays.end();i++){
+    old_rays[i] = rays.getRay(i);
 
     Point o    = transform_inv * e.ray.origin();
     Vector dir = transform_inv * e.ray.direction();
 
-    Real scale = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
+    Real scale = rays.scratchpad<MPTscale>(i).scale;
     e.ray.set(o, dir*scale);
     old_minT[i] = e.hitInfo.minT();
-    Real inv_scale = rays.get(i).hitInfo.scratchpad<MPTscale>().inv_scale;
+    Real inv_scale = rays.scratchpad<MPTscale>(i).inv_scale;
     e.hitInfo.scaleT(inv_scale);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
-    const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
+  for(int i=rays.begin();i<rays.end();){
+    const TexCoordMapper* tex = rays.scratchpad<MPT>(i).tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.scratchpad<MPT>(end).tex == tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -196,10 +180,9 @@
   }
 
   // Put the origins and minT back
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    e.ray = old_rays[i];
-    e.hitInfo.overrideT(old_minT[i]);
+  for(int i=rays.begin();i<rays.end();i++){
+    rays.setRay(i, old_rays[i]);
+    rays.overrideT(i, old_minT[i]);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 }
@@ -211,26 +194,24 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    old_rays[i] = e.ray;
+  for(int i=rays.begin();i<rays.end();i++){
+    old_rays[i] = rays.getRay(i);
 
-    Point o    = transform_inv * e.ray.origin();
-    Vector dir = transform_inv * e.ray.direction();
+    Point o    = transform_inv * rays.getOrigin(i);
+    Vector dir = transform_inv * rays.getDirection(i);
 
-    Real scale = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
+    Real scale = rays.scratchpad<MPTscale>(i).scale;
     e.ray.set(o, dir*scale);
     old_minT[i] = e.hitInfo.minT();
-    Real inv_scale = rays.get(i).hitInfo.scratchpad<MPTscale>().inv_scale;
+    Real inv_scale = rays.scratchpad<MPTscale>(i).inv_scale;
     e.hitInfo.scaleT(inv_scale);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
-    const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
+  for(int i=rays.begin();i<rays.end();){
+    const TexCoordMapper* tex = rays.scratchpad<MPT>(i).tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.scratchpad<MPT>(end).tex == tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -238,10 +219,9 @@
   }
 
   // Put the origins and minT back, scale normal
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    e.ray = old_rays[i];
-    e.hitInfo.overrideT(old_minT[i]);
+  for(int i=rays.begin();i<rays.end();i++){
+    rays.setRay(i, old_rays[i]);
+    rays.overrideT(i, old_minT[i]);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 }

Modified: branches/vertical/Model/Instances/InstanceRST.cc
==============================================================================
--- branches/vertical/Model/Instances/InstanceRST.cc    (original)
+++ branches/vertical/Model/Instances/InstanceRST.cc    Tue Jan  3 14:42:12 
2006
@@ -59,46 +59,37 @@
 void InstanceRST::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.getSize(), rays.getDepth(),
+  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
-    RayPacket::Element& e0 = rays.get(0);
+    int ray0 = rays.begin();
+    Point o = transform_inv * rays.getOrigin(ray0);
 
-    Point o = transform_inv * e0.ray.origin();
-
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
-
-      Vector dir = transform_inv * e.ray.direction();
+    for(int i = rays.begin();i<rays.end();i++){
+      Vector dir = transform_inv * rays.getDirection(i);
 
       te.ray.set(o, dir*scale);
       te.hitInfo.reset(e.hitInfo.minT()*inv_scale);
     }
   } else {
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
-
-      Point o = transform_inv * e.ray.origin();
-      Vector dir = transform_inv * e.ray.direction();
+    for(int i = rays.begin();i<rays.end();i++){
+      Point o = transform_inv * rays.getOrigin(i);
+      Vector dir = transform_inv * rays.getDirection(i);
 
       te.ray.set(o, dir*scale);
       te.hitInfo.reset(e.hitInfo.minT()*inv_scale);
     }
   }
   instance->intersect(context, instance_rays);
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    RayPacket::Element& te = instance_rays.get(i);
-    if(te.hitInfo.wasHit()){
+  for(int i=rays.begin();i<rays.end();i++){
+    if(instance_rays.wasHit(i)){
       // Instance was hit
-      if(e.hitInfo.hit(te.hitInfo.minT()*scale, material, this, tex)){
-                 // Instance is now the closest
-                 e.hitInfo.scratchpad<MPT>() = MPT(te.hitInfo.hitMaterial(),
-                                                                             
                                  te.hitInfo.hitPrimitive(),
-                                                                             
                                  te.hitInfo.hitTexCoordMapper());
+      if(rays.hit(i, te.hitInfo.minT()*scale, material, this, tex)){
+        // Instance is now the closest
+        e.hitInfo.scratchpad<MPT>() = MPT(te.hitInfo.hitMaterial(),
+                                          te.hitInfo.hitPrimitive(),
+                                          te.hitInfo.hitTexCoordMapper());
       }
     }
   }
@@ -110,8 +101,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_rays[i] = e.ray;
 
     Point o = transform_inv * e.ray.origin();
@@ -123,11 +113,10 @@
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Primitive* prim = e.hitInfo.scratchpad<MPT>().primitive;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
       end++;
     RayPacket subPacket(rays, i, end);
     prim->computeNormal(context, subPacket);
@@ -135,8 +124,7 @@
   }
   
   // Put the origins and minT back, scale normal
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
     e.hitInfo.overrideT(old_minT[i]);
 
@@ -153,12 +141,11 @@
 
 void InstanceRST::shade(const RenderContext& context, RayPacket& rays) const
 {
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Material* matl = e.hitInfo.scratchpad<MPT>().material;
     int end = i+1;
 
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
       end++;
 
     RayPacket subPacket(rays, i, end);
@@ -174,8 +161,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_rays[i] = e.ray;
 
     Point o    = transform_inv * e.ray.origin();
@@ -187,11 +173,10 @@
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -199,8 +184,7 @@
   }
 
   // Put the origins and minT back
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
     e.hitInfo.overrideT(old_minT[i]);
   }
@@ -214,7 +198,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
+  for(int i=rays.begin();i<rays.end();i++){
     RayPacket::Element& e = rays.get(i);
     old_rays[i] = e.ray;
 
@@ -227,11 +211,10 @@
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -239,8 +222,7 @@
   }
 
   // Put the origins and minT back, scale normal
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
     e.hitInfo.overrideT(old_minT[i]);
   }

Modified: branches/vertical/Model/Instances/InstanceRT.cc
==============================================================================
--- branches/vertical/Model/Instances/InstanceRT.cc     (original)
+++ branches/vertical/Model/Instances/InstanceRT.cc     Tue Jan  3 14:42:12 
2006
@@ -57,28 +57,21 @@
 void InstanceRT::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.getSize(), rays.getDepth(),
+  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
-    RayPacket::Element& e0 = rays.get(0);
-
-    Point o = transform_inv * e0.ray.origin();
-
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
+    int ray0 = rays.begin();
+    Point o = transform_inv * rays,getOrigin(ray0);
 
+    for(int i = rays.begin();i<rays.end();i++){
       Vector dir = transform_inv * e.ray.direction();
 
       te.ray.set(o, dir);
       te.hitInfo.reset(e.hitInfo.minT());
     }
   } else {
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
-
+    for(int i = rays.begin();i<rays.end();i++){
       Point o = transform_inv * e.ray.origin();
       Vector dir = transform_inv * e.ray.direction();
 
@@ -87,9 +80,7 @@
     }
   }
   instance->intersect(context, instance_rays);
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    RayPacket::Element& te = instance_rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     if(te.hitInfo.wasHit()){
       // Instance was hit
       if(e.hitInfo.hit(te.hitInfo.minT(), material, this, tex)){
@@ -107,8 +98,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_rays[i] = e.ray;
 
     Point o = transform_inv * e.ray.origin();
@@ -117,11 +107,10 @@
     e.ray.set(o, dir);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Primitive* prim = e.hitInfo.scratchpad<MPT>().primitive;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
       end++;
     RayPacket subPacket(rays, i, end);
     prim->computeNormal(context, subPacket);
@@ -129,8 +118,7 @@
   }
 
   // Put the rays back and fix the normals
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
         e.normal = transpose_mult(transform_inv,e.normal);
   }
@@ -144,11 +132,10 @@
 
 void InstanceRT::shade(const RenderContext& context, RayPacket& rays) const
 {
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Material* matl = e.hitInfo.scratchpad<MPT>().material;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
       end++;
     RayPacket subPacket(rays, i, end);
     matl->shade(context, subPacket);
@@ -163,8 +150,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_rays[i] = e.ray;
 
     Point o = transform_inv * e.ray.origin();
@@ -173,11 +159,10 @@
     e.ray.set(o, dir);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -185,10 +170,9 @@
   }
 
   // Put the rays back and fix the normals
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
-        e.normal = transform_inv * e.normal;
+    e.normal = transform_inv * e.normal;
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
 }
@@ -199,8 +183,7 @@
   Ray old_rays[RayPacket::MaxSize];
 
   // Save the original rays
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_rays[i] = e.ray;
 
     Point o = transform * e.ray.origin();
@@ -209,11 +192,10 @@
     e.ray.set(o, dir);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords3(context, subPacket);
@@ -221,8 +203,7 @@
   }
 
   // Put the rays back and fix the normals
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray = old_rays[i];
     e.normal = transform_inv * e.normal;
   }

Modified: branches/vertical/Model/Instances/InstanceST.cc
==============================================================================
--- branches/vertical/Model/Instances/InstanceST.cc     (original)
+++ branches/vertical/Model/Instances/InstanceST.cc     Tue Jan  3 14:42:12 
2006
@@ -39,65 +39,55 @@
 void InstanceST::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.getSize(), rays.getDepth(), 
rays.getAllFlags());
+  RayPacket instance_rays(raydata, rays.begin(), rays.end(), 
rays.getDepth(), rays.getAllFlags());
 
   Real scales[RayPacket::MaxSize];
   Real inv_scales[RayPacket::MaxSize];
   if(uniform_scale){
     Real iscale = inv_scale.x();
     if(rays.getFlag(RayPacket::ConstantOrigin)){
-      RayPacket::Element& e = rays.get(0);
-      Point o( Vector(e.ray.origin()-translation)*iscale );
-      for(int i = 0;i<rays.getSize();i++){
-                 RayPacket::Element& e = rays.get(i);
-                 RayPacket::Element& te = instance_rays.get(i);
-                 te.ray.set(o, e.ray.direction());
-                 te.hitInfo.reset(e.hitInfo.minT()*iscale);
+      int ray0 = rays.begin();
+      Point o( Vector(rays.getOrigin(ray0)-translation)*iscale );
+      for(int i = rays.begin();i<rays.end();i++){
+        te.ray.set(o, e.ray.direction());
+        te.hitInfo.reset(e.hitInfo.minT()*iscale);
       }
     } else {
-      for(int i = 0;i<rays.getSize();i++){
-                 RayPacket::Element& e = rays.get(i);
-                 RayPacket::Element& te = instance_rays.get(i);
-                 
te.ray.set(Point(Vector(e.ray.origin()-translation)*iscale), 
e.ray.direction());
-                 te.hitInfo.reset(e.hitInfo.minT()*iscale);
+      for(int i = rays.begin();i<rays.end();i++){
+        te.ray.set(Point(Vector(e.ray.origin()-translation)*iscale), 
e.ray.direction());
+        te.hitInfo.reset(e.hitInfo.minT()*iscale);
       }
     }
   } else {
     if(rays.getFlag(RayPacket::ConstantOrigin)){
-      RayPacket::Element& e = rays.get(0);
-      Point o(Vector(e.ray.origin()-translation)*inv_scale);
-      for(int i = 0;i<rays.getSize();i++){
-                 RayPacket::Element& e = rays.get(i);
-                 RayPacket::Element& te = instance_rays.get(i);
-                 Vector dir(e.ray.direction()*inv_scale);
-                 Real length = dir.length();
-                 inv_scales[i] = length;
-                 Real ilength = 1/length;
-                 scales[i] = ilength;
-                 te.ray.set(o, dir*ilength);
-                 te.hitInfo.reset(e.hitInfo.minT()*length);
+      int ray0 = rays.begin();
+      Point o(Vector(rays.getOrigin(ray0)-translation)*inv_scale);
+      for(int i = rays.begin();i<rays.end();i++){
+        Vector dir(e.ray.direction()*inv_scale);
+        Real length = dir.length();
+        inv_scales[i] = length;
+        Real ilength = 1/length;
+        scales[i] = ilength;
+        te.ray.set(o, dir*ilength);
+        te.hitInfo.reset(e.hitInfo.minT()*length);
       }
     } else {
-      for(int i = 0;i<rays.getSize();i++){
-                 RayPacket::Element& e = rays.get(i);
-                 RayPacket::Element& te = instance_rays.get(i);
-                 Vector dir(e.ray.direction()*inv_scale);
-                 Real length = dir.length();
-                 scales[i] = length;
-                 Real ilength = 1/length;
-                 inv_scales[i] = ilength;
-                 
te.ray.set(Point((Vector(e.ray.origin())-translation)*inv_scale),
-                                                dir*ilength);
-                 te.hitInfo.reset(e.hitInfo.minT()*length);
+      for(int i = rays.begin();i<rays.end();i++){
+        Vector dir(e.ray.direction()*inv_scale);
+        Real length = dir.length();
+        scales[i] = length;
+        Real ilength = 1/length;
+        inv_scales[i] = ilength;
+        te.ray.set(Point((Vector(e.ray.origin())-translation)*inv_scale),
+                   dir*ilength);
+        te.hitInfo.reset(e.hitInfo.minT()*length);
       }
     }
   }
   instance->intersect(context, instance_rays);
   if(uniform_scale){
     Real s = scale.x();
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       if(te.hitInfo.wasHit()){
        // Instance was hit
        if(e.hitInfo.hit(te.hitInfo.minT()*s, material, this, tex)){
@@ -109,9 +99,7 @@
       }
     }
   } else {
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       if(te.hitInfo.wasHit()){
         // Instance was hit
         Real s = scales[i];
@@ -137,8 +125,7 @@
   if(uniform_scale){
     // Save the original origins and minT
     Real is = inv_scale.x();
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_origins[i] = e.ray.origin();
       e.ray.setOrigin(Point(Vector(old_origins[i]-translation)*is));
       old_minT[i] = e.hitInfo.minT();
@@ -146,8 +133,7 @@
     }
   } else {
     // Save the original rays and minT
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_rays[i] = e.ray;
       Vector dir(e.ray.direction()*inv_scale);
       Real ilength = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
@@ -159,11 +145,10 @@
     }
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Primitive* prim = e.hitInfo.scratchpad<MPT>().primitive;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
       end++;
     RayPacket subPacket(rays, i, end);
     prim->computeNormal(context, subPacket);
@@ -172,15 +157,13 @@
   
   if(uniform_scale){
     // Put the origins and minT back
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray.setOrigin(old_origins[i]);
       e.hitInfo.overrideT(old_minT[i]);
     }
   } else {
     // Put the origins and minT back, scale normal
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray = old_rays[i];
       e.hitInfo.overrideT(old_minT[i]);
       e.normal *= inv_scale;
@@ -197,11 +180,10 @@
 
 void InstanceST::shade(const RenderContext& context, RayPacket& rays) const
 {
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Material* matl = e.hitInfo.scratchpad<MPT>().material;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
       end++;
     RayPacket subPacket(rays, i, end);
     matl->shade(context, subPacket);
@@ -218,8 +200,7 @@
   if(uniform_scale){
     // Save the original origins and minT
     Real is = inv_scale.x();
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_origins[i] = e.ray.origin();
       e.ray.setOrigin(Point(Vector(old_origins[i]-translation)*is));
       old_minT[i] = e.hitInfo.minT();
@@ -227,8 +208,7 @@
     }
   } else {
     // Save the original rays and minT
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_rays[i] = e.ray;
       Vector dir(e.ray.direction()*inv_scale);
       Real ilength = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
@@ -240,11 +220,10 @@
     }
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -253,15 +232,13 @@
 
   if(uniform_scale){
     // Put the origins and minT back
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray.setOrigin(old_origins[i]);
       e.hitInfo.overrideT(old_minT[i]);
     }
   } else {
     // Put the origins and minT back
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray = old_rays[i];
       e.hitInfo.overrideT(old_minT[i]);
     }
@@ -277,8 +254,7 @@
   if(uniform_scale){
     // Save the original origins and minT
     Real is = inv_scale.x();
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_origins[i] = e.ray.origin();
       e.ray.setOrigin(Point(Vector(old_origins[i]-translation)*is));
       old_minT[i] = e.hitInfo.minT();
@@ -286,8 +262,7 @@
     }
   } else {
     // Save the original rays and minT
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       old_rays[i] = e.ray;
       Vector dir(e.ray.direction()*inv_scale);
       Real ilength = rays.get(i).hitInfo.scratchpad<MPTscale>().scale;
@@ -299,11 +274,10 @@
     }
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords3(context, subPacket);
@@ -312,15 +286,13 @@
 
   if(uniform_scale){
     // Put the origins and minT back
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray.setOrigin(old_origins[i]);
       e.hitInfo.overrideT(old_minT[i]);
     }
   } else {
     // Put the origins and minT back
-    for(int i=0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
+    for(int i=rays.begin();i<rays.end();i++){
       e.ray = old_rays[i];
       e.hitInfo.overrideT(old_minT[i]);
     }

Modified: branches/vertical/Model/Instances/InstanceT.cc
==============================================================================
--- branches/vertical/Model/Instances/InstanceT.cc      (original)
+++ branches/vertical/Model/Instances/InstanceT.cc      Tue Jan  3 14:42:12 
2006
@@ -33,30 +33,24 @@
 void InstanceT::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata;
-  RayPacket instance_rays(raydata, rays.getSize(), rays.getDepth(),
+  RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
 
   if(rays.getFlag(RayPacket::ConstantOrigin)){
-    RayPacket::Element& e = rays.get(0);
-    Point O(e.ray.origin()-translation);
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
+    int ray0 = rays.begin();
+    Point O(rays.getOrigin(ray0)-translation);
+    for(int i = rays.begin();i<rays.end();i++){
       te.ray.set(O, e.ray.direction());
       te.hitInfo.reset(e.hitInfo.minT());
     }
   } else {
-    for(int i = 0;i<rays.getSize();i++){
-      RayPacket::Element& e = rays.get(i);
-      RayPacket::Element& te = instance_rays.get(i);
+    for(int i = rays.begin();i<rays.end();i++){
       te.ray.set(e.ray.origin()-translation, e.ray.direction());
       te.hitInfo.reset(e.hitInfo.minT());
     }
   }
   instance->intersect(context, instance_rays);
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
-    RayPacket::Element& te = instance_rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     if(te.hitInfo.wasHit()){
       // Instance was hit
       if(e.hitInfo.hit(te.hitInfo.minT(), material, this, tex)){
@@ -74,17 +68,15 @@
   Point old_origins[RayPacket::MaxSize];
 
   // Save the original origins
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_origins[i] = e.ray.origin();
     e.ray.setOrigin(old_origins[i]-translation);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Primitive* prim = e.hitInfo.scratchpad<MPT>().primitive;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().primitive == prim)
       end++;
     RayPacket subPacket(rays, i, end);
     prim->computeNormal(context, subPacket);
@@ -92,8 +84,7 @@
   }
 
   // Put the origins back
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray.setOrigin(old_origins[i]);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
@@ -106,11 +97,10 @@
 
 void InstanceT::shade(const RenderContext& context, RayPacket& rays) const
 {
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const Material* matl = e.hitInfo.scratchpad<MPT>().material;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
+    while(end < rays.end() && 
rays.get(end).hitInfo.scratchpad<MPT>().material == matl)
       end++;
     RayPacket subPacket(rays, i, end);
     matl->shade(context, subPacket);
@@ -125,17 +115,15 @@
   Point old_origins[RayPacket::MaxSize];
 
   // Save the original origins
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_origins[i] = e.ray.origin();
     e.ray.setOrigin(old_origins[i]-translation);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords2(context, subPacket);
@@ -143,8 +131,7 @@
   }
 
   // Put the origins back
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray.setOrigin(old_origins[i]);
   }
 }
@@ -155,17 +142,15 @@
   Point old_origins[RayPacket::MaxSize];
 
   // Save the original origins
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     old_origins[i] = e.ray.origin();
     e.ray.setOrigin(old_origins[i]-translation);
   }
   rays.resetFlag(RayPacket::HaveHitPositions);
-  for(int i=0;i<rays.getSize();){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();){
     const TexCoordMapper* tex = e.hitInfo.scratchpad<MPT>().tex;
     int end = i+1;
-    while(end < rays.getSize() && 
rays.get(end).hitInfo.scratchpad<MPT>().tex == tex)
+    while(end < rays.end() && rays.get(end).hitInfo.scratchpad<MPT>().tex == 
tex)
       end++;
     RayPacket subPacket(rays, i, end);
     tex->computeTexCoords3(context, subPacket);
@@ -173,8 +158,7 @@
   }
 
   // Put the origins back
-  for(int i=0;i<rays.getSize();i++){
-    RayPacket::Element& e = rays.get(i);
+  for(int i=rays.begin();i<rays.end();i++){
     e.ray.setOrigin(old_origins[i]);
   }
 }

Modified: branches/vertical/Model/Materials/Phong.cc
==============================================================================
--- branches/vertical/Model/Materials/Phong.cc  (original)
+++ branches/vertical/Model/Materials/Phong.cc  Tue Jan  3 14:42:12 2006
@@ -105,7 +105,7 @@
         Vector normal = rays.getNormal(to);
         Vector shadowdir = shadowRays.getDirection(j);
         ColorComponent cos_theta = Dot(shadowdir, normal);
-        Color light = shadowRays.getResult(j);
+        Color light = shadowRays.getColor(j);
         for(int k = 0; k < Color::NumComponents;k++)
           ambientAndDiffuseLight[k][to] += light[k]*cos_theta;
         Vector dir = rays.getDirection(to);
@@ -127,7 +127,7 @@
     Color result;
     for(int j=0;j<Color::NumComponents;j++)
       result[j] = specularLight[j][i] * specular[i][j] + 
ambientAndDiffuseLight[j][i] * diffuse[i][j];
-    rays.setResult(i, result);
+    rays.setColor(i, result);
   }
 
   // Compute reflections
@@ -148,6 +148,6 @@
     refl_rays.resetHits();
     context.renderer->traceRays(context, refl_rays);
     for(int i=rays.begin();i<rays.end();i++)
-      rays.setResult(i, rays.getColor(i) + refl_rays.getColor(i) * refl[i]);
+      rays.setColor(i, rays.getColor(i) + refl_rays.getColor(i) * refl[i]);
   }
 }

Modified: branches/vertical/Model/MiscObjects/CuttingPlane.cc
==============================================================================
--- branches/vertical/Model/MiscObjects/CuttingPlane.cc (original)
+++ branches/vertical/Model/MiscObjects/CuttingPlane.cc Tue Jan  3 14:42:12 
2006
@@ -30,7 +30,7 @@
 
        // Send a new ray packet with new ray origins.
        RayPacketData new_data;
-       RayPacket     new_rays( new_data, rays.getSize(), rays.getDepth(), 
rays.getAllFlags());
+       RayPacket     new_rays( new_data, rays.begin(), rays.end(), 
rays.getDepth(), rays.getAllFlags());
        
        rays.normalizeDirections();
        rays.computeInverseDirections();
@@ -113,7 +113,7 @@
        
        
/////////////////////////////////////////////////////////////////////////////
        // Map the results back to the old rays.
-       for (new_i=0; new_i<new_rays.getSize(); ++new_i) {
+       for (new_i=rays.begin(); new_i<new_rays.end(); ++new_i) {
        
                RayPacket::Element &n = new_rays.get(new_i);
                

Modified: branches/vertical/Model/MiscObjects/Difference.cc
==============================================================================
--- branches/vertical/Model/MiscObjects/Difference.cc   (original)
+++ branches/vertical/Model/MiscObjects/Difference.cc   Tue Jan  3 14:42:12 
2006
@@ -30,13 +30,13 @@
 void Difference::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata1;
-  RayPacket object1_rays(raydata1, rays.getSize(), rays.getDepth(),
+  RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
   RayPacketData raydata2;
-  RayPacket object2_rays(raydata2, rays.getSize(), rays.getDepth(),
+  RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
 
-  for(int i = 0;i<rays.getSize();i++){
+  for(int i = rays.begin();i<rays.end();i++){
     RayPacket::Element& e = rays.get(i);
     RayPacket::Element& e1 = object1_rays.get(i);
     RayPacket::Element& e2 = object2_rays.get(i);

Modified: branches/vertical/Model/MiscObjects/Intersection.cc
==============================================================================
--- branches/vertical/Model/MiscObjects/Intersection.cc (original)
+++ branches/vertical/Model/MiscObjects/Intersection.cc Tue Jan  3 14:42:12 
2006
@@ -33,13 +33,13 @@
 void Intersection::intersect(const RenderContext& context, RayPacket& rays) 
const
 {
   RayPacketData raydata1;
-  RayPacket object1_rays(raydata1, rays.getSize(), rays.getDepth(),
+  RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
   RayPacketData raydata2;
-  RayPacket object2_rays(raydata2, rays.getSize(), rays.getDepth(),
+  RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
                          rays.getAllFlags());
 
-  for(int i = 0;i<rays.getSize();i++){
+  for(int i = rays.begin();i<rays.end();i++){
     RayPacket::Element& e = rays.get(i);
     RayPacket::Element& e1 = object1_rays.get(i);
     RayPacket::Element& e2 = object2_rays.get(i);
@@ -50,7 +50,7 @@
   }
   object1->intersect(context, object1_rays);
   object2->intersect(context, object2_rays);
-  for(int i=0;i<rays.getSize();i++){
+  for(int i=rays.begin();i<rays.end();i++){
     RayPacket::Element& e = rays.get(i);
     RayPacket::Element& e1 = object1_rays.get(i);
     RayPacket::Element& e2 = object2_rays.get(i);

Modified: branches/vertical/Model/Textures/ImageTexture.h
==============================================================================
--- branches/vertical/Model/Textures/ImageTexture.h     (original)
+++ branches/vertical/Model/Textures/ImageTexture.h     Tue Jan  3 14:42:12 
2006
@@ -114,7 +114,7 @@
     void setInterpolationMethod(int new_method);
 
   private:
-    typedef typename ValueType::ScalarType ScalarType;
+    typedef typename ValueType::ComponentType ScalarType;
 
     inline void BL_edge_behavior(ScalarType val, int behavior, int size,
                                  int& low, int& high,
@@ -234,9 +234,8 @@
     PointT<ScalarType, 2> tex_coords[RayPacket::MaxSize];
 
     // Grab the texture coordinates
-    for( int i = 0; i < rays.getSize(); ++i ) {
-      RayPacket::Element &e = rays.get( i );
-      tex_coords[i] = PointT<ScalarType, 2>(e.texCoords.x(), 
e.texCoords.y());
+    for( int i = rays.begin(); i < rays.end(); ++i ) {
+      tex_coords[i] = rays.getTexCoords2(i);
       tex_coords[i].multiplyBy(scale);
     }
 
@@ -247,7 +246,7 @@
     switch (interpolation_method) {
     case Bilinear:
       {
-        for( int i = 0; i < rays.getSize(); ++i) {
+        for( int i = rays.begin(); i < rays.end(); ++i) {
           ScalarType x = tex_coords[i].x();
           ScalarType y = tex_coords[i].y();
           int x_low, y_low, x_high, y_high;
@@ -268,7 +267,7 @@
       break;
     case NearestNeighbor:
       {
-        for( int i = 0; i < rays.getSize(); ++i) {
+        for( int i = rays.begin(); i < rays.end(); ++i) {
           int tx = NN_edge_behavior(static_cast<int>(tex_coords[i].x()*xres),
                                     u_edge, texture.dim1());
           int ty = NN_edge_behavior(static_cast<int>(tex_coords[i].y()*yres),

Modified: branches/vertical/Model/Textures/MarbleTexture.h
==============================================================================
--- branches/vertical/Model/Textures/MarbleTexture.h    (original)
+++ branches/vertical/Model/Textures/MarbleTexture.h    Tue Jan  3 14:42:12 
2006
@@ -79,11 +79,10 @@
     ValueType results[] ) const
   {
     rays.computeTextureCoordinates3( context );
-    for( int i = 0; i < rays.getSize(); i++ ) {
-      RayPacket::Element &e = rays.get( i );
-      Point T = e.texCoords.multipliedBy(scale * fscale);
+    for( int i = rays.begin(); i < rays.end(); i++ ) {
+      Point T = rays.getTexCoords(i).multipliedBy(scale * fscale);
       ColorComponent value = (Real)0.25 *
-        Cos( e.texCoords.x() * scale + tscale *
+        Cos( rays.getTexCoords(i).x() * scale + tscale *
              (Real)Turbulence( T, octaves, lacunarity, gain ) );
       results[ i ] = SCIRun::Interpolate( value1, value2, value );
     }

Modified: branches/vertical/Model/Textures/OakTexture.h
==============================================================================
--- branches/vertical/Model/Textures/OakTexture.h       (original)
+++ branches/vertical/Model/Textures/OakTexture.h       Tue Jan  3 14:42:12 
2006
@@ -101,12 +101,11 @@
     using SCIRun::Interpolate;
     using SCIRun::SmoothStep;
     rays.computeTextureCoordinates3( context );
-    for( int i = 0; i < rays.getSize(); i++ ) {
-      RayPacket::Element &e = rays.get( i );
-
-      Vector offset = VectorFBM( e.texCoords.multipliedBy(ringnoisefreq), 2, 
4.0, 0.5 );
-      Point Pring = e.texCoords + ringnoise * offset;
-      Vector vsnoise = VectorNoise( Point( 0.5, 0.5, e.texCoords.z() * 
trunkwobblefreq ) );
+    for( int i = rays.begin(); i < rays.end(); i++ ) {
+      Point tc = rays.getTexCoords(i);
+      Vector offset = VectorFBM( tc.multipliedBy(ringnoisefreq), 2, 4.0, 0.5 
);
+      Point Pring = tc + ringnoise * offset;
+      Vector vsnoise = VectorNoise( Point( 0.5, 0.5, tc.z() * 
trunkwobblefreq ) );
       Pring += Vector( trunkwobble * vsnoise.x(), trunkwobble * vsnoise.y(), 
0.0 );
       double r = sqrt( Pring.x() * Pring.x() + Pring.y() * Pring.y() ) * 
ringfreq;
       r += angularwobble * SmoothStep( r, 0, 5 ) * ScalarNoise( Point( 
angularwobble * Pring.x(),
@@ -115,7 +114,7 @@
       r += 0.5 * ScalarNoise( Point( 0.5, 0.5, r ) );
       double rfrac = r - floor( r );
       double inring = SmoothStep( rfrac, 0.1, 0.55 ) - SmoothStep( rfrac, 
0.7, 0.95 );
-      Point Pgrain( e.texCoords.multipliedBy(Vector(grainfreq, grainfreq, 
grainfreq*0.05)));
+      Point Pgrain( tc.multipliedBy(Vector(grainfreq, grainfreq, 
grainfreq*0.05)));
       double grain = 0.0;
       double amp = 1.0;
       for ( int it = 0; it < 2; ++it )

Modified: branches/vertical/Model/Textures/WoodTexture.h
==============================================================================
--- branches/vertical/Model/Textures/WoodTexture.h      (original)
+++ branches/vertical/Model/Textures/WoodTexture.h      Tue Jan  3 14:42:12 
2006
@@ -82,9 +82,8 @@
     ValueType results[] ) const
   {
     rays.computeTextureCoordinates3( context );
-    for( int i = 0; i < rays.getSize(); i++ ) {
-      RayPacket::Element &e = rays.get( i );
-      Point T = e.texCoords.multipliedBy(scale);
+    for( int i = rays.begin(); i < rays.end(); i++ ) {
+      Point T = rays.getTexCoords(i).multipliedBy(scale);
       double distance = sqrt( T.x() * T.x() + T.y() * T.y() ) * rscale;
       double fbm = tscale * ScalarFBM( T, octaves, lacunarity, gain );
       double value = 0.5 * cos( distance + fbm ) + 0.5;




  • [MANTA] r810 - in branches/vertical: Engine/Control Engine/PixelSamplers Engine/Renderers Engine/Shadows Interface Model Model/Backgrounds Model/Groups Model/Instances Model/Materials Model/MiscObjects Model/Textures, sparker, 01/03/2006

Archive powered by MHonArc 2.6.16.

Top of page