| 725 |
|
cp = &direct_discount[3*i]; |
| 726 |
|
copycolor(cdir, cp); |
| 727 |
|
scalecolor(cdir, -wt); |
| 728 |
< |
direct_out = flatindex(dv, nalt, nazi); |
| 728 |
> |
if (b->nout != b->ninc) |
| 729 |
> |
direct_out = flatindex(dv, nalt, nazi); |
| 730 |
> |
else |
| 731 |
> |
direct_out = i; /* assumes dist. mirroring */ |
| 732 |
|
} |
| 733 |
|
for (k = nalt; k--; ) /* loop over distribution */ |
| 734 |
|
for (j = nazi; j--; ) { |
| 747 |
|
} |
| 748 |
|
wt = BSDF_value(b, i, o) * (1./NBSDFSAMPS); |
| 749 |
|
copycolor(col, cinc); |
| 750 |
< |
o = k*nazi + j; |
| 750 |
> |
if (b->nout != b->ninc) |
| 751 |
> |
o = k*nazi + j; |
| 752 |
|
if (o == direct_out) |
| 753 |
|
addcolor(col, cdir); /* minus direct */ |
| 754 |
|
scalecolor(col, wt); |
| 755 |
< |
cp = &distarr[3*o]; |
| 755 |
> |
cp = &distarr[3*(k*nazi + j)]; |
| 756 |
|
addcolor(cp, col); /* sum into distribution */ |
| 757 |
|
} |
| 758 |
|
} |