Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /benchmarks/programs/vr-lite-cam/bmark-teem.c
ViewVC logotype

Diff of /benchmarks/programs/vr-lite-cam/bmark-teem.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1574, Sat Oct 29 14:49:18 2011 UTC revision 1575, Sat Oct 29 16:50:18 2011 UTC
# Line 143  Line 143 
143    Nrrd *nin;    Nrrd *nin;
144    int status;    int status;
145    nin = nrrdNew();    nin = nrrdNew();
146    if(nin == NULL)    if(nin == NULL) {
   {  
147      err = biffGetDone(NRRD);      err = biffGetDone(NRRD);
148      fprintf(stderr, "Trouble allocating nrrd struct:\n%s", err);      fprintf(stderr, "Trouble allocating nrrd struct:\n%s", err);
149      free(err);      free(err);
# Line 153  Line 152 
152    
153    
154    status = nrrdLoad(nin, infile, NULL);    status = nrrdLoad(nin, infile, NULL);
155    if (status)    if (status) {
   {  
156      err = biffGetDone(NRRD);      err = biffGetDone(NRRD);
157      fprintf(stderr, "Trouble reading \"%s\":\n%s", infile, err);      fprintf(stderr, "Trouble reading \"%s\":\n%s", infile, err);
158      free(err);      free(err);
# Line 170  Line 168 
168    double kparm[NRRD_KERNEL_PARMS_NUM];    double kparm[NRRD_KERNEL_PARMS_NUM];
169    
170    ctx = gageContextNew();    ctx = gageContextNew();
171    if(ctx == NULL)    if(ctx == NULL) {
   {  
172      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
173      fprintf(stderr, "Trouble allocating gage context:\n%s", err);      fprintf(stderr, "Trouble allocating gage context:\n%s", err);
174      free(err);      free(err);
# Line 180  Line 177 
177    }    }
178    
179    pvl = gagePerVolumeNew(ctx, nin, gageKindScl);    pvl = gagePerVolumeNew(ctx, nin, gageKindScl);
180    if(pvl == NULL)    if(pvl == NULL) {
   {  
181      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
182      fprintf(stderr, "Trouble allocating gage PerVolume:\n%s", err);      fprintf(stderr, "Trouble allocating gage PerVolume:\n%s", err);
183      free(err);      free(err);
# Line 191  Line 187 
187    }    }
188    
189    status = gagePerVolumeAttach(ctx, pvl);    status = gagePerVolumeAttach(ctx, pvl);
190    if(status)    if(status) {
   {  
191      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
192      fprintf(stderr, "Trouble attaching gage PerVolume:\n%s", err);      fprintf(stderr, "Trouble attaching gage PerVolume:\n%s", err);
193      free(err);      free(err);
# Line 203  Line 198 
198    
199    // It's okay to use kparm unitialized here: gageKernelSet ignores it.    // It's okay to use kparm unitialized here: gageKernelSet ignores it.
200    status = gageKernelSet(ctx, gageKernel00, nrrdKernelBSpline3, kparm);    status = gageKernelSet(ctx, gageKernel00, nrrdKernelBSpline3, kparm);
201    if(status)    if(status) {
   {  
202      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
203      fprintf(stderr, "Trouble setting kernel:\n%s", err);      fprintf(stderr, "Trouble setting kernel:\n%s", err);
204      free(err);      free(err);
# Line 215  Line 209 
209    
210    // It's okay to use kparm unitialized here: gageKernelSet ignores it.    // It's okay to use kparm unitialized here: gageKernelSet ignores it.
211    status = gageKernelSet(ctx, gageKernel11, nrrdKernelBSpline3D, kparm);    status = gageKernelSet(ctx, gageKernel11, nrrdKernelBSpline3D, kparm);
212    if(status)    if(status) {
   {  
213      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
214      fprintf(stderr, "Trouble setting kernel:\n%s", err);      fprintf(stderr, "Trouble setting kernel:\n%s", err);
215      free(err);      free(err);
# Line 226  Line 219 
219    }    }
220    
221    status = gageQueryItemOn(ctx, pvl, gageSclValue);    status = gageQueryItemOn(ctx, pvl, gageSclValue);
222    if(status)    if(status) {
   {  
223      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
224      fprintf(stderr, "Trouble with gageQueryItemOn:\n%s", err);      fprintf(stderr, "Trouble with gageQueryItemOn:\n%s", err);
225      free(err);      free(err);
# Line 237  Line 229 
229    }    }
230    
231    status = gageQueryItemOn(ctx, pvl, gageSclGradVec);    status = gageQueryItemOn(ctx, pvl, gageSclGradVec);
232    if(status)    if(status) {
   {  
233      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
234      fprintf(stderr, "Trouble with gageQueryItemOn:\n%s", err);      fprintf(stderr, "Trouble with gageQueryItemOn:\n%s", err);
235      free(err);      free(err);
# Line 248  Line 239 
239    }    }
240    
241    status = gageUpdate(ctx);    status = gageUpdate(ctx);
242    if(status)    if(status) {
   {  
243      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
244      fprintf(stderr, "Trouble with gageUpdate:\n%s", err);      fprintf(stderr, "Trouble with gageUpdate:\n%s", err);
245      free(err);      free(err);
# Line 259  Line 249 
249    }    }
250    
251    val = gageAnswerPointer(ctx, pvl, gageSclValue);    val = gageAnswerPointer(ctx, pvl, gageSclValue);
252    if(val == NULL)    if(val == NULL) {
   {  
253      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
254      fprintf(stderr, "Trouble getting answer pointer:\n%s", err);      fprintf(stderr, "Trouble getting answer pointer:\n%s", err);
255      free(err);      free(err);
# Line 270  Line 259 
259    }    }
260    
261    grad = gageAnswerPointer(ctx, pvl, gageSclGradVec);    grad = gageAnswerPointer(ctx, pvl, gageSclGradVec);
262    if(grad == NULL)    if(grad == NULL) {
   {  
263      err = biffGetDone(GAGE);      err = biffGetDone(GAGE);
264      fprintf(stderr, "Trouble getting answer pointer:\n%s", err);      fprintf(stderr, "Trouble getting answer pointer:\n%s", err);
265      free(err);      free(err);
# Line 280  Line 268 
268      return -1;      return -1;
269    }    }
270    
   
271    int ui, vi;    int ui, vi;
272    double rayU, rayV, rayN;    double rayU, rayV, rayN;
273    double rayVec[3];    double rayVec[3];
# Line 297  Line 284 
284    double max_gray = 0;    double max_gray = 0;
285    double min_gray = 0;    double min_gray = 0;
286    double *out_data = malloc(sizeof(double) * 4 * imgResU * imgResV);    double *out_data = malloc(sizeof(double) * 4 * imgResU * imgResV);
287    if(out_data == NULL)    if(out_data == NULL) {
   {  
288      fprintf(stderr, "Trouble with malloc.\n");      fprintf(stderr, "Trouble with malloc.\n");
289      gageContextNix(ctx);      gageContextNix(ctx);
290      nrrdNuke(nin);      nrrdNuke(nin);
291      return -1;      return -1;
292    }    }
293    
294    double t0 = GetTime();    double t0 = GetTime(); // start timing
295    for(vi = 0; vi < imgResV; vi++)    for(vi = 0; vi < imgResV; vi++) {
   {  
296      rayV = lerp(-camVmax, camVmax, -0.5, (double)(vi), (double)(imgResV) - 0.5);      rayV = lerp(-camVmax, camVmax, -0.5, (double)(vi), (double)(imgResV) - 0.5);
297      scale_vec3(rayV, camV, temp);      scale_vec3(rayV, camV, temp);
298      for(ui = 0; ui < imgResU; ui++)      for(ui = 0; ui < imgResU; ui++) {
     {  
299        rayU = lerp(-camUmax, camUmax, -0.5, (double)(ui), (double)(imgResU) - 0.5);        rayU = lerp(-camUmax, camUmax, -0.5, (double)(ui), (double)(imgResU) - 0.5);
300        scale_vec3(rayU, camU, temp2);        scale_vec3(rayU, camU, temp2);
301        add3(temp, temp2, temp2);        add3(temp, temp2, temp2);
# Line 325  Line 309 
309        output[1] = 0;        output[1] = 0;
310        output[2] = 0;        output[2] = 0;
311        output[3] = 0;        output[3] = 0;
312        for(rayN = camVspNear; rayN <= camVspFar; rayN += rayStep)        for(rayN = camVspNear; rayN <= camVspFar; rayN += rayStep) {
       {  
313          scale_vec3(rayN, rayDir, temp2);          scale_vec3(rayN, rayDir, temp2);
314          add3(temp2, camEye, rayPos);          add3(temp2, camEye, rayPos);
315          if(inside(rayPos))          if(inside(rayPos)) {
         {  
316            status = gageProbe(ctx, rayPos[0], rayPos[1], rayPos[2]);            status = gageProbe(ctx, rayPos[0], rayPos[1], rayPos[2]);
317            if(status)            if(status) {
           {  
318              err = ctx->errStr;              err = ctx->errStr;
319              fprintf(stderr, "Trouble with gageProbe:\n%s", err);              fprintf(stderr, "Trouble with gageProbe:\n%s", err);
320              free(err);              free(err);
# Line 342  Line 323 
323              nrrdNuke(nin);              nrrdNuke(nin);
324              return -1;              return -1;
325            }            }
326            if(*val > valOpacMin)            if(*val > valOpacMin) {
           {  
327              temp2[0] = *(grad + 0);              temp2[0] = *(grad + 0);
328              temp2[1] = *(grad + 1);              temp2[1] = *(grad + 1);
329              temp2[2] = *(grad + 2);              temp2[2] = *(grad + 2);
# Line 366  Line 346 
346              transp *= 1 - alpha;              transp *= 1 - alpha;
347            }            }
348          }          }
349          if(transp < 0.01)          if(transp < 0.01) {
         {  
350            transp = 0;            transp = 0;
351            break;            break;
352          }          }
# Line 376  Line 355 
355        *(out_data + ui * imgResV * 4 + vi * 4 + 1) = gray;        *(out_data + ui * imgResV * 4 + vi * 4 + 1) = gray;
356        *(out_data + ui * imgResV * 4 + vi * 4 + 2) = gray;        *(out_data + ui * imgResV * 4 + vi * 4 + 2) = gray;
357        *(out_data + ui * imgResV * 4 + vi * 4 + 3) = 1.0f - transp;        *(out_data + ui * imgResV * 4 + vi * 4 + 3) = 1.0f - transp;
358        if(!set)        if(!set) {
       {  
359          max_gray = gray;          max_gray = gray;
360          min_gray = gray;          min_gray = gray;
361          set = true;          set = true;
# Line 388  Line 366 
366    }    }
367    
368    unsigned char *uc_out_data = malloc(sizeof(unsigned char) * imgResU * imgResV);    unsigned char *uc_out_data = malloc(sizeof(unsigned char) * imgResU * imgResV);
369    for(vi = 0; vi < imgResV; vi++)    for(vi = 0; vi < imgResV; vi++) {
370    {      for(ui = 0; ui < imgResU; ui++) {
     for(ui = 0; ui < imgResU; ui++)  
     {  
371        *(uc_out_data + vi * imgResU + ui) = ulerp(min_gray, *(out_data + ui * imgResV * 4 + vi * 4 + 0), max_gray);        *(uc_out_data + vi * imgResU + ui) = ulerp(min_gray, *(out_data + ui * imgResV * 4 + vi * 4 + 0), max_gray);
372      }      }
373    }    }
   double totalTime = GetTime() - t0;  
374    
375      double totalTime = GetTime() - t0;
376    printf("usr=%f\n", totalTime);    printf("usr=%f\n", totalTime);
377    
378    // Write out data    // Write out data
379    Nrrd *nout;    Nrrd *nout;
380    nout = nrrdNew();    nout = nrrdNew();
381    if(nout == NULL)    if(nout == NULL) {
   {  
382      err = biffGetDone(NRRD);      err = biffGetDone(NRRD);
383      fprintf(stderr, "Trouble allocating nrrd struct:\n%s", err);      fprintf(stderr, "Trouble allocating nrrd struct:\n%s", err);
384      free(err);      free(err);
# Line 415  Line 390 
390    }    }
391    
392    status = nrrdWrap_va(nout, uc_out_data, nrrdTypeUChar, 2, imgResU, imgResV);    status = nrrdWrap_va(nout, uc_out_data, nrrdTypeUChar, 2, imgResU, imgResV);
393    if(status)    if(status) {
   {  
394      err = biffGetDone(NRRD);      err = biffGetDone(NRRD);
395      fprintf(stderr, "Trouble wrapping nrrd struct:\n%s", err);      fprintf(stderr, "Trouble wrapping nrrd struct:\n%s", err);
396      free(err);      free(err);
# Line 428  Line 402 
402    }    }
403    
404    status = nrrdSave(outfile, nout, NULL);    status = nrrdSave(outfile, nout, NULL);
405    if(status)    if(status) {
   {  
406      err = biffGetDone(NRRD);      err = biffGetDone(NRRD);
407      fprintf(stderr, "Trouble saving nrrd struct:\n%s", err);      fprintf(stderr, "Trouble saving nrrd struct:\n%s", err);
408      free(err);      free(err);

Legend:
Removed from v.1574  
changed lines
  Added in v.1575

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0