255 |
|
thisray.rdir[2] = -dir[2]; |
256 |
|
thisray.rmax = 0.0; |
257 |
|
rayorigin(&thisray, PRIMARY, NULL, NULL); |
258 |
< |
thisray.rot = 1e-5; /* pretend we hit surface */ |
258 |
> |
/* pretend we hit surface */ |
259 |
> |
thisray.rt = thisray.rot = 1e-5; |
260 |
|
thisray.rod = 1.0; |
261 |
+ |
VCOPY(thisray.ron, dir); |
262 |
|
VSUM(thisray.rop, org, dir, 1e-4); |
263 |
|
samplendx++; /* compute result */ |
264 |
|
(*ofun[Lamb.otype].funp)(&Lamb, &thisray); |
316 |
|
#endif |
317 |
|
while (getvec(orig) == 0 && getvec(direc) == 0) { |
318 |
|
d = normalize(direc); |
319 |
< |
if (nchild != -1 && (d == 0.0) & (accumulate != 1)) { |
319 |
> |
if (nchild != -1 && (d == 0.0) & (accumulate == 0)) { |
320 |
|
if (!ignore_warning_given++) |
321 |
|
error(WARNING, |
322 |
|
"dummy ray(s) ignored during accumulation\n"); |
326 |
|
lastray = lastdone = 0; |
327 |
|
++lastray; |
328 |
|
if (d == 0.0) { /* zero ==> flush */ |
329 |
< |
if ((yres <= 0) | (xres <= 0)) |
330 |
< |
waitflush = 1; /* flush right after */ |
331 |
< |
account = 1; |
329 |
> |
if ((yres <= 0) | (xres <= 1)) |
330 |
> |
waitflush = 1; /* flush after */ |
331 |
> |
if (nchild == -1) |
332 |
> |
account = 1; |
333 |
|
} else if (imm_irrad) { /* else compute */ |
334 |
|
eval_irrad(orig, direc); |
335 |
|
} else { |