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