Text archives Help
- From: abhinav@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r531 - branches/AFR/Engine/ImageTraversers
- Date: Mon, 5 Sep 2005 12:16:44 -0600 (MDT)
Author: abhinav
Date: Mon Sep 5 12:16:43 2005
New Revision: 531
Modified:
branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
Log:
fixed small bug where grouping ofxhairs into raypackets had broken the streams
Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc Mon Sep 5
12:16:43 2005
@@ -359,13 +359,13 @@
else
// print the total samples done in this chunk in the space reserved for
that before
{
- int samplesDoneThisChunk = samples_done[myID].load() -
last_samples_done[myID];
- last_samples_done[myID] = samples_done[myID].load();
- fpos_t tpos;
- fgetpos(streamfile[myID], &tpos);
- fsetpos(streamfile[myID],&numsamples_pos[myID]);
- fprintf(streamfile[myID],"%d",samplesDoneThisChunk);
- fsetpos(streamfile[myID], &tpos);
+ int samplesDoneThisChunk = samples_done[myID].load() -
last_samples_done[myID];
+ last_samples_done[myID] = samples_done[myID].load();
+ fpos_t tpos;
+ fgetpos(streamfile[myID], &tpos);
+ fsetpos(streamfile[myID],&numsamples_pos[myID]);
+ fprintf(streamfile[myID],"%d",samplesDoneThisChunk);
+ fsetpos(streamfile[myID], &tpos);
}
// reserve space for total samples in this chunk
@@ -465,18 +465,21 @@
}
}
-void AFImageTraverser::renderCrossHair(const RenderContext& context, int
myID,
+int AFImageTraverser::renderCrossHair(const RenderContext& context, int
myID,
Image *image, const int xres, const
int yres, Sample *s, const int sscount, bool endChunk)
{
//cout << "now rendering xhair" << endl;
- newSampleSet[myID][sscount].set(TEMPORAL_SAMPLE, s->viewCoord[0],
s->viewCoord[1], s->t,
- s->worldCoord[0], s->worldCoord[1], s->worldCoord[2],
- s->c[0], s->c[1], s->c[2]);
- newSampleSet[myID][sscount].tileindex =
kdtree[context.proc].getTileforXY(s->viewCoord[0], s->viewCoord[1]);
- //cout << "checking ...sscount = " << sscount << ", blockstart = " <<
xhairBlockStart[myID] << endl;
-
- if(!endChunk && (sscount - xhairBlockStart[myID])<xhairBlockSize) return;
+ if(!endChunk)
+ {
+ newSampleSet[myID][sscount].set(TEMPORAL_SAMPLE, s->viewCoord[0],
s->viewCoord[1], s->t,
+ s->worldCoord[0], s->worldCoord[1], s->worldCoord[2],
+ s->c[0], s->c[1], s->c[2]);
+ newSampleSet[myID][sscount].tileindex =
kdtree[context.proc].getTileforXY(s->viewCoord[0], s->viewCoord[1]);
+ //cout << "checking ...sscount = " << sscount << ", blockstart = " <<
xhairBlockStart[myID] << endl;
+ }
+ if(!endChunk && (sscount - xhairBlockStart[myID])<xhairBlockSize) return 0;
int size = (sscount - xhairBlockStart[myID])*5;
+ if(size==0) return 0;
float t = (float)chunkTimeStamp[context.proc];
int flags = RayPacket::HaveImageCoordinates | RayPacket::ConstantEye;
int depth = 0;
@@ -539,6 +542,7 @@
}
//cout << "done one xhairBlock" << endl;
xhairBlockStart[myID] = sscount;
+ return size/5;
}
@@ -749,7 +753,7 @@
kdtree[myID].setAB(samplingrate);
// render the chunk
renderChunk(context, image, xres, yres);
-
+ int xhairRendered = 0;
if(initpass[myID]) {
@@ -793,24 +797,25 @@
&& sp->viewCoord[1]<yres && sp->viewCoord[1]>=0
&& sp->viewCoord[2]<=1.0)
{
- renderCrossHair(context, myID, image, xres, yres, sp, sscount,
(i==(chunk_size-1)));
+ xhairRendered += renderCrossHair(context, myID, image, xres,
yres, sp, sscount);
sscount++;
}
}
else
{
- renderCrossHair(context, myID, image, xres, yres, sp, sscount,
(i==(chunk_size-1)));
+ xhairRendered += renderCrossHair(context, myID, image, xres, yres,
sp, sscount);
sscount++;
}
}
else break;
}
+ xhairRendered += renderCrossHair(context, myID, image, xres, yres, sp,
sscount-1, true);
// write to file
if(outputStreams)
{
// lock
//streamlock.lock();
- for(i=0; i<sscount; i++)
+ for(i=0; i<xhairRendered; i++)
{
// write each sample one by one
newSampleSet[myID][i].writeToFile(streamfile[myID]);
Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.h Mon Sep 5
12:16:43 2005
@@ -45,7 +45,7 @@
virtual void renderImage(const RenderContext&
context, Image* image) { /*Undefined for AFRPipeline. */ };
void renderChunk(const RenderContext& context, Image*
image, int xres, int yres);
- void renderCrossHair(const RenderContext& context,
int myID, Image *image, const int xres, const int yres, Sample *s, const int
sscount, bool endChunk=false);
+ int renderCrossHair(const RenderContext& context, int
myID, Image *image, const int xres, const int yres, Sample *s, const int
sscount, bool endChunk=false);
// Master thread task.
void masterTask(const RenderContext& context, Image*
image);
- [MANTA] r531 - branches/AFR/Engine/ImageTraversers, abhinav, 09/05/2005
Archive powered by MHonArc 2.6.16.