--- ray/src/util/ranimove2.c 2016/04/18 22:39:13 3.10 +++ ray/src/util/ranimove2.c 2023/11/17 20:02:08 3.12 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: ranimove2.c,v 3.10 2016/04/18 22:39:13 greg Exp $"; +static const char RCSid[] = "$Id: ranimove2.c,v 3.12 2023/11/17 20:02:08 greg Exp $"; #endif /* * ranimove2.c @@ -379,7 +379,7 @@ ray_refine( /* refine the given pixel by tracing a r ) { RAY ir; - COLOR ctmp; + COLOR rcol, ctmp, csqr; int i; if (n < 0) { /* fetching stragglers */ @@ -407,6 +407,7 @@ ray_refine( /* refine the given pixel by tracing a r } else ray_trace(&ir); } + scolor_rgb(rcol, ir.rcol); if (abuffer[n] == ALOWQ && asump != NULL) { if (sbuffer[n] != 1) error(CONSISTENCY, "bad code in ray_refine"); @@ -416,24 +417,22 @@ ray_refine( /* refine the given pixel by tracing a r (colval(ctmp,BLU) > 0.01)) { for (i = 0; i < 3; i++) asump->diffsum[i] += - (colval(ir.rcol,i) - colval(cbuffer[n],i)) + (colval(rcol,i) - colval(cbuffer[n],i)) / colval(ctmp,i); asump->nsamps++; } sbuffer[n] = 0; } - setcolor(ctmp, - colval(ir.rcol,RED)*colval(ir.rcol,RED), - colval(ir.rcol,GRN)*colval(ir.rcol,GRN), - colval(ir.rcol,BLU)*colval(ir.rcol,BLU)); + copycolor(csqr, rcol); + multcolor(csqr, rcol); if (!sbuffer[n]) { /* first sample */ - copycolor(cbuffer[n], ir.rcol); - copycolor(val2map[n], ctmp); + copycolor(cbuffer[n], rcol); + copycolor(val2map[n], csqr); abuffer[n] = AHIGHQ; sbuffer[n] = 1; } else { /* else sum in sample */ - addcolor(cbuffer[n], ir.rcol); - addcolor(val2map[n], ctmp); + addcolor(cbuffer[n], rcol); + addcolor(val2map[n], csqr); sbuffer[n]++; } return(n); @@ -463,7 +462,8 @@ refine_rays( /* compute refinement rays */ i = 0; /* trace rays in list */ for (rdone = 0; rdone < nrays; rdone++) { - if (ndtset && i >= 1000 && cerrmap[pord[i]] <= FTINY) + if (ndtset && (i >= 1000) & (i < ntodo) && + cerrmap[pord[i]] <= FTINY) ntodo = i; if (i >= ntodo) { /* redo conspicuity & priority */ while (ray_refine(-1) >= 0)