--- ray/src/rt/srcdraw.c 2004/03/30 16:13:01 2.11 +++ ray/src/rt/srcdraw.c 2004/09/02 16:02:56 2.13 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: srcdraw.c,v 2.11 2004/03/30 16:13:01 schorsch Exp $"; +static const char RCSid[] = "$Id: srcdraw.c,v 2.13 2004/09/02 16:02:56 greg Exp $"; #endif /* * Draw small sources into image in case we missed them. @@ -299,8 +299,12 @@ sourcepoly( /* compute image polygon for source */ register int i, j; if (s->sflags & (SDISTANT|SFLAT)) { - if (s->sflags & SDISTANT && ourview.type == VT_PAR) - return(0); /* all or nothing case */ + if (s->sflags & SDISTANT) { + if (ourview.type == VT_PAR) + return(0); /* all or nothing case */ + if (s->srad >= 0.05) + return(0); /* should never be a problem */ + } if (s->sflags & SFLAT) { for (i = 0; i < 3; i++) ap[i] = s->sloc[i] - ourview.vp[i]; @@ -451,11 +455,13 @@ drawsources( continue; /* missed/blocked */ /* modify pixel */ if (zbf[y-y0] != NULL && - sr.rt < 0.99*zbf[y-y0][x-x0]) + sr.rt < 0.99*zbf[y-y0][x-x0]) { zbf[y-y0][x-x0] = sr.rt; - else if (!bigdiff(sr.rcol, pic[y-y0][x-x0], - 0.01)) /* source sample */ - setcolor(pic[y-y0][x-x0], 0., 0., 0.); + } else if (!bigdiff(sr.rcol, pic[y-y0][x-x0], + 0.01)) { /* source sample */ + scalecolor(pic[y-y0][x-x0], w); + continue; + } scalecolor(sr.rcol, w); scalecolor(pic[y-y0][x-x0], 1.-w); addcolor(pic[y-y0][x-x0], sr.rcol);